packages/ztd-query-sqlite/tests/Unit/Rewrite/View/SqliteViewShadowRendererTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Rewrite\View;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\Attributes\UsesClass;
9use PHPUnit\Framework\TestCase;
10use ZtdQuery\Platform\Sqlite\Rewrite\View\SqliteViewShadowRenderer;
11use ZtdQuery\Platform\Sqlite\Sql\Relation\SqliteSelectRelationParser;
12use ZtdQuery\Schema\ViewDefinition;
13use ZtdQuery\Schema\ViewDefinitionSet;
14
15#[CoversClass(SqliteViewShadowRenderer::class)]
16#[UsesClass(\ZtdQuery\Platform\Sqlite\Sql\Relation\RelationSourceParser::class)]
17#[UsesClass(\ZtdQuery\Platform\Sqlite\Sql\SqliteLexerProfile::class)]
18#[UsesClass(SqliteSelectRelationParser::class)]
19final class SqliteViewShadowRendererTest extends TestCase
20{
21    public function testRenderOrdersViewsAndUnqualifiesShadowedSqliteRelations(): void
22    {
23        $views = new ViewDefinitionSet();
24        $views->register('summary', new ViewDefinition('SELECT count(*) FROM main.[active_users]', ['active_users']));
25        $views->register('active_users', new ViewDefinition('SELECT * FROM main.[users]', ['users']));
26
27        self::assertSame(
28            [
29                'active_users' => 'SELECT * FROM [users]',
30                'summary' => 'SELECT count(*) FROM [active_users]',
31            ],
32            (new SqliteViewShadowRenderer())->render($views, ['users']),
33        );
34    }
35}
36