packages/ztd-query-core/tests/Unit/Exception/UnknownSchemaExceptionTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Exception;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9use ZtdQuery\Exception\UnknownSchemaException;
10
11#[CoversClass(UnknownSchemaException::class)]
12final class UnknownSchemaExceptionTest extends TestCase
13{
14    public function testGetMessageReturnsFormattedMessageForTable(): void
15    {
16        $exception = new UnknownSchemaException(
17            'SELECT * FROM users',
18            'users',
19            'table'
20        );
21
22        self::assertSame('Unknown table: users', $exception->getMessage());
23    }
24
25    public function testGetMessageReturnsFormattedMessageForColumn(): void
26    {
27        $exception = new UnknownSchemaException(
28            'SELECT email FROM users',
29            'email',
30            'column'
31        );
32
33        self::assertSame('Unknown column: email', $exception->getMessage());
34    }
35
36    public function testGetMessageDefaultsToTable(): void
37    {
38        $exception = new UnknownSchemaException(
39            'SELECT * FROM users',
40            'users'
41        );
42
43        self::assertSame('Unknown table: users', $exception->getMessage());
44    }
45
46    public function testGetSqlReturnsOriginalSql(): void
47    {
48        $sql = 'SELECT * FROM users';
49        $exception = new UnknownSchemaException($sql, 'users');
50
51        self::assertSame($sql, $exception->getSql());
52    }
53
54    public function testGetIdentifierReturnsIdentifier(): void
55    {
56        $exception = new UnknownSchemaException('sql', 'users');
57
58        self::assertSame('users', $exception->getIdentifier());
59    }
60
61    public function testGetIdentifierTypeReturnsIdentifierType(): void
62    {
63        $exception = new UnknownSchemaException('sql', 'email', 'column');
64
65        self::assertSame('column', $exception->getIdentifierType());
66    }
67
68    public function testGetIdentifierTypeDefaultsToTable(): void
69    {
70        $exception = new UnknownSchemaException('sql', 'users');
71
72        self::assertSame('table', $exception->getIdentifierType());
73    }
74
75}
76