diff --git a/backend/app/Controllers/ElementController.php b/backend/app/Controllers/ElementController.php
index 2e44931..62a6385 100644
--- a/backend/app/Controllers/ElementController.php
+++ b/backend/app/Controllers/ElementController.php
@@ -17,7 +17,7 @@ class ElementController
public function show(?int $id): JsonResponse
{
try {
- $result = $this->getElement->execute(
+ $element = $this->getElement->execute(
new GetElementRequest(id: $id)
);
} catch (BadRequestException $exception) {
@@ -30,17 +30,7 @@ class ElementController
], 404);
}
- $element = $result->getElement();
- $childElements = [];
- foreach ($result->getChildElements() as $childElement) {
- $childElements[] = [
- 'id' => $childElement->getId(),
- 'title' => $childElement->getTitle(),
- ];
- }
-
return new JsonResponse([
- 'childElements' => $childElements,
'element' => [
'id' => $element->getId(),
'title' => $element->getTitle(),
diff --git a/backend/app/Element/ElementRepository.php b/backend/app/Element/ElementRepository.php
index 3e89628..8ed13bd 100644
--- a/backend/app/Element/ElementRepository.php
+++ b/backend/app/Element/ElementRepository.php
@@ -16,9 +16,4 @@ interface ElementRepository
* @return Element[]
*/
public function findBySet(DomainSet $set): array;
-
- /**
- * @return Element[]
- */
- public function findByParentElement(Element $parentElement): array;
}
diff --git a/backend/app/Element/EloquentElementRepository.php b/backend/app/Element/EloquentElementRepository.php
index 350e37a..68452de 100644
--- a/backend/app/Element/EloquentElementRepository.php
+++ b/backend/app/Element/EloquentElementRepository.php
@@ -61,25 +61,6 @@ class EloquentElementRepository implements ElementRepository
return $elements;
}
- /**
- * @return Element[]
- */
- public function findByParentElement(Element $parentElement): array
- {
- $models = ElementModel::where(
- 'parent_element_id',
- $parentElement->getId(),
- )
- ->orderBy('id')
- ->get();
- $elements = [];
- foreach ($models as $model) {
- $elements[] = $this->toDomain($model);
- }
-
- return $elements;
- }
-
private function toDomain(ElementModel $model): Element
{
$set = $this->setRepo->find($model->set_id);
diff --git a/backend/app/Element/UseCases/GetElement/GetElement.php b/backend/app/Element/UseCases/GetElement/GetElement.php
index 7103e47..2dc555e 100644
--- a/backend/app/Element/UseCases/GetElement/GetElement.php
+++ b/backend/app/Element/UseCases/GetElement/GetElement.php
@@ -2,6 +2,7 @@
namespace App\Element\UseCases\GetElement;
+use App\Element\Element;
use App\Element\ElementRepository;
use App\Exceptions\BadRequestException;
use App\Exceptions\NotFoundException;
@@ -16,7 +17,7 @@ class GetElement
* @throws BadRequestException
* @throws NotFoundException
*/
- public function execute(GetElementRequest $request): GetElementResult
+ public function execute(GetElementRequest $request): Element
{
if ($request->id === null) {
throw new BadRequestException('id is required');
@@ -27,10 +28,6 @@ class GetElement
throw new NotFoundException('Element not found');
}
- return new GetElementResult(
- element: $element,
- childElements: $this->elementRepository
- ->findByParentElement($element),
- );
+ return $element;
}
}
diff --git a/backend/app/Element/UseCases/GetElement/GetElementResult.php b/backend/app/Element/UseCases/GetElement/GetElementResult.php
deleted file mode 100644
index ad5f51b..0000000
--- a/backend/app/Element/UseCases/GetElement/GetElementResult.php
+++ /dev/null
@@ -1,30 +0,0 @@
-element;
- }
-
- /**
- * @return Element[]
- */
- public function getChildElements(): array
- {
- return $this->childElements;
- }
-}
diff --git a/backend/database/seeders/ElementSeeder.php b/backend/database/seeders/ElementSeeder.php
index 68ee7b9..974b2fb 100644
--- a/backend/database/seeders/ElementSeeder.php
+++ b/backend/database/seeders/ElementSeeder.php
@@ -14,20 +14,10 @@ class ElementSeeder extends Seeder
$setRepository = app(SetRepository::class);
$elementRepository = app(ElementRepository::class);
$baderechSet = $setRepository->find(1);
- $rootElement = $elementRepository->create(new CreateElementDto(
+ $elementRepository->create(new CreateElementDto(
set: $baderechSet,
title: $baderechSet->getName(),
parentElement: null,
));
- $elementRepository->create(new CreateElementDto(
- set: $baderechSet,
- title: 'Avodah Foundations',
- parentElement: $rootElement,
- ));
- $elementRepository->create(new CreateElementDto(
- set: $baderechSet,
- title: 'Daily Practice',
- parentElement: $rootElement,
- ));
}
}
diff --git a/backend/tests/Fakes/FakeElementRepository.php b/backend/tests/Fakes/FakeElementRepository.php
index b16be7f..cbb4e13 100644
--- a/backend/tests/Fakes/FakeElementRepository.php
+++ b/backend/tests/Fakes/FakeElementRepository.php
@@ -66,25 +66,6 @@ class FakeElementRepository implements ElementRepository
return $elements;
}
- /**
- * @return Element[]
- */
- public function findByParentElement(Element $parentElement): array
- {
- $elements = [];
- foreach ($this->elementsById as $element) {
- $currentParentElement = $element->getParentElement();
- if (
- $currentParentElement !== null
- && $currentParentElement->getId() === $parentElement->getId()
- ) {
- $elements[] = $this->cloneElement($element);
- }
- }
-
- return $elements;
- }
-
private function cloneElement(Element $element): Element
{
$parentElement = $element->getParentElement();
diff --git a/backend/tests/Feature/ElementsEndpointTest.php b/backend/tests/Feature/ElementsEndpointTest.php
index 40834f2..be69aec 100644
--- a/backend/tests/Feature/ElementsEndpointTest.php
+++ b/backend/tests/Feature/ElementsEndpointTest.php
@@ -27,31 +27,11 @@ class ElementsEndpointTest extends TestCase
title: 'Baderech HaAvodah',
parentElement: null,
));
- $firstChildElement = $elementRepository->create(new CreateElementDto(
- set: $set,
- title: 'Avodah Foundations',
- parentElement: $element,
- ));
- $secondChildElement = $elementRepository->create(new CreateElementDto(
- set: $set,
- title: 'Daily Practice',
- parentElement: $element,
- ));
$response = $this->getJson("/api/elements/{$element->getId()}");
$response->assertOk();
$response->assertExactJson([
- 'childElements' => [
- [
- 'id' => $firstChildElement->getId(),
- 'title' => 'Avodah Foundations',
- ],
- [
- 'id' => $secondChildElement->getId(),
- 'title' => 'Daily Practice',
- ],
- ],
'element' => [
'id' => $element->getId(),
'title' => 'Baderech HaAvodah',
diff --git a/backend/tests/Unit/Controllers/ElementControllerTest.php b/backend/tests/Unit/Controllers/ElementControllerTest.php
index 20a18dc..93dddfc 100644
--- a/backend/tests/Unit/Controllers/ElementControllerTest.php
+++ b/backend/tests/Unit/Controllers/ElementControllerTest.php
@@ -25,18 +25,7 @@ class ElementControllerTest extends TestCase
public function testShowReturnsElementPayload(): void
{
- $set = $this->createSet(1, 'Baderech');
- $element = $this->createElement($set, 'Baderech HaAvodah', null);
- $firstChildElement = $this->createElement(
- $set,
- 'Avodah Foundations',
- $element,
- );
- $secondChildElement = $this->createElement(
- $set,
- 'Daily Practice',
- $element,
- );
+ $element = $this->createElement('Baderech HaAvodah');
$response = $this->controller->show($element->getId());
@@ -44,16 +33,6 @@ class ElementControllerTest extends TestCase
$body = json_decode($response->getContent(), true);
$this->assertSame($element->getId(), $body['element']['id']);
$this->assertSame('Baderech HaAvodah', $body['element']['title']);
- $this->assertSame([
- [
- 'id' => $firstChildElement->getId(),
- 'title' => 'Avodah Foundations',
- ],
- [
- 'id' => $secondChildElement->getId(),
- 'title' => 'Daily Practice',
- ],
- ], $body['childElements']);
}
public function testShowReturns400WhenIdMissing(): void
@@ -78,25 +57,19 @@ class ElementControllerTest extends TestCase
);
}
- private function createSet(int $id, string $name): DomainSet
+ private function createElement(string $title): Element
{
- return new DomainSet(
- id: $id,
- name: $name,
- description: "$name description",
+ $set = new DomainSet(
+ id: 1,
+ name: 'Baderech',
+ description: 'Baderech description',
iconImageUrl: '/assets/baderech-icon.png',
);
- }
- private function createElement(
- DomainSet $set,
- string $title,
- ?Element $parentElement,
- ): Element {
return $this->elementRepo->create(new CreateElementDto(
set: $set,
title: $title,
- parentElement: $parentElement,
+ parentElement: null,
));
}
}
diff --git a/backend/tests/Unit/Element/UseCases/GetElementTest.php b/backend/tests/Unit/Element/UseCases/GetElementTest.php
index fc665b0..a301af6 100644
--- a/backend/tests/Unit/Element/UseCases/GetElementTest.php
+++ b/backend/tests/Unit/Element/UseCases/GetElementTest.php
@@ -26,76 +26,17 @@ class GetElementTest extends TestCase
public function testReturnsElementWhenFound(): void
{
- $set = $this->createSet(1, 'Baderech');
- $element = $this->createElement(
- $set,
- 'Baderech HaAvodah',
- null,
- );
+ $element = $this->createElement('Baderech HaAvodah');
- $result = $this->getElement->execute(new GetElementRequest(
+ $foundElement = $this->getElement->execute(new GetElementRequest(
id: $element->getId(),
));
- $foundElement = $result->getElement();
$this->assertInstanceOf(Element::class, $foundElement);
$this->assertSame($element->getId(), $foundElement->getId());
$this->assertSame('Baderech HaAvodah', $foundElement->getTitle());
}
- public function testReturnsDirectChildElements(): void
- {
- $set = $this->createSet(1, 'Baderech');
- $parentElement = $this->createElement(
- $set,
- 'Baderech HaAvodah',
- null,
- );
- $firstChildElement = $this->createElement(
- $set,
- 'Avodah Foundations',
- $parentElement,
- );
- $secondChildElement = $this->createElement(
- $set,
- 'Daily Practice',
- $parentElement,
- );
- $this->createElement(
- $set,
- 'Nested Practice',
- $firstChildElement,
- );
- $otherSet = $this->createSet(2, 'Daily Learning');
- $otherParentElement = $this->createElement(
- $otherSet,
- 'Other Parent',
- null,
- );
- $this->createElement(
- $otherSet,
- 'Other Child',
- $otherParentElement,
- );
-
- $result = $this->getElement->execute(new GetElementRequest(
- id: $parentElement->getId(),
- ));
- $childElements = $result->getChildElements();
-
- $this->assertCount(2, $childElements);
- $this->assertSame(
- $firstChildElement->getId(),
- $childElements[0]->getId(),
- );
- $this->assertSame('Avodah Foundations', $childElements[0]->getTitle());
- $this->assertSame(
- $secondChildElement->getId(),
- $childElements[1]->getId(),
- );
- $this->assertSame('Daily Practice', $childElements[1]->getTitle());
- }
-
public function testThrowsWhenIdMissing(): void
{
$this->expectException(BadRequestException::class);
@@ -112,25 +53,19 @@ class GetElementTest extends TestCase
$this->getElement->execute(new GetElementRequest(id: 999));
}
- private function createSet(int $id, string $name): DomainSet
+ private function createElement(string $title): Element
{
- return new DomainSet(
- id: $id,
- name: $name,
- description: "$name description",
+ $set = new DomainSet(
+ id: 1,
+ name: 'Baderech',
+ description: 'Baderech description',
iconImageUrl: '/assets/baderech-icon.png',
);
- }
- private function createElement(
- DomainSet $set,
- string $title,
- ?Element $parentElement,
- ): Element {
return $this->elementRepo->create(new CreateElementDto(
set: $set,
title: $title,
- parentElement: $parentElement,
+ parentElement: null,
));
}
}
diff --git a/frontend/rabbi_gerzi/cypress/e2e/media.cy.ts b/frontend/rabbi_gerzi/cypress/e2e/media.cy.ts
index a260b94..69fe661 100644
--- a/frontend/rabbi_gerzi/cypress/e2e/media.cy.ts
+++ b/frontend/rabbi_gerzi/cypress/e2e/media.cy.ts
@@ -41,15 +41,5 @@ describe('media page sets', () => {
cy.location('pathname').should('eq', '/element/1')
cy.get('[data-cy="element-page"]').should('be.visible')
cy.contains('h1', 'Baderech HaAvodah').should('be.visible')
- cy.get('[data-cy="child-element-list"]').should('be.visible')
- cy.contains('[data-cy="child-element-link"]', 'Avodah Foundations')
- .should('have.attr', 'href', '/element/2')
- cy.contains('[data-cy="child-element-link"]', 'Daily Practice')
- .should('have.attr', 'href', '/element/3')
-
- cy.contains('[data-cy="child-element-link"]', 'Avodah Foundations')
- .click()
- cy.location('pathname').should('eq', '/element/2')
- cy.contains('h1', 'Avodah Foundations').should('be.visible')
})
})
diff --git a/frontend/rabbi_gerzi/src/stores/elements.ts b/frontend/rabbi_gerzi/src/stores/elements.ts
index 6922157..0624751 100644
--- a/frontend/rabbi_gerzi/src/stores/elements.ts
+++ b/frontend/rabbi_gerzi/src/stores/elements.ts
@@ -8,20 +8,17 @@ export interface Element {
interface ElementResponse {
element: Element
- childElements: Element[]
}
const API_BASE_URL = import.meta.env.VITE_API_BASE_URL as string
export const useElementsStore = defineStore('elements', () => {
const element = ref