<?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\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\ValueObjects\ZoznamPoctuKontrolSObratom;
use Seka\Portal\Modul\Statistiky\Entities\Zaznam\ValueObjects\UdajePreTypZaznamuPouzivatel;
use Seka\Portal\Modul\Statistiky\Entities\Zaznam\ValueObjects\ZoznamPoctuKontrolPodlaDruhu;
use Seka\Portal\Modul\Statistiky\Entities\Zaznam\ValueObjects\ZoznamPoctuKontrolPodlaStavu;
use Seka\Portal\Modul\Statistiky\Entities\Zaznam\ValueObjects\ZoznamPoctuKontrolPodlaHodnotenia;
use Seka\Portal\Modul\Statistiky\Entities\Zaznam\ValueObjects\ZoznamPoctuKontrolPodlaKategorieVozidla;
use Seka\Portal\Modul\Statistiky\Entities\Zaznam\ValueObjects\ZoznamPoctuKontrolPodlaDruhuPalivaAEmisnehoSystemuVozidla;

/**
 * Class UdajePreTypZaznamuPouzivatelTest
 *
 * @package Seka\Portal\Modul\Statistiky\Tests\Unit\Entities\Zaznam\ValueObjects
 */
class UdajePreTypZaznamuPouzivatelTest extends TestCase
{
    /**
     *
     */
    public function testCreateInstance()
    {
        $udaje = new UdajePreTypZaznamuPouzivatel(
            ZoznamPoctuKontrolSObratom::createFromArray([
                [
                    'obrat' => 123.45,
                    'pocet' => 1,
                ],
            ]),
            ZoznamPoctuKontrolPodlaDruhu::createFromArray([
                [
                    'druh' => 'PRAVIDELNA',
                    'pocet' => 3,
                ],
            ]),
            ZoznamPoctuKontrolPodlaStavu::createFromArray([
                [
                    'stav' => 'ARCHIV',
                    'pocet' => 4,
                ]
            ]),
            ZoznamPoctuKontrolPodlaHodnotenia::createFromArray([
                [
                    'hodnotenie' => 'SPOSOBILE',
                    'pocet' => 5,
                ],
            ]),
            ZoznamPoctuKontrolPodlaKategorieVozidla::createFromArray([
                [
                    'kategoria' => 'M1',
                    'pocet' => 7,
                ],
            ]),
            ZoznamPoctuKontrolPodlaDruhuPalivaAEmisnehoSystemuVozidla::createFromArray([[
                'druh_paliva' => DruhPalivaEnum::B()->value,
                'emisny_system' => EmisnySystemEnum::RKAT_OBD()->value,
                'pocet' => 987,
            ]])
        );

        self::assertInstanceOf(Udaje::class, $udaje);
        self::assertInstanceOf(UdajePreTypZaznamuPouzivatel::class, $udaje);
        self::assertInstanceOf(ZoznamPoctuKontrolSObratom::class, $udaje->ZoznamPoctuKontrolSObratom());
        self::assertInstanceOf(ZoznamPoctuKontrolPodlaDruhu::class, $udaje->zoznamPoctuKontrolPodlaDruhu());
        self::assertInstanceOf(ZoznamPoctuKontrolPodlaStavu::class, $udaje->zoznamPoctuKontrolPodlaStavu());
        self::assertInstanceOf(ZoznamPoctuKontrolPodlaHodnotenia::class, $udaje->zoznamPoctuKontrolPodlaHodnotenia());
        self::assertInstanceOf(ZoznamPoctuKontrolPodlaKategorieVozidla::class, $udaje->zoznamPoctuKontrolPodlaKategorieVozidla());
        self::assertInstanceOf(ZoznamPoctuKontrolPodlaDruhuPalivaAEmisnehoSystemuVozidla::class, $udaje->zoznamPoctuKontrolPodlaDruhuPalivaAEmisnehoSystemuVozidla());

        self::assertCount(1, $udaje->ZoznamPoctuKontrolSObratom());
        self::assertCount(1, $udaje->zoznamPoctuKontrolPodlaDruhu());
        self::assertCount(1, $udaje->zoznamPoctuKontrolPodlaStavu());
        self::assertCount(1, $udaje->zoznamPoctuKontrolPodlaHodnotenia());
        self::assertCount(1, $udaje->zoznamPoctuKontrolPodlaKategorieVozidla());
        self::assertCount(1, $udaje->zoznamPoctuKontrolPodlaDruhuPalivaAEmisnehoSystemuVozidla());
    }
}
