packages/ztd-query-core/tests/Unit/Compatibility/ClassAliasesTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Compatibility;
6
7use PHPUnit\Framework\Attributes\CoversNothing;
8use PHPUnit\Framework\TestCase;
9use ZtdQuery\Schema\CandidateKeySet;
10use ZtdQuery\Schema\ColumnType;
11use ZtdQuery\Schema\ColumnTypeFamily;
12use ZtdQuery\Schema\TableDefinitionRegistry;
13use ZtdQuery\Shadow\Mutation\InsertMutation;
14use ZtdQuery\Shadow\Mutation\Table\DropTableMutation;
15use ZtdQuery\Shadow\ShadowStore;
16use ZtdQuery\Shadow\ShadowTransactionManager;
17
18#[CoversNothing]
19final class ClassAliasesTest extends TestCase
20{
21 public function testLegacyNamesConstructWorkingSchemaAndMutationObjects(): void
22 {
23 $type = new ColumnType(ColumnTypeFamily::INTEGER, 'INTEGER');
24 $store = new ShadowStore();
25 $store->set('users', []);
26 $mutation = new InsertMutation('users', ['id'], candidateKeys: new CandidateKeySet(['PRIMARY' => ['id']]));
27 $mutation->apply($store, [['id' => 1]]);
28
29 self::assertSame([['id' => 1]], $store->get('users'));
30 self::assertSame(ColumnTypeFamily::INTEGER, $type->family);
31 }
32
33 public function testLegacyTransactionNameRollsBackRows(): void
34 {
35 $store = new ShadowStore();
36 $store->set('users', [['id' => 1]]);
37 $transactions = new ShadowTransactionManager($store);
38 $transactions->begin();
39 $store->insert('users', [['id' => 2]]);
40 $transactions->rollBack();
41
42 self::assertSame([['id' => 1]], $store->get('users'));
43 }
44 public function testFormerNameTypeAcceptsTheRelocatedClassBeforeTheFormerNameIsUsed(): void
45 {
46 $mutation = new DropTableMutation('users', new TableDefinitionRegistry(), 'DROP TABLE users');
47 $accept = static fn (\ZtdQuery\Shadow\Mutation\DropTableMutation $received): \ZtdQuery\Shadow\Mutation\DropTableMutation => $received;
48
49 self::assertSame($mutation, $accept($mutation));
50 }
51}
52