<?php

declare(strict_types=1);

namespace Seka\Portal\Modul\Statistiky\Tests\Unit\Entities\Zaznam\ValueObjects;

use Seka\Portal\Modul\Statistiky\Tests\TestCase;
use Seka\Portal\Modul\Statistiky\Entities\Zaznam\Enums\HodnotenieEmisnejKontrolyEnum;
use Seka\Portal\Modul\Statistiky\Entities\Zaznam\ValueObjects\PocetKontrolPodlaHodnotenia;

/**
 * Class PocetKontrolPodlaHodnoteniaTest
 *
 * @package Seka\Portal\Modul\Statistiky\Tests\Unit\Entities\Zaznam\ValueObjects
 */
class PocetKontrolPodlaHodnoteniaTest extends TestCase
{
    /**
     *
     */
    public function test_create_instance()
    {
        $pocetKontrolPodlaHodnotenia = new PocetKontrolPodlaHodnotenia(HodnotenieEmisnejKontrolyEnum::SPOSOBILE(), 33);

        self::assertInstanceOf(PocetKontrolPodlaHodnotenia::class, $pocetKontrolPodlaHodnotenia);
    }

    /**
     *
     */
    public function test_transformation_to_array()
    {
        $pocetKontrolPodlaHodnotenia = new PocetKontrolPodlaHodnotenia(HodnotenieEmisnejKontrolyEnum::SPOSOBILE(), 33);
        $arrayOutput = $pocetKontrolPodlaHodnotenia->toArray();

        self::assertIsArray($arrayOutput);
        self::assertArrayHasKey('hodnotenie', $arrayOutput);
        self::assertArrayHasKey('pocet', $arrayOutput);
    }

    /**
     *
     */
    public function test_transformation_to_json()
    {
        $pocetKontrolPodlaHodnotenia = new PocetKontrolPodlaHodnotenia(HodnotenieEmisnejKontrolyEnum::SPOSOBILE(), 33);
        $jsonString = $pocetKontrolPodlaHodnotenia->jsonSerialize();

        self::assertJson($jsonString);
        self::assertJsonStringEqualsJsonString('{"hodnotenie":"SPOSOBILE","pocet":33}', $jsonString);
    }
}
