packages/ztd-query-mysql/tests/Unit/Rewrite/Transformer/InsertRowRendererTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Rewrite\Transformer;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9use ZtdQuery\Platform\MySql\Rewrite\Transformer\InsertRowRenderer;
10
11#[CoversClass(InsertRowRenderer::class)]
12final class InsertRowRendererTest extends TestCase
13{
14    public function testRenderParsesMySqlDefaultAndRendersCompleteRow(): void
15    {
16        $renderer = new InsertRowRenderer();
17        $provided = $renderer->providedExpressions(['id', 'name'], ['  default  ', "  'Ada'  "]);
18
19        self::assertSame(['name' => "'Ada'"], $provided);
20        self::assertSame([
21            'id' => '8',
22            'name' => "'Ada'",
23            'status' => "'active'",
24            'note' => 'NULL',
25        ], $renderer->render(
26            ['id', 'name', 'status', 'note'],
27            $provided,
28            ['id' => '99', 'status' => "'active'"],
29            ['id' => 8],
30        ));
31    }
32
33
34
35    public function testProvidedExpressionsPreservesEveryProvidedMySqlExpression(): void
36    {
37        self::assertSame(
38            ['id' => '42', 'name' => "'Ada'"],
39            (new InsertRowRenderer())->providedExpressions(['id', 'name'], ['42', "'Ada'"]),
40        );
41    }
42}
43