packages/ztd-query-core/tests/Unit/Platform/SchemaParserTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Platform;
6
7use Override;
8use PHPUnit\Framework\Attributes\CoversNothing;
9use Tests\Contract\SchemaParserContractTest;
10use Tests\Fake\FakeSchemaParser;
11use ZtdQuery\Platform\SchemaParser;
12
13#[CoversNothing]
14final class SchemaParserTest extends SchemaParserContractTest
15{
16 public function createParser(): SchemaParser
17 {
18 return new FakeSchemaParser();
19 }
20
21 public function validCreateTableSql(): string
22 {
23 return 'CREATE TABLE users ('
24 . 'id INTEGER NOT NULL PRIMARY KEY, '
25 . 'name VARCHAR(255) NOT NULL, '
26 . 'email VARCHAR(255) NOT NULL, '
27 . 'age INTEGER, '
28 . 'UNIQUE (email)'
29 . ')';
30 }
31
32 public function nonCreateTableSql(): string
33 {
34 return 'SELECT * FROM users';
35 }
36
37 /**
38 * @return list<string>
39 */
40 #[Override]
41 public function expectedColumns(): array
42 {
43 return ['id', 'name', 'email', 'age'];
44 }
45
46 /**
47 * @return list<string>
48 */
49 #[Override]
50 public function expectedNotNullColumns(): array
51 {
52 return ['id', 'name', 'email'];
53 }
54
55 public function testParseAnswersNothingForAStatementThatCreatesNoTable(): void
56 {
57 self::assertNull($this->createParser()->parse('SELECT 1'));
58 }
59}
60