packages/ztd-query-postgres/tests/Unit/Rewrite/Cte/ShadowDependenciesTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Rewrite\Cte;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9
10#[CoversClass(\ZtdQuery\Platform\Postgres\Rewrite\Cte\ShadowDependencies::class)]
11#[\PHPUnit\Framework\Attributes\UsesClass(\ZtdQuery\Platform\Postgres\Sql\Cte\HeaderParser::class)]
12#[\PHPUnit\Framework\Attributes\UsesClass(\ZtdQuery\Platform\Postgres\Sql\Cte\IdentifierReferences::class)]
13#[\PHPUnit\Framework\Attributes\UsesClass(\ZtdQuery\Platform\Postgres\Sql\PgSqlLexerProfile::class)]
14final class ShadowDependenciesTest extends TestCase
15{
16 public function testRequiredIncludesTransitiveDependenciesAndHonorsDeclaredNames(): void
17 {
18 $dependencies = new \ZtdQuery\Platform\Postgres\Rewrite\Cte\ShadowDependencies();
19 $ctes = ['base' => 'base AS (SELECT 1 AS id)', 'derived' => 'derived AS (SELECT * FROM base)', 'unused' => 'unused AS (SELECT 3)'];
20 self::assertSame(['base' => $ctes['base'], 'derived' => $ctes['derived']], $dependencies->required('SELECT * FROM derived', $ctes));
21 self::assertSame([], $dependencies->required('WITH base AS (SELECT 9) SELECT * FROM base', $ctes));
22 }
23}
24