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