packages/ztd-query-postgres/tests/Unit/Sql/Transaction/KeywordFormTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Sql\Transaction;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9
10#[CoversClass(\ZtdQuery\Platform\Postgres\Sql\Transaction\KeywordForm::class)]
11#[\PHPUnit\Framework\Attributes\UsesClass(\ZtdQuery\Platform\Postgres\Sql\PgSqlLexerProfile::class)]
12final class KeywordFormTest extends TestCase
13{
14 public function testMatchesAny(): void
15 {
16 $sql = 'START TRANSACTION';
17 $stream = \ZtdQuery\Sql\SqlTokenStream::tokenize($sql, \ZtdQuery\Platform\Postgres\Sql\PgSqlLexerProfile::create());
18 $tokens = $stream->significantTokens();
19
20 self::assertSame(true, (new \ZtdQuery\Platform\Postgres\Sql\Transaction\KeywordForm())->matchesAny($tokens, [['BEGIN'], ['START', 'TRANSACTION']]));
21 }
22
23 public function testNameAfter(): void
24 {
25 $sql = 'SAVEPOINT "SaveHere"';
26 $stream = \ZtdQuery\Sql\SqlTokenStream::tokenize($sql, \ZtdQuery\Platform\Postgres\Sql\PgSqlLexerProfile::create());
27 $tokens = $stream->significantTokens();
28
29 self::assertSame('SaveHere', (new \ZtdQuery\Platform\Postgres\Sql\Transaction\KeywordForm())->nameAfter($tokens, [['SAVEPOINT']]));
30 }
31
32 public function testMatches(): void
33 {
34 $sql = 'ROLLBACK WORK';
35 $stream = \ZtdQuery\Sql\SqlTokenStream::tokenize($sql, \ZtdQuery\Platform\Postgres\Sql\PgSqlLexerProfile::create());
36 $tokens = $stream->significantTokens();
37
38 self::assertSame(true, (new \ZtdQuery\Platform\Postgres\Sql\Transaction\KeywordForm())->matches($tokens, ['ROLLBACK', 'WORK']));
39 }
40
41 public function testUnquote(): void
42 {
43 self::assertSame('SaveHere', (new \ZtdQuery\Platform\Postgres\Sql\Transaction\KeywordForm())->unquote('"SaveHere"'));
44 }
45}
46