packages/ztd-query-core/tests/Unit/Rewrite/SqlTransformerTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Rewrite;
6
7use Override;
8use PHPUnit\Framework\Attributes\CoversNothing;
9use Tests\Contract\TransformerContractTest;
10use Tests\Fake\FakeSqlTransformer;
11use ZtdQuery\Rewrite\SqlTransformer;
12
13#[CoversNothing]
14final class SqlTransformerTest extends TransformerContractTest
15{
16    public function createTransformer(): SqlTransformer
17    {
18        return new FakeSqlTransformer();
19    }
20
21    public function selectSql(): string
22    {
23        return 'SELECT * FROM users WHERE id = 1';
24    }
25
26    public function testTransformViewContextIsRenderedAsCte(): void
27    {
28        $result = $this->createTransformer()->transform(
29            'SELECT * FROM active_users',
30            ['active_users' => ['viewSql' => 'SELECT * FROM users WHERE active = 1']],
31        );
32
33        self::assertSame(
34            'WITH "active_users" AS (SELECT * FROM users WHERE active = 1) SELECT * FROM active_users',
35            $result,
36        );
37    }
38
39    #[Override]
40    public function nativeIntegerType(): string
41    {
42        return 'INTEGER';
43    }
44
45    #[Override]
46    public function nativeStringType(): string
47    {
48        return 'TEXT';
49    }
50}
51