packages/sql-catalog/tests/Unit/Core/Sql/DialectsTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Core\Sql;
6
7use PHPUnit\Framework\TestCase;
8
9#[\PHPUnit\Framework\Attributes\CoversClass(\SqlCatalog\Core\Sql\Dialects::class)]
10final class DialectsTest extends TestCase
11{
12    public function testFindSupportsApplicationIdentities(): void
13    {
14        $policy = self::createStub(\SqlCatalog\Core\Sql\Dialect::class);
15        $registry = new \SqlCatalog\Core\Sql\Dialects(['application' => $policy]);
16        self::assertSame($policy, $registry->find('application'));
17        self::assertNull($registry->find('unknown'));
18        self::assertNull($registry->find(null));
19    }
20
21    public function testHasConnectionUsesRegisteredClasses(): void
22    {
23        $registry = new \SqlCatalog\Core\Sql\Dialects(connections: ['App\Connection' => 'application']);
24        self::assertTrue($registry->hasConnection('App\Connection'));
25        self::assertFalse($registry->hasConnection('Unknown'));
26        self::assertFalse($registry->hasConnection(null));
27    }
28
29    public function testConnectionUsesTheConfiguredFallback(): void
30    {
31        $registry = new \SqlCatalog\Core\Sql\Dialects(connections: ['App\Connection' => 'application']);
32        self::assertSame('application', $registry->connection('App\Connection', 'default'));
33        self::assertSame('default', $registry->connection('Unknown', 'default'));
34        self::assertNull($registry->connection(null, null));
35    }
36}
37