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