packages/ztd-query-mysql/tests/Unit/Shadow/Mutation/Table/Alter/CreateTableRendererTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Shadow\Mutation\Table\Alter;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9use ZtdQuery\Platform\MySql\Shadow\Mutation\Table\Alter\CreateTableRenderer;
10
11#[CoversClass(CreateTableRenderer::class)]
12final class CreateTableRendererTest extends TestCase
13{
14    public function testBuildCreateTableSql(): void
15    {
16        $definition = new \ZtdQuery\Schema\TableDefinition(['id', 'name'], ['id' => 'INT', 'name' => 'TEXT'], ['id'], ['id'], ['uq_name' => ['name']]);
17        self::assertSame('CREATE TABLE `t` (`id` INT NOT NULL PRIMARY KEY, `name` TEXT, UNIQUE KEY `uq_name` (`name`))', (new CreateTableRenderer('t'))->buildCreateTableSql($definition));
18    }
19
20    public function testBuildCreateTableSqlWithCompositeAndForeignKeys(): void
21    {
22        $foreignKey = new \ZtdQuery\Schema\Key\ForeignKeyDefinition(['id'], 'parent', ['id']);
23        $definition = new \ZtdQuery\Schema\TableDefinition(['id', 'code'], [], ['id', 'code'], [], [], foreignKeys: ['fk' => $foreignKey]);
24        self::assertSame('CREATE TABLE `t` (`id` TEXT, `code` TEXT, PRIMARY KEY (`id`, `code`), CONSTRAINT `fk` FOREIGN KEY (`id`) REFERENCES `parent` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION)', (new CreateTableRenderer('t'))->buildCreateTableSql($definition));
25    }
26
27}
28