packages/sql-formatter/tests/Unit/Core/FormattingExceptionTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Core;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9use RuntimeException;
10use SqlFormatter\Core\FormattingException;
11
12#[CoversClass(FormattingException::class)]
13#[\PHPUnit\Framework\Attributes\UsesClass(\SqlFormatter\Core\Formatter::class)]
14#[\PHPUnit\Framework\Attributes\UsesClass(\SqlFormatter\Core\Compact\Settings::class)]
15#[\PHPUnit\Framework\Attributes\UsesClass(\SqlFormatter\Platform\MySql\Dialect::class)]
16#[\PHPUnit\Framework\Attributes\UsesClass(\SqlFormatter\Platform\PostgreSql\Dialect::class)]
17#[\PHPUnit\Framework\Attributes\UsesClass(\SqlFormatter\Platform\Sqlite\Dialect::class)]
18#[\PHPUnit\Framework\Attributes\UsesClass(\SqlFormatter\Facade\DialectFactory::class)]
19final class FormattingExceptionTest extends TestCase
20{
21    public function testGetPreviousRetainsVerificationCause(): void
22    {
23        $cause = new RuntimeException('Invalid token boundary');
24        $error = new FormattingException('Verification failed', 0, $cause);
25        self::assertSame($cause, $error->getPrevious());
26        self::assertSame('Verification failed', $error->getMessage());
27    }
28}
29