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