packages/ztd-query-postgres/tests/Unit/Sql/Merge/PgSqlMergeClauseTest.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;
13
14#[CoversClass(PgSqlMergeClause::class)]
15#[UsesClass(PgSqlMergeActionKind::class)]
16#[UsesClass(PgSqlMergeMatchKind::class)]
17final class PgSqlMergeClauseTest extends TestCase
18{
19    public function testCarriesTypedClauseData(): void
20    {
21        $clause = new PgSqlMergeClause(
22            PgSqlMergeMatchKind::Matched,
23            'source.enabled',
24            PgSqlMergeActionKind::Update,
25            ['name' => 'source.name'],
26        );
27
28        self::assertSame(PgSqlMergeMatchKind::Matched, $clause->matchKind);
29        self::assertSame('source.enabled', $clause->conditionSql);
30        self::assertSame(PgSqlMergeActionKind::Update, $clause->actionKind);
31        self::assertSame(['name' => 'source.name'], $clause->assignments);
32        self::assertSame([], $clause->insertColumns);
33        self::assertSame([], $clause->insertValues);
34    }
35}
36