packages/ztd-query-core/tests/Unit/Config/UnknownSchemaBehaviorTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Config;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9use ZtdQuery\Config\UnknownSchemaBehavior;
10
11#[CoversClass(UnknownSchemaBehavior::class)]
12final class UnknownSchemaBehaviorTest extends TestCase
13{
14    public function testCasesReturnsAllCases(): void
15    {
16        $cases = UnknownSchemaBehavior::cases();
17
18        self::assertCount(4, $cases);
19        self::assertContains(UnknownSchemaBehavior::Passthrough, $cases);
20        self::assertContains(UnknownSchemaBehavior::EmptyResult, $cases);
21        self::assertContains(UnknownSchemaBehavior::Notice, $cases);
22        self::assertContains(UnknownSchemaBehavior::Exception, $cases);
23    }
24
25    public function testCaseHasCorrectValue(): void
26    {
27        self::assertSame('passthrough', UnknownSchemaBehavior::Passthrough->value);
28        self::assertSame('empty', UnknownSchemaBehavior::EmptyResult->value);
29        self::assertSame('notice', UnknownSchemaBehavior::Notice->value);
30        self::assertSame('exception', UnknownSchemaBehavior::Exception->value);
31    }
32
33    public function testFromReturnsCorrectCase(): void
34    {
35        self::assertSame(UnknownSchemaBehavior::Passthrough, UnknownSchemaBehavior::from('passthrough'));
36        self::assertSame(UnknownSchemaBehavior::EmptyResult, UnknownSchemaBehavior::from('empty'));
37        self::assertSame(UnknownSchemaBehavior::Notice, UnknownSchemaBehavior::from('notice'));
38        self::assertSame(UnknownSchemaBehavior::Exception, UnknownSchemaBehavior::from('exception'));
39    }
40
41    public function testTryFromReturnsNullForInvalidValue(): void
42    {
43        $result = UnknownSchemaBehavior::tryFrom('invalid');
44
45        self::assertSame(null, $result);
46    }
47}
48