packages/ztd-query-postgres/tests/Unit/Sql/Merge/PgSqlMergeStatementTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Sql\Merge;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\Attributes\UsesClass;
9use PHPUnit\Framework\TestCase;
10use ZtdQuery\Platform\Postgres\Sql\Merge\PgSqlMergeActionKind;
11use ZtdQuery\Platform\Postgres\Sql\Merge\PgSqlMergeClause;
12use ZtdQuery\Platform\Postgres\Sql\Merge\PgSqlMergeMatchKind;
13use ZtdQuery\Platform\Postgres\Sql\Merge\PgSqlMergeStatement;
14
15#[CoversClass(PgSqlMergeStatement::class)]
16#[UsesClass(PgSqlMergeActionKind::class)]
17#[UsesClass(PgSqlMergeClause::class)]
18#[UsesClass(PgSqlMergeMatchKind::class)]
19final class PgSqlMergeStatementTest extends TestCase
20{
21 public function testCarriesTypedStatementData(): void
22 {
23 $clause = new PgSqlMergeClause(
24 PgSqlMergeMatchKind::NotMatched,
25 null,
26 PgSqlMergeActionKind::Insert,
27 [],
28 ['id'],
29 ['source.id'],
30 );
31 $statement = new PgSqlMergeStatement(
32 'users',
33 'public.users',
34 'target',
35 'source AS source',
36 'target.id = source.id',
37 [$clause],
38 );
39
40 self::assertSame('users', $statement->targetTable);
41 self::assertSame('public.users', $statement->targetSql);
42 self::assertSame('target', $statement->targetAlias);
43 self::assertSame('source AS source', $statement->sourceSql);
44 self::assertSame('target.id = source.id', $statement->joinConditionSql);
45 self::assertSame([$clause], $statement->clauses);
46 }
47}
48