packages/ztd-query-sqlite/tests/Unit/Rewrite/Cte/CteReferencesTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Rewrite\Cte;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\Attributes\UsesClass;
9use PHPUnit\Framework\TestCase;
10use ZtdQuery\Platform\Sqlite\Rewrite\Cte\CteReferences;
11
12#[CoversClass(CteReferences::class)]
13#[UsesClass(\ZtdQuery\Platform\Sqlite\Rewrite\Cte\CteHeaderParser::class)]
14#[UsesClass(\ZtdQuery\Platform\Sqlite\Sql\SqliteLexerProfile::class)]
15final class CteReferencesTest extends TestCase
16{
17 public function testReferencesIdentifierIgnoresCommentsAndStringLiterals(): void
18 {
19 $references = new CteReferences();
20 self::assertTrue($references->referencesIdentifier('SELECT * FROM "Users"', 'users'));
21 self::assertFalse($references->referencesIdentifier("SELECT 'users' /* users */", 'users'));
22 self::assertFalse($references->referencesIdentifier('SELECT * FROM other_users', 'users'));
23 }
24
25 public function testReferencesAnyIdentifierChecksAllCandidates(): void
26 {
27 $references = new CteReferences();
28 self::assertTrue($references->referencesAnyIdentifier('SELECT * FROM users', ['orders', 'users']));
29 self::assertFalse($references->referencesAnyIdentifier('SELECT * FROM users', ['orders']));
30 self::assertFalse($references->referencesAnyIdentifier('SELECT * FROM users', []));
31 }
32
33}
34