packages/ztd-query-mysql/tests/Unit/Rewrite/Validation/ReplaceColumnsTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Rewrite\Validation;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9use ZtdQuery\Platform\MySql\Rewrite\Validation\ReplaceColumns;
10
11#[CoversClass(ReplaceColumns::class)]
12final class ReplaceColumnsTest extends TestCase
13{
14 public function testEnsureReplaceColumns(): void
15 {
16 $statement = (new \PhpMyAdmin\SqlParser\Parser('REPLACE INTO users VALUES (1)'))->statements[0];
17 self::assertInstanceOf(\PhpMyAdmin\SqlParser\Statements\ReplaceStatement::class, $statement);
18 $columns = new ReplaceColumns(new \ZtdQuery\Schema\TableDefinitionRegistry(), new \ZtdQuery\Shadow\ShadowStore());
19 $this->expectException(\ZtdQuery\Exception\UnsupportedSqlException::class);
20 $this->expectExceptionMessage('Cannot determine columns');
21 $columns->ensureReplaceColumns($statement, $statement->build());
22 }
23
24 public function testResolveIntoTableName(): void
25 {
26 $statement = (new \PhpMyAdmin\SqlParser\Parser('REPLACE INTO users (id) VALUES (1)'))->statements[0];
27 self::assertInstanceOf(\PhpMyAdmin\SqlParser\Statements\ReplaceStatement::class, $statement);
28 self::assertSame('users', ReplaceColumns::resolveIntoTableName($statement->into));
29 self::assertNull(ReplaceColumns::resolveIntoTableName(null));
30 }
31
32}
33