packages/ztd-query-postgres/tests/Unit/Rewrite/View/PgSqlViewShadowRendererTest.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\Postgres\Rewrite\View\PgSqlViewShadowRenderer;
11use ZtdQuery\Platform\Postgres\Sql\Relation\PgSqlSelectRelationParser;
12use ZtdQuery\Schema\ViewDefinition;
13use ZtdQuery\Schema\ViewDefinitionSet;
14
15#[CoversClass(PgSqlViewShadowRenderer::class)]
16#[UsesClass(PgSqlSelectRelationParser::class)]
17#[UsesClass(\ZtdQuery\Platform\Postgres\Sql\PgSqlLexerProfile::class)]
18#[UsesClass(\ZtdQuery\Platform\Postgres\Sql\Relation\FromClause::class)]
19#[UsesClass(\ZtdQuery\Platform\Postgres\Sql\Relation\RelationReference::class)]
20final class PgSqlViewShadowRendererTest extends TestCase
21{
22    public function testRenderOrdersViewsAndUnqualifiesShadowedPostgreSqlRelations(): void
23    {
24        $views = new ViewDefinitionSet();
25        $views->register('summary', new ViewDefinition('SELECT count(*) FROM public."active_users"', ['active_users']));
26        $views->register('active_users', new ViewDefinition('SELECT * FROM public."users"', ['users']));
27
28        self::assertSame(
29            [
30                'active_users' => 'SELECT * FROM "users"',
31                'summary' => 'SELECT count(*) FROM "active_users"',
32            ],
33            (new PgSqlViewShadowRenderer())->render($views, ['users']),
34        );
35    }
36}
37