packages/sql-fixture/tests/Unit/Platform/MySql/Schema/CreateTableQueryTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Platform\MySql\Schema;
6
7use PDO;
8use PHPUnit\Framework\Attributes\CoversClass;
9use PHPUnit\Framework\TestCase;
10use SqlFixture\Platform\MySql\Schema\CreateTableQuery as Subject;
11
12#[CoversClass(Subject::class)]
13#[\PHPUnit\Framework\Attributes\Medium]
14#[\PHPUnit\Framework\Attributes\UsesClass(\SqlFixture\Platform\MySql\Schema\IdentifierQuoter::class)]
15final class CreateTableQueryTest extends TestCase
16{
17 public function testFetchCreateTableSqlReadsLiveTemporaryTable(): void
18 {
19 $pdo = new PDO(
20 (string) getenv('SQL_FIXTURE_MYSQL_DSN'),
21 (string) getenv('SQL_FIXTURE_MYSQL_USER'),
22 (string) getenv('SQL_FIXTURE_MYSQL_PASSWORD'),
23 [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_EMULATE_PREPARES => false],
24 );
25 $pdo->exec('CREATE TEMPORARY TABLE users (id INT PRIMARY KEY, name VARCHAR(30) NOT NULL)');
26 $sql = (new Subject())->fetchCreateTableSql($pdo, 'users');
27 self::assertStringContainsString('`name` varchar(30) NOT NULL', $sql);
28 self::assertStringContainsString('PRIMARY KEY (`id`)', $sql);
29 }
30}
31