packages/ztd-query-postgres/tests/Unit/Sql/Returning/ProjectionItemTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Sql\Returning;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9
10#[CoversClass(\ZtdQuery\Platform\Postgres\Sql\Returning\ProjectionItem::class)]
11#[\PHPUnit\Framework\Attributes\UsesClass(\ZtdQuery\Platform\Postgres\Sql\PgSqlLexerProfile::class)]
12final class ProjectionItemTest extends TestCase
13{
14 public function testParseItem(): void
15 {
16 self::assertSame(['source' => 'id', 'output' => 'user_id'], (new \ZtdQuery\Platform\Postgres\Sql\Returning\ProjectionItem())->parseItem('users.id AS user_id'));
17 }
18
19 public function testAsIndex(): void
20 {
21 $sql = 'id AS user_id';
22 $stream = \ZtdQuery\Sql\SqlTokenStream::tokenize($sql, \ZtdQuery\Platform\Postgres\Sql\PgSqlLexerProfile::create());
23 $tokens = $stream->significantTokens();
24
25 self::assertSame(1, (new \ZtdQuery\Platform\Postgres\Sql\Returning\ProjectionItem())->asIndex($tokens));
26 }
27
28 public function testIsIdentifierPath(): void
29 {
30 $sql = 'users.id';
31 $stream = \ZtdQuery\Sql\SqlTokenStream::tokenize($sql, \ZtdQuery\Platform\Postgres\Sql\PgSqlLexerProfile::create());
32 $tokens = $stream->significantTokens();
33
34 self::assertSame(true, (new \ZtdQuery\Platform\Postgres\Sql\Returning\ProjectionItem())->isIdentifierPath($tokens));
35 }
36
37 public function testIdentifierName(): void
38 {
39 $sql = '"UserId"';
40 $stream = \ZtdQuery\Sql\SqlTokenStream::tokenize($sql, \ZtdQuery\Platform\Postgres\Sql\PgSqlLexerProfile::create());
41 $tokens = $stream->significantTokens();
42
43 self::assertSame('UserId', (new \ZtdQuery\Platform\Postgres\Sql\Returning\ProjectionItem())->identifierName($tokens[0]));
44 }
45}
46