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