packages/ztd-query-sqlite/tests/Unit/Rewrite/Cte/CtePrefixMergerTest.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\CtePrefixMerger;
11
12#[CoversClass(CtePrefixMerger::class)]
13#[UsesClass(\ZtdQuery\Platform\Sqlite\Sql\SqliteLexerProfile::class)]
14final class CtePrefixMergerTest extends TestCase
15{
16 public function testPrependRetainsLeadingCommentsAndRecursiveKeyword(): void
17 {
18 $sql = '/*hint*/ WITH RECURSIVE t AS (SELECT 1) SELECT * FROM t';
19 self::assertSame("/*hint*/ WITH RECURSIVE users AS (SELECT 2),\nt AS (SELECT 1)\nSELECT * FROM t", (new CtePrefixMerger())->prepend($sql, 40, 'users AS (SELECT 2)', 'SELECT * FROM t'));
20 }
21
22 public function testPrependRetainsNonRecursiveHeader(): void
23 {
24 self::assertSame("WITH users AS (SELECT 2),\nt AS (SELECT 1)\nSELECT * FROM t", (new CtePrefixMerger())->prepend('WITH t AS (SELECT 1) SELECT * FROM t', 21, 'users AS (SELECT 2)', 'SELECT * FROM t'));
25 }
26
27}
28