packages/ztd-query-postgres/tests/Unit/Rewrite/Partition/StorageTableTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Rewrite\Partition;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9
10#[CoversClass(\ZtdQuery\Platform\Postgres\Rewrite\Partition\StorageTable::class)]
11final class StorageTableTest extends TestCase
12{
13 public function testStorageTableFollowsNestedParentsAndStopsCycles(): void
14 {
15 $registry = new \ZtdQuery\Schema\TableDefinitionRegistry();
16 $base = new \ZtdQuery\Schema\TableDefinition(['id'], ['id' => 'INTEGER'], ['id'], [], []);
17 $registry->register('parent', $base);
18 $registry->register('child', $base->withPartitionRelation(new \ZtdQuery\Schema\Partition\TablePartitionRelation('parent', 'id < 10')));
19 $registry->register('grandchild', $base->withPartitionRelation(new \ZtdQuery\Schema\Partition\TablePartitionRelation('child', 'id < 5')));
20 $resolver = new \ZtdQuery\Platform\Postgres\Rewrite\Partition\StorageTable($registry);
21 self::assertSame('parent', $resolver->storageTable('grandchild'));
22 self::assertSame('unknown', $resolver->storageTable('unknown'));
23 $registry->register('parent', $base->withPartitionRelation(new \ZtdQuery\Schema\Partition\TablePartitionRelation('child', 'id < 20')));
24 self::assertSame('child', $resolver->storageTable('child'));
25 }
26}
27