<?php

declare(strict_types=1);

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

use Seka\Portal\Modul\Statistiky\Entities\Zaznam\Enums\StavEmisnejKontrolyEnum;
use Seka\Portal\Modul\Statistiky\Entities\Zaznam\ValueObjects\ZoznamPoctuKontrolPodlaStavu;
use Seka\Portal\Modul\Statistiky\Tests\TestCase;
use Seka\Portal\Modul\Statistiky\Entities\Zaznam\ValueObjects\Udaje;
use Seka\Portal\Modul\Statistiky\Entities\Zaznam\Enums\DruhPalivaEnum;
use Seka\Portal\Modul\Statistiky\Entities\Zaznam\Enums\EmisnySystemEnum;
use Seka\Portal\Modul\Statistiky\Entities\Zaznam\Enums\DruhEmisnejKontrolyEnum;
use Seka\Portal\Modul\Statistiky\Entities\Zaznam\Enums\HodnotenieEmisnejKontrolyEnum;
use Seka\Portal\Modul\Statistiky\Entities\Zaznam\ValueObjects\UdajePreTypZaznamuPracovisko;
use Seka\Portal\Modul\Statistiky\Entities\Zaznam\ValueObjects\ZoznamPoctuKontrolPodlaKategorieVozidla;
use Seka\Portal\Modul\Statistiky\Entities\Zaznam\ValueObjects\ZoznamPoctuKontrolPodlaDruhuAHodnotenia;
use Seka\Portal\Modul\Statistiky\Entities\Zaznam\ValueObjects\ZoznamPoctuKontrolAObratuPodlaSubjektuFakturacie;
use Seka\Portal\Modul\Statistiky\Entities\Zaznam\ValueObjects\ZoznamPoctuKontrolPodlaDruhuPalivaAEmisnehoSystemuVozidla;

/**
 * Class UdajePreTypZaznamuPracoviskoTest
 *
 * @package Seka\Portal\Modul\Statistiky\Tests\Unit\Entities\Zaznam\ValueObjects
 */
class UdajePreTypZaznamuPracoviskoTest extends TestCase
{
    /**
     *
     */
    public function testCreateInstance()
    {
        $udaje = new UdajePreTypZaznamuPracovisko(
            ZoznamPoctuKontrolPodlaDruhuAHodnotenia::createFromArray([
                [
                    'druh' => DruhEmisnejKontrolyEnum::PRAVIDELNA()->value,
                    'hodnotenie' => HodnotenieEmisnejKontrolyEnum::SPOSOBILE()->value,
                    'pocet' => 3,
                ],
            ]),
            ZoznamPoctuKontrolPodlaKategorieVozidla::createFromArray([
                [
                    'kategoria' => 'M1',
                    'pocet' => 5,
                ],
            ]),
            ZoznamPoctuKontrolPodlaDruhuPalivaAEmisnehoSystemuVozidla::createFromArray([[
                'druh_paliva' => DruhPalivaEnum::B()->value,
                'emisny_system' => EmisnySystemEnum::RKAT_OBD()->value,
                'pocet' => 987,
            ]]),
            ZoznamPoctuKontrolAObratuPodlaSubjektuFakturacie::createFromArray([
                [
                    'subjekt' => 'M1',
                    'obrat' => 77.89,
                    'pocet' => 7
                ],
            ]),
            ZoznamPoctuKontrolPodlaStavu::createFromArray([
                [
                    'stav' => StavEmisnejKontrolyEnum::ARCHIV()->value,
                    'pocet' => 256,
                ]
            ])
        );

        self::assertInstanceOf(Udaje::class, $udaje);
        self::assertInstanceOf(UdajePreTypZaznamuPracovisko::class, $udaje);
        self::assertInstanceOf(ZoznamPoctuKontrolPodlaDruhuAHodnotenia::class, $udaje->zoznamPoctuKontrolPodlaDruhuAHodnotenia());
        self::assertInstanceOf(ZoznamPoctuKontrolPodlaKategorieVozidla::class, $udaje->zoznamPoctuKontrolPodlaKategorieVozidla());
        self::assertInstanceOf(ZoznamPoctuKontrolAObratuPodlaSubjektuFakturacie::class, $udaje->zoznamPoctuKontrolAObratuPodlaSubjektuFakturacie());
        self::assertInstanceOf(ZoznamPoctuKontrolPodlaDruhuPalivaAEmisnehoSystemuVozidla::class, $udaje->zoznamPoctuKontrolPodlaDruhuPalivaAEmisnehoSystemuVozidla());
    }
}
