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