packages/sql-fixture/tests/Unit/Fixture/Exception/UnknownOverrideColumnExceptionTest.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\UnknownOverrideColumnException::class)]
14#[UsesClass(\SqlFixture\InvalidOverrideException::class)]
15#[UsesClass(ColumnDefinition::class)]
16#[UsesClass(TableSchema::class)]
17#[UsesClass(\SqlFixture\Fixture\Exception\NullOverrideException::class)]
18#[UsesClass(\SqlFixture\Fixture\Exception\GeneratedColumnOverrideException::class)]
19final class UnknownOverrideColumnExceptionTest extends TestCase
20{
21    public function testDescribesUnknownOverrideColumn(): void
22    {
23        $schema = new TableSchema('order', [
24            'id' => new ColumnDefinition('id', 'INT'),
25            'status' => new ColumnDefinition('status', 'VARCHAR'),
26        ]);
27        $exception = new \SqlFixture\Fixture\Exception\UnknownOverrideColumnException('staus', $schema);
28
29
30        $message = $exception->getMessage();
31
32        self::assertSame(
33            'Cannot override order.staus: there is no such column. Its columns are: id, status.',
34            $message
35        );
36        self::assertSame('staus', $exception->column);
37        self::assertSame($schema, $exception->schema);
38    }
39}
40