test ordered element queries

This commit is contained in:
Yisroel Baum 2026-08-08 22:22:55 +03:00
parent 588a3ecb40
commit 88c8a018ad
Signed by: yisroelbaum
GPG key ID: 0FA60884F75520A9

View file

@ -97,6 +97,65 @@ class EloquentElementRepositoryTest extends TestCase
));
}
public function testItListsOrderedElementsWithinTheirTreeScope(): void
{
$bible = $this->createSet('Bible');
$course = $this->createSet('Course');
$repository = app(ElementRepository::class);
$genesisBook = $repository->create(new CreateElementDto(
set: $bible,
name: 'Genesis',
kind: 'book',
parentElement: null,
));
$exodusBook = $repository->create(new CreateElementDto(
set: $bible,
name: 'Exodus',
kind: 'book',
parentElement: null,
));
$repository->create(new CreateElementDto(
set: $course,
name: 'Module 1',
kind: 'module',
parentElement: null,
));
$repository->create(new CreateElementDto(
set: $bible,
name: 'Genesis',
kind: 'portion',
parentElement: $genesisBook,
));
$repository->create(new CreateElementDto(
set: $bible,
name: 'Noah',
kind: 'portion',
parentElement: $genesisBook,
));
$repository->create(new CreateElementDto(
set: $bible,
name: 'Shemot',
kind: 'portion',
parentElement: $exodusBook,
));
$topLevelElements = $repository->findTopLevelBySet($bible);
$childElements = $repository->findByParentElement($genesisBook);
$this->assertSame(
['Genesis', 'Exodus'],
array_map(function ($element): string {
return $element->getName();
}, $topLevelElements),
);
$this->assertSame(
['Genesis', 'Noah'],
array_map(function ($element): string {
return $element->getName();
}, $childElements),
);
}
private function createSet(string $name): Set
{
$creator = app(UserRepository::class)->create(new CreateUserDto(