packages/ztd-query-core/tests/Unit/Exception/SqlParseExceptionTest.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\SqlParseException;
10
11#[CoversClass(SqlParseException::class)]
12final class SqlParseExceptionTest extends TestCase
13{
14    public function testGetMessageReturnsFormattedMessage(): void
15    {
16        $exception = new SqlParseException(
17            'SELECT * FORM users',
18            'Unexpected token "FORM" at position 9'
19        );
20
21        self::assertSame('SQL syntax error: Unexpected token "FORM" at position 9', $exception->getMessage());
22    }
23
24    public function testGetSqlReturnsOriginalSql(): void
25    {
26        $sql = 'SELECT * FORM users';
27        $exception = new SqlParseException($sql, 'error message');
28
29        self::assertSame($sql, $exception->getSql());
30    }
31
32    public function testGetParseErrorReturnsParseError(): void
33    {
34        $parseError = 'Unexpected token "FORM" at position 9';
35        $exception = new SqlParseException('sql', $parseError);
36
37        self::assertSame($parseError, $exception->getParseError());
38    }
39
40}
41