packages/ztd-query-mysql/tests/Unit/Sql/Alter/OptionListTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Sql\Alter;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9use ZtdQuery\Platform\MySql\Sql\Alter\OptionList;
10
11#[CoversClass(OptionList::class)]
12final class OptionListTest extends TestCase
13{
14    public function testHasAnyUsesTheParsersOptionValues(): void
15    {
16        $options = new \PhpMyAdmin\SqlParser\Components\OptionsArray(['ADD', 'COLUMN']);
17        self::assertTrue(OptionList::hasAny($options, ['DROP', 'ADD']));
18        self::assertFalse(OptionList::hasAny($options, ['DROP', 'KEY']));
19        self::assertFalse(OptionList::hasAny($options, []));
20    }
21
22    public function testUnknownKeywordsNormalizesUnparsedTokens(): void
23    {
24        $operation = new \PhpMyAdmin\SqlParser\Components\AlterOperation();
25        $operation->unknown = (new \PhpMyAdmin\SqlParser\Lexer('engine'))->list->tokens;
26        self::assertContains('ENGINE', OptionList::unknownKeywords($operation));
27        $operation->unknown = '';
28        self::assertSame([], OptionList::unknownKeywords($operation));
29    }
30
31}
32