packages/ztd-query-postgres/tests/Unit/Rewrite/Cte/PrefixMergeTest.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\PrefixMerge::class)]
11#[\PHPUnit\Framework\Attributes\UsesClass(\ZtdQuery\Platform\Postgres\Sql\PgSqlLexerProfile::class)]
12final class PrefixMergeTest extends TestCase
13{
14 public function testPrependRewrittenRetainsRecursiveAndLeadingCommentSyntax(): void
15 {
16 $original = '/* lead */ WITH RECURSIVE chain AS (SELECT 1) SELECT * FROM chain';
17 $offset = strpos($original, 'SELECT *');
18 self::assertNotFalse($offset);
19 $merged = (new \ZtdQuery\Platform\Postgres\Rewrite\Cte\PrefixMerge())->prependRewritten($original, $offset, 'shadow AS (SELECT 2)', 'SELECT * FROM shadow');
20 self::assertSame("/* lead */ WITH RECURSIVE shadow AS (SELECT 2),\nchain AS (SELECT 1)\nSELECT * FROM shadow", $merged);
21 }
22}
23