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