packages/ztd-query-core/tests/Unit/Schema/Key/ForeignKeyDefinitionTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Schema\Key;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9use ZtdQuery\Schema\Key\ForeignKeyDefinition;
10use ZtdQuery\Schema\Key\ReferentialAction;
11
12#[CoversClass(ForeignKeyDefinition::class)]
13final class ForeignKeyDefinitionTest extends TestCase
14{
15    public function testCarriesCompositeReferenceAndActions(): void
16    {
17        $definition = new ForeignKeyDefinition(
18            ['tenant_id', 'department_id'],
19            'departments',
20            ['tenant_id', 'id'],
21            ReferentialAction::Cascade,
22            ReferentialAction::SetNull,
23        );
24
25        self::assertSame(['tenant_id', 'department_id'], $definition->columns);
26        self::assertSame('departments', $definition->referencedTable);
27        self::assertSame(['tenant_id', 'id'], $definition->referencedColumns);
28        self::assertSame(ReferentialAction::Cascade, $definition->onDelete);
29        self::assertSame(ReferentialAction::SetNull, $definition->onUpdate);
30    }
31}
32