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