<?php

declare(strict_types=1);

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

use Seka\Portal\Modul\Statistiky\Tests\TestCase;
use Seka\Portal\Modul\Statistiky\Entities\Zaznam\Zaznam;
use Seka\Portal\Modul\Statistiky\Entities\Zaznam\Casts\SubjektCast;
use Seka\Portal\Modul\Statistiky\Entities\Zaznam\ValueObjects\Subjekt;
use Seka\Portal\Modul\Statistiky\Entities\Zaznam\Enums\DruhSubjektuZaznamuEnum;

/**
 * Class SubjektCastTest
 *
 * @package Seka\Portal\Modul\Statistiky\Tests\Unit\Entities\Zaznam\Casts
 */
class SubjektCastTest extends TestCase
{
    /**
     *
     */
    public function testInstance()
    {
        $subjektCast = new SubjektCast('', '');

        self::assertInstanceOf(SubjektCast::class, $subjektCast);
    }

    /**
     *
     */
    public function testGet()
    {
        $subjektCast = new SubjektCast('subjekt_druh', 'subjekt_nazov');

        $subjekt = $subjektCast->get(
            new Zaznam(),
            '',
            '',
            [
                'subjekt_druh' => DruhSubjektuZaznamuEnum::POUZIVATEL()->value,
                'subjekt_nazov' => 'tester',
            ]
        );

        self::assertInstanceOf(Subjekt::class, $subjekt);
    }

    /**
     *
     */
    public function testSet()
    {
        $subjektCast = new SubjektCast('subjekt_druh', 'subjekt_nazov');

        $arr = $subjektCast->set(
            new Zaznam(),
            '',
            new Subjekt(DruhSubjektuZaznamuEnum::POUZIVATEL(), 'tester'),
            []
        );

        self::assertIsArray($arr);
        self::assertArrayHasKey('subjekt_druh', $arr);
        self::assertArrayHasKey('subjekt_nazov', $arr);
    }
}
