packages/ztd-query-postgres/tests/Unit/Connection/Copy/TargetColumnsTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Connection\Copy;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9
10#[CoversClass(\ZtdQuery\Platform\Postgres\Connection\Copy\TargetColumns::class)]
11#[\PHPUnit\Framework\Attributes\UsesClass(\ZtdQuery\Platform\Postgres\Sql\PgSqlLexerProfile::class)]
12final class TargetColumnsTest extends TestCase
13{
14 public function testRelationParts(): void
15 {
16 self::assertSame(['public', 'Users'], (new \ZtdQuery\Platform\Postgres\Connection\Copy\TargetColumns())->relationParts('public."Users"'));
17
18 self::assertSame(['users'], (new \ZtdQuery\Platform\Postgres\Connection\Copy\TargetColumns())->relationParts('users'));
19 }
20
21 public function testColumns(): void
22 {
23 self::assertSame(['id', 'name'], (new \ZtdQuery\Platform\Postgres\Connection\Copy\TargetColumns())->columns(null, new \ZtdQuery\Schema\TableDefinition(['id', 'name'], ['id' => 'INTEGER', 'name' => 'TEXT'], ['id'], [], [])));
24
25 self::assertSame(['name', 'id'], (new \ZtdQuery\Platform\Postgres\Connection\Copy\TargetColumns())->columns('name,id', new \ZtdQuery\Schema\TableDefinition(['id', 'name'], ['id' => 'INTEGER', 'name' => 'TEXT'], ['id'], [], [])));
26 }
27
28 public function testIdentifier(): void
29 {
30 $sql = '"a""b"';
31 $tokens = \ZtdQuery\Sql\SqlTokenStream::tokenize($sql, \ZtdQuery\Platform\Postgres\Sql\PgSqlLexerProfile::create())->significantTokens();
32
33 self::assertSame('a"b', (new \ZtdQuery\Platform\Postgres\Connection\Copy\TargetColumns())->identifier($tokens[0], 'relation'));
34 }
35}
36