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