packages/sql-semantics/tests/Unit/Facade/SemanticsTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Facade;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\Attributes\Medium;
9use PHPUnit\Framework\Attributes\UsesClass;
10use PHPUnit\Framework\TestCase;
11use SqlSemantics\Facade\Semantics;
12use SqlSemantics\Platform\Sqlite\Dialect as SqliteDialect;
13
14#[CoversClass(Semantics::class)]
15#[UsesClass(\SqlSemantics\Core\Analysis\Analyzer::class)]
16#[UsesClass(\SqlSemantics\Core\Analysis\ValueReader::class)]
17#[UsesClass(\SqlSemantics\Core\Ast\DialectParser::class)]
18#[UsesClass(\SqlSemantics\Statement\Statement::class)]
19#[UsesClass(\SqlSemantics\Statement\Writer::class)]
20#[UsesClass(\SqlSemantics\Statement\Assertion::class)]
21#[UsesClass(\SqlSemantics\Statement\ImmutableGraph::class)]
22#[Medium]
23final class SemanticsTest extends TestCase
24{
25    public function testAnalyzeAcceptsTheDialectContract(): void
26    {
27        $semantics = new Semantics(SqliteDialect::Sqlite);
28        self::assertSame('DROP TABLE example', $semantics->analyze('DROP TABLE example')->toString());
29    }
30}
31