packages/sql-formatter/tests/Unit/Core/Layout/RendererTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Core\Layout;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9use SqlFormatter\Core\FormatOptions;
10use SqlFormatter\Core\Layout\Renderer;
11use SqlFormatter\Core\Syntax\Document;
12use SqlParser\Sqlite\SqliteParser;
13
14#[CoversClass(Document::class)]
15#[CoversClass(\SqlFormatter\Core\Syntax\Analyzer::class)]
16#[CoversClass(\SqlFormatter\Core\Syntax\Brackets::class)]
17#[CoversClass(\SqlFormatter\Core\Syntax\Expressions::class)]
18#[CoversClass(\SqlFormatter\Core\Syntax\Headers::class)]
19#[CoversClass(\SqlFormatter\Core\Syntax\Markers::class)]
20#[CoversClass(\SqlFormatter\Core\Syntax\Rules::class)]
21#[CoversClass(Renderer::class)]
22#[CoversClass(\SqlFormatter\Core\Layout\Elements::class)]
23#[CoversClass(\SqlFormatter\Core\Layout\Headers::class)]
24#[CoversClass(\SqlFormatter\Core\Layout\Policy::class)]
25#[CoversClass(\SqlFormatter\Core\Layout\Spacing::class)]
26#[CoversClass(\SqlFormatter\Core\Layout\Writer::class)]
27#[CoversClass(FormatOptions::class)]
28#[CoversClass(\SqlFormatter\Core\Layout\Block::class)]
29#[CoversClass(\SqlFormatter\Core\Syntax\Lists::class)]
30#[\PHPUnit\Framework\Attributes\UsesClass(\SqlFormatter\Core\Formatter::class)]
31#[\PHPUnit\Framework\Attributes\UsesClass(\SqlFormatter\Core\Compact\Settings::class)]
32#[\PHPUnit\Framework\Attributes\UsesClass(\SqlFormatter\Platform\MySql\Dialect::class)]
33#[\PHPUnit\Framework\Attributes\UsesClass(\SqlFormatter\Platform\PostgreSql\Dialect::class)]
34#[\PHPUnit\Framework\Attributes\UsesClass(\SqlFormatter\Platform\Sqlite\Dialect::class)]
35#[\PHPUnit\Framework\Attributes\UsesClass(\SqlFormatter\Facade\DialectFactory::class)]
36final class RendererTest extends TestCase
37{
38    public function testRenderExpandedPreservesSpelling(): void
39    {
40        $document = Document::from((new SqliteParser())->parse('select a,b from t'), (new \SqlFormatter\Platform\Sqlite\Dialect())->syntaxRules());
41        self::assertSame("select\n    a,\n    b\nfrom\n    t", (new Renderer($document, new FormatOptions()))->render());
42    }
43}
44