packages/sql-fixture/tests/Unit/Fixture/Exception/GeneratedColumnOverrideExceptionTest.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\Schema\ColumnDefinition;
11use SqlFixture\Schema\TableSchema;
12
13#[CoversClass(\SqlFixture\Fixture\Exception\GeneratedColumnOverrideException::class)]
14#[UsesClass(\SqlFixture\InvalidOverrideException::class)]
15#[UsesClass(ColumnDefinition::class)]
16#[UsesClass(TableSchema::class)]
17#[UsesClass(\SqlFixture\Fixture\Exception\UnknownOverrideColumnException::class)]
18#[UsesClass(\SqlFixture\Fixture\Exception\NullOverrideException::class)]
19final class GeneratedColumnOverrideExceptionTest extends TestCase
20{
21 public function testDescribesGeneratedColumnOverride(): void
22 {
23 $schema = new TableSchema('order', ['code' => new ColumnDefinition('code', 'VARCHAR', generated: true)]);
24 $exception = new \SqlFixture\Fixture\Exception\GeneratedColumnOverrideException('code', $schema);
25
26
27 $message = $exception->getMessage();
28
29 self::assertSame(
30 'Cannot override order.code: the database computes it, so a value written here '
31 . 'would be rejected on insert.',
32 $message
33 );
34 self::assertSame('code', $exception->column);
35 self::assertSame($schema, $exception->schema);
36 }
37}
38