packages/ztd-query-mysql/tests/Unit/Connection/MySqlErrorClassifierTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Connection;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9use ZtdQuery\Connection\Exception\DatabaseException;
10use ZtdQuery\Platform\MySql\Connection\MySqlErrorClassifier;
11
12#[CoversClass(MySqlErrorClassifier::class)]
13final class MySqlErrorClassifierTest extends TestCase
14{
15 public function testIsUnknownSchemaErrorUnknownColumnErrorIsClassifiedAsUnknownSchema(): void
16 {
17 $classifier = new MySqlErrorClassifier();
18 $exception = new DatabaseException('Unknown column', 1054);
19 self::assertTrue($classifier->isUnknownSchemaError($exception));
20 }
21
22 public function testTableNotExistsErrorIsClassifiedAsUnknownSchema(): void
23 {
24 $classifier = new MySqlErrorClassifier();
25 $exception = new DatabaseException('Table does not exist', 1146);
26 self::assertTrue($classifier->isUnknownSchemaError($exception));
27 }
28
29 public function testUndeclaredVariableErrorIsClassifiedAsUnknownSchema(): void
30 {
31 $classifier = new MySqlErrorClassifier();
32 $exception = new DatabaseException('Undeclared variable', 1327);
33 self::assertTrue($classifier->isUnknownSchemaError($exception));
34 }
35
36 public function testNonSchemaErrorIsNotClassifiedAsUnknownSchema(): void
37 {
38 $classifier = new MySqlErrorClassifier();
39 $exception = new DatabaseException('Syntax error', 1064);
40 self::assertFalse($classifier->isUnknownSchemaError($exception));
41 }
42
43 public function testNullDriverCodeReturnsFalse(): void
44 {
45 $classifier = new MySqlErrorClassifier();
46 $exception = new DatabaseException('Unknown error', null);
47 self::assertFalse($classifier->isUnknownSchemaError($exception));
48 }
49}
50