packages/sql-fixture/tests/Unit/Fixture/Exception/MissingRelationValueExceptionTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Fixture\Exception;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\Attributes\UsesClass;
9use PHPUnit\Framework\TestCase;
10use SqlFixture\Plan\ColumnRef;
11
12#[CoversClass(\SqlFixture\Fixture\Exception\MissingRelationValueException::class)]
13#[UsesClass(\SqlFixture\Fixture\PlanSchemaException::class)]
14#[UsesClass(ColumnRef::class)]
15#[UsesClass(\SqlFixture\Fixture\Exception\GeneratedColumnReferenceException::class)]
16#[UsesClass(\SqlFixture\Fixture\Exception\UnknownPlanColumnException::class)]
17final class MissingRelationValueExceptionTest extends TestCase
18{
19    public function testDescribesMissingRelationValue(): void
20    {
21        $exception = new \SqlFixture\Fixture\Exception\MissingRelationValueException('order_id', ColumnRef::of('order', 'id'), 'id');
22        $message = $exception->getMessage();
23
24        self::assertSame('Cannot fill order_id: the generated order row has no id to copy from.', $message);
25        self::assertSame('order_id', $exception->childColumn);
26        self::assertEquals(ColumnRef::of('order', 'id'), $exception->parent);
27        self::assertSame('id', $exception->parentColumn);
28    }
29}
30