packages/ztd-query-mysql/tests/Unit/Sql/Cte/IdentifierReferencesTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Sql\Cte;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9use ZtdQuery\Platform\MySql\Sql\Cte\IdentifierReferences;
10
11#[\PHPUnit\Framework\Attributes\UsesClass(\ZtdQuery\Platform\MySql\Sql\MySqlLexerProfile::class)]
12#[\PHPUnit\Framework\Attributes\UsesClass(\ZtdQuery\Platform\MySql\Sql\Cte\HeaderParser::class)]
13#[CoversClass(IdentifierReferences::class)]
14final class IdentifierReferencesTest extends TestCase
15{
16 public function testReferencesIdentifierMatchesWholeNames(): void
17 {
18 $reader = new IdentifierReferences(\ZtdQuery\Platform\MySql\Sql\MySqlLexerProfile::create());
19 self::assertTrue($reader->referencesIdentifier('SELECT * FROM `Users`', 'users'));
20 self::assertFalse($reader->referencesIdentifier("SELECT 'users' FROM users_archive", 'users'));
21 }
22
23 public function testReferencesAnyIdentifierChecksEveryCandidate(): void
24 {
25 $reader = new IdentifierReferences(\ZtdQuery\Platform\MySql\Sql\MySqlLexerProfile::create());
26 self::assertTrue($reader->referencesAnyIdentifier('SELECT * FROM orders', ['users', 'orders']));
27 self::assertFalse($reader->referencesAnyIdentifier('SELECT 1', ['users', 'orders']));
28 self::assertFalse($reader->referencesAnyIdentifier('SELECT * FROM orders', []));
29 }
30
31}
32