packages/ztd-query-core/tests/Unit/Exception/NotNullViolationExceptionTest.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\NotNullViolationException;
10
11#[CoversClass(NotNullViolationException::class)]
12final class NotNullViolationExceptionTest extends TestCase
13{
14 public function testGetMessageReturnsFormattedMessage(): void
15 {
16 $exception = new NotNullViolationException(
17 'INSERT INTO users (name) VALUES (NULL)',
18 'users',
19 'name'
20 );
21
22 self::assertSame("Column 'name' in table 'users' cannot be NULL.", $exception->getMessage());
23 }
24
25 public function testGetSqlReturnsOriginalSql(): void
26 {
27 $sql = 'INSERT INTO users (name) VALUES (NULL)';
28 $exception = new NotNullViolationException($sql, 'users', 'name');
29
30 self::assertSame($sql, $exception->getSql());
31 }
32
33 public function testGetTableNameReturnsTableName(): void
34 {
35 $exception = new NotNullViolationException('sql', 'users', 'name');
36
37 self::assertSame('users', $exception->getTableName());
38 }
39
40 public function testGetColumnNameReturnsColumnName(): void
41 {
42 $exception = new NotNullViolationException('sql', 'users', 'name');
43
44 self::assertSame('name', $exception->getColumnName());
45 }
46
47}
48