packages/ztd-query-core/tests/Unit/Shadow/Row/TableTransitionTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Shadow\Row;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\Attributes\UsesClass;
9use PHPUnit\Framework\TestCase;
10use ZtdQuery\Shadow\Row\RowChange;
11use ZtdQuery\Shadow\Row\TableTransition;
12
13#[CoversClass(TableTransition::class)]
14#[UsesClass(RowChange::class)]
15final class TableTransitionTest extends TestCase
16{
17 public function testKeepsTheTableAndTheRowsThatMoved(): void
18 {
19 $change = new RowChange(['id' => 1], ['id' => 2]);
20 $transition = new TableTransition('order', [['id' => 3]], [$change]);
21
22 self::assertSame('order', $transition->table);
23 self::assertSame([['id' => 3]], $transition->deleted);
24 self::assertSame([$change], $transition->updated);
25 }
26
27 public function testIsEmptyWhenNothingWasDeletedAndNothingChanged(): void
28 {
29 self::assertTrue((new TableTransition('order', [], []))->isEmpty());
30 }
31
32 public function testIsNotEmptyWhenARowWasDeleted(): void
33 {
34 self::assertFalse((new TableTransition('order', [['id' => 1]], []))->isEmpty());
35 }
36
37 public function testIsNotEmptyWhenARowChanged(): void
38 {
39 $change = new RowChange(['id' => 1], ['id' => 2]);
40
41 self::assertFalse((new TableTransition('order', [], [$change]))->isEmpty());
42 }
43}
44