refactor element updates

This commit is contained in:
Yisroel Baum 2026-05-28 20:33:14 +03:00
parent 581852ecbc
commit d334745ade
Signed by: yisroelbaum
GPG key ID: 0FA60884F75520A9
19 changed files with 453 additions and 75 deletions

View file

@ -5,7 +5,6 @@ namespace Tests\Fakes;
use App\Element\CreateElementDto;
use App\Element\Element;
use App\Element\ElementRepository;
use App\Element\UpdateElementDto;
use App\Set\Set as DomainSet;
class FakeElementRepository implements ElementRepository
@ -34,20 +33,10 @@ class FakeElementRepository implements ElementRepository
return $element;
}
public function update(Element $element, UpdateElementDto $dto): Element
public function update(Element $element): Element
{
$updatedElement = new Element(
id: $element->getId(),
title: $dto->title,
description: $dto->description,
iconImageUrl: $dto->iconImageUrl,
richText: $dto->richText,
pdfPath: $dto->pdfPath,
youtubeUrl: $dto->youtubeUrl,
set: $element->getSet(),
parentElement: $element->getParentElement(),
);
$this->elementsById[$element->getId()] = $updatedElement;
$updatedElement = $this->cloneElement($element);
$this->elementsById[$updatedElement->getId()] = $updatedElement;
return $this->cloneElement($updatedElement);
}

View file

@ -6,7 +6,13 @@ use App\Controllers\ElementController;
use App\Element\CreateElementDto;
use App\Element\Element;
use App\Element\UseCases\GetElement\GetElement;
use App\Element\UseCases\UpdateElement\UpdateDescription;
use App\Element\UseCases\UpdateElement\UpdateElement;
use App\Element\UseCases\UpdateElement\UpdateIconImageUrl;
use App\Element\UseCases\UpdateElement\UpdatePdfPath;
use App\Element\UseCases\UpdateElement\UpdateRichText;
use App\Element\UseCases\UpdateElement\UpdateTitle;
use App\Element\UseCases\UpdateElement\UpdateYoutubeUrl;
use App\Set\Set as DomainSet;
use Tests\Fakes\FakeElementRepository;
use Tests\TestCase;
@ -21,7 +27,15 @@ class ElementControllerTest extends TestCase
{
$this->elementRepo = new FakeElementRepository();
$getElement = new GetElement($this->elementRepo);
$updateElement = new UpdateElement($this->elementRepo);
$updateElement = new UpdateElement(
new UpdateTitle($this->elementRepo),
new UpdateDescription($this->elementRepo),
new UpdateIconImageUrl($this->elementRepo),
new UpdateRichText($this->elementRepo),
new UpdatePdfPath($this->elementRepo),
new UpdateYoutubeUrl($this->elementRepo),
$this->elementRepo,
);
$this->controller = new ElementController($getElement, $updateElement);
}