test set elements
This commit is contained in:
parent
104909bcf5
commit
db35a97910
6 changed files with 409 additions and 0 deletions
68
backend/tests/Fakes/FakeElementRepository.php
Normal file
68
backend/tests/Fakes/FakeElementRepository.php
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
<?php
|
||||
|
||||
namespace Tests\Fakes;
|
||||
|
||||
use App\Element\CreateElementDto;
|
||||
use App\Element\Element;
|
||||
use App\Element\ElementRepository;
|
||||
|
||||
class FakeElementRepository implements ElementRepository
|
||||
{
|
||||
/**
|
||||
* @var Element[]
|
||||
*/
|
||||
private array $elementsById = [];
|
||||
|
||||
public function create(CreateElementDto $dto): Element
|
||||
{
|
||||
$id = count($this->elementsById) + 1;
|
||||
$element = new Element(
|
||||
id: $id,
|
||||
title: $dto->title,
|
||||
set: $dto->set,
|
||||
parentElement: $dto->parentElement,
|
||||
);
|
||||
$this->elementsById[$id] = $element;
|
||||
|
||||
return $element;
|
||||
}
|
||||
|
||||
public function find(int $id): ?Element
|
||||
{
|
||||
if (! isset($this->elementsById[$id])) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $this->cloneElement($this->elementsById[$id]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Element[]
|
||||
*/
|
||||
public function findBySetId(int $id): array
|
||||
{
|
||||
$elements = [];
|
||||
foreach ($this->elementsById as $element) {
|
||||
if ($element->getSet()->getId() === $id) {
|
||||
$elements[] = $this->cloneElement($element);
|
||||
}
|
||||
}
|
||||
|
||||
return $elements;
|
||||
}
|
||||
|
||||
private function cloneElement(Element $element): Element
|
||||
{
|
||||
$parentElement = $element->getParentElement();
|
||||
if ($parentElement !== null) {
|
||||
$parentElement = $this->cloneElement($parentElement);
|
||||
}
|
||||
|
||||
return new Element(
|
||||
id: $element->getId(),
|
||||
title: $element->getTitle(),
|
||||
set: $element->getSet(),
|
||||
parentElement: $parentElement,
|
||||
);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue