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