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