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