packages/ztd-query-postgres/tests/Unit/Sql/Statement/TargetTableParserTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Sql\Statement;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9
10#[CoversClass(\ZtdQuery\Platform\Postgres\Sql\Statement\TargetTableParser::class)]
11#[\PHPUnit\Framework\Attributes\UsesClass(\ZtdQuery\Platform\Postgres\Sql\PgSqlLexerProfile::class)]
12#[\PHPUnit\Framework\Attributes\UsesClass(\ZtdQuery\Platform\Postgres\Sql\PostgreSqlLexicalMasker::class)]
13#[\PHPUnit\Framework\Attributes\UsesClass(\ZtdQuery\Platform\Postgres\Sql\Lexing\CommentSpan::class)]
14#[\PHPUnit\Framework\Attributes\UsesClass(\ZtdQuery\Platform\Postgres\Sql\Lexing\QuotedSpan::class)]
15#[\PHPUnit\Framework\Attributes\UsesClass(\ZtdQuery\Platform\Postgres\Sql\Lexing\IdentifierDecoder::class)]
16final class TargetTableParserTest extends TestCase
17{
18 public function testExtractInsertTableResolvesSchemaQualifiedTarget(): void
19 {
20 $parser = new \ZtdQuery\Platform\Postgres\Sql\Statement\TargetTableParser();
21 self::assertSame('users', $parser->extractInsertTable('INSERT /* lead */ INTO public.users (id) VALUES (1)'));
22 self::assertSame(null, $parser->extractInsertTable('SELECT 1'));
23 }
24
25 public function testExtractUpdateTableResolvesSchemaQualifiedTarget(): void
26 {
27 $parser = new \ZtdQuery\Platform\Postgres\Sql\Statement\TargetTableParser();
28 self::assertSame('users', $parser->extractUpdateTable('UPDATE public.users SET id = 1'));
29 self::assertSame(null, $parser->extractUpdateTable('SELECT 1'));
30 }
31
32 public function testExtractDeleteTableResolvesSchemaQualifiedTarget(): void
33 {
34 $parser = new \ZtdQuery\Platform\Postgres\Sql\Statement\TargetTableParser();
35 self::assertSame('users', $parser->extractDeleteTable('DELETE FROM public.users WHERE id = 1'));
36 self::assertSame(null, $parser->extractDeleteTable('SELECT 1'));
37 }
38}
39