packages/ztd-query-core/tests/Unit/Platform/ValueRendererTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Platform;
6
7use PHPUnit\Framework\Attributes\CoversNothing;
8use PHPUnit\Framework\TestCase;
9use Tests\Fake\FakeValueRenderer;
10use ZtdQuery\Schema\ColumnDeclaration;
11use ZtdQuery\Schema\ColumnTypeFamily;
12
13#[CoversNothing]
14final class ValueRendererTest extends TestCase
15{
16    public function testRenderValueWritesNullAsSqlSpellsIt(): void
17    {
18        self::assertSame('NULL', (new FakeValueRenderer())->renderValue(null));
19    }
20
21    public function testRenderValueWritesTextQuotedAndItsQuotesDoubled(): void
22    {
23        self::assertSame("'a''b'", (new FakeValueRenderer())->renderValue("a'b"));
24    }
25
26    public function testRenderValueWritesANumberWithoutQuotes(): void
27    {
28        self::assertSame('7', (new FakeValueRenderer())->renderValue(7));
29    }
30
31    public function testRenderValueTakesTheColumnTypeIntoAccountWhereOneIsKnown(): void
32    {
33        self::assertSame(
34            "'7'",
35            (new FakeValueRenderer())->renderValue(7, new ColumnDeclaration(ColumnTypeFamily::TEXT, 'text')),
36        );
37    }
38}
39