packages/ztd-query-postgres/tests/Unit/Schema/Definition/TableConstraintTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Schema\Definition;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9
10#[CoversClass(\ZtdQuery\Platform\Postgres\Schema\Definition\TableConstraint::class)]
11final class TableConstraintTest extends TestCase
12{
13    public function testParseConstraint(): void
14    {
15        $primaryKeys = [];
16        $uniqueConstraints = [];
17        $uniqueIndex = 0;
18
19        (new \ZtdQuery\Platform\Postgres\Schema\Definition\TableConstraint())->parseConstraint('PRIMARY KEY (id, name)', $primaryKeys, $uniqueConstraints, $uniqueIndex);
20
21        self::assertSame(['id', 'name'], $primaryKeys);
22
23        self::assertSame([], $uniqueConstraints);
24
25        self::assertSame(0, $uniqueIndex);
26    }
27
28    public function testIsConstraintEntry(): void
29    {
30        self::assertSame(true, (new \ZtdQuery\Platform\Postgres\Schema\Definition\TableConstraint())->isConstraintEntry('CONSTRAINT pk PRIMARY KEY (id)'));
31    }
32
33    public function testParseColumnRefList(): void
34    {
35        self::assertSame(['id', 'Name'], (new \ZtdQuery\Platform\Postgres\Schema\Definition\TableConstraint())->parseColumnRefList('id, "Name"'));
36    }
37
38    public function testUnquoteIdentifier(): void
39    {
40        self::assertSame('Users', (new \ZtdQuery\Platform\Postgres\Schema\Definition\TableConstraint())->unquoteIdentifier('"Users"'));
41    }
42}
43