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