packages/sql-fixture/tests/Unit/Schema/SchemaResolverInterfaceTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Schema;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9use SqlFixture\Schema\ColumnDefinition;
10use SqlFixture\Schema\SchemaResolverInterface as Subject;
11use SqlFixture\Schema\StaticSchemaResolver;
12use SqlFixture\Schema\TableSchema;
13
14#[CoversClass(Subject::class)]
15#[\PHPUnit\Framework\Attributes\UsesClass(ColumnDefinition::class)]
16#[\PHPUnit\Framework\Attributes\UsesClass(\SqlFixture\Schema\SchemaNotFoundException::class)]
17#[\PHPUnit\Framework\Attributes\UsesClass(StaticSchemaResolver::class)]
18#[\PHPUnit\Framework\Attributes\UsesClass(\SqlFixture\Schema\TableIdentifier::class)]
19#[\PHPUnit\Framework\Attributes\UsesClass(TableSchema::class)]
20final class SchemaResolverInterfaceTest extends TestCase
21{
22    public function testResolveReturnsTheRegisteredSchema(): void
23    {
24        $schema = new TableSchema('users', ['id' => new ColumnDefinition('id', 'INT')]);
25        $resolver = new StaticSchemaResolver([$schema]);
26        self::assertSame($schema, $resolver->resolve('users'));
27    }
28
29    public function testHasReportsAvailabilityBeforeResolution(): void
30    {
31        $resolver = new StaticSchemaResolver([new TableSchema('users', [])]);
32        self::assertTrue($resolver->has('users'));
33        self::assertFalse($resolver->has('missing'));
34    }
35}
36