packages/ztd-query-mysql/tests/Unit/Sql/Relation/ExpressionNamesTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Sql\Relation;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9use ZtdQuery\Platform\MySql\Sql\Relation\ExpressionNames;
10
11#[CoversClass(ExpressionNames::class)]
12final class ExpressionNamesTest extends TestCase
13{
14    public function testTablePrefersParsedNamesAndFallsBackToExpressions(): void
15    {
16        $expression = new \PhpMyAdmin\SqlParser\Components\Expression();
17        $expression->table = 'users';
18        $expression->expr = 'app.users';
19        self::assertSame('users', ExpressionNames::table($expression));
20        $expression->table = '';
21        self::assertSame('app.users', ExpressionNames::table($expression));
22    }
23
24    public function testAliasPrefersExplicitAliases(): void
25    {
26        $expression = new \PhpMyAdmin\SqlParser\Components\Expression();
27        $expression->table = 'users';
28        $expression->alias = 'u';
29        self::assertSame('u', ExpressionNames::alias($expression));
30        $expression->alias = '';
31        self::assertSame('users', ExpressionNames::alias($expression));
32    }
33
34}
35