From f9c4d72e60bdb04794321f8cb4f6514da77bcb54 Mon Sep 17 00:00:00 2001 From: Yisroel Baum Date: Wed, 27 May 2026 20:36:34 +0300 Subject: [PATCH] test element youtube url --- .../tests/Feature/ElementsEndpointTest.php | 6 +++ backend/tests/Feature/SetsEndpointTest.php | 1 + .../Controllers/ElementControllerTest.php | 9 +++++ backend/tests/Unit/Element/ElementTest.php | 7 ++++ .../Element/UseCases/CreateElementTest.php | 39 +++++++++++++++++++ .../Unit/Element/UseCases/GetElementTest.php | 13 +++++++ 6 files changed, 75 insertions(+) diff --git a/backend/tests/Feature/ElementsEndpointTest.php b/backend/tests/Feature/ElementsEndpointTest.php index a24a6c8..32b9f21 100644 --- a/backend/tests/Feature/ElementsEndpointTest.php +++ b/backend/tests/Feature/ElementsEndpointTest.php @@ -15,6 +15,8 @@ class ElementsEndpointTest extends TestCase public function testReturnsElementTitle(): void { + $sampleYoutubeUrl = 'https://www.youtube.com/watch?v=' + . 'yHx-r4p6hHU&t=1s'; $setRepository = app(SetRepository::class); $elementRepository = app(ElementRepository::class); $set = $setRepository->create(new CreateSetDto( @@ -28,6 +30,7 @@ class ElementsEndpointTest extends TestCase description: 'A structured path for growth', richText: '

A structured path for growth

', pdfPath: '/assets/pdfs/baderech.pdf', + youtubeUrl: $sampleYoutubeUrl, parentElement: null, )); $firstChildElement = $elementRepository->create(new CreateElementDto( @@ -36,6 +39,7 @@ class ElementsEndpointTest extends TestCase description: 'Foundations for steady avodah', richText: '

Foundations rich text

', pdfPath: '/assets/pdfs/foundations.pdf', + youtubeUrl: null, parentElement: $element, )); $secondChildElement = $elementRepository->create(new CreateElementDto( @@ -44,6 +48,7 @@ class ElementsEndpointTest extends TestCase description: 'Daily practices for growth', richText: '

Daily practice rich text

', pdfPath: null, + youtubeUrl: null, parentElement: $element, )); @@ -69,6 +74,7 @@ class ElementsEndpointTest extends TestCase 'description' => 'A structured path for growth', 'richText' => '

A structured path for growth

', 'pdfPath' => '/assets/pdfs/baderech.pdf', + 'youtubeUrl' => $sampleYoutubeUrl, ], ]); } diff --git a/backend/tests/Feature/SetsEndpointTest.php b/backend/tests/Feature/SetsEndpointTest.php index ed0bbca..e5cfdad 100644 --- a/backend/tests/Feature/SetsEndpointTest.php +++ b/backend/tests/Feature/SetsEndpointTest.php @@ -34,6 +34,7 @@ class SetsEndpointTest extends TestCase description: $baderechSet->getDescription(), richText: '', pdfPath: null, + youtubeUrl: null, parentElement: null, ) ); diff --git a/backend/tests/Unit/Controllers/ElementControllerTest.php b/backend/tests/Unit/Controllers/ElementControllerTest.php index d9ffe2f..95ba6f5 100644 --- a/backend/tests/Unit/Controllers/ElementControllerTest.php +++ b/backend/tests/Unit/Controllers/ElementControllerTest.php @@ -32,6 +32,7 @@ class ElementControllerTest extends TestCase 'A structured path for growth', '

A structured path for growth

', '/assets/pdfs/baderech.pdf', + 'https://www.youtube.com/watch?v=yHx-r4p6hHU&t=1s', null, ); $firstChildElement = $this->createElement( @@ -40,6 +41,7 @@ class ElementControllerTest extends TestCase 'Foundations for steady avodah', '

Foundations rich text

', '/assets/pdfs/foundations.pdf', + null, $element, ); $secondChildElement = $this->createElement( @@ -48,6 +50,7 @@ class ElementControllerTest extends TestCase 'Daily practices for growth', '

Daily practice rich text

', null, + null, $element, ); @@ -69,6 +72,10 @@ class ElementControllerTest extends TestCase '/assets/pdfs/baderech.pdf', $body['element']['pdfPath'], ); + $this->assertSame( + 'https://www.youtube.com/watch?v=yHx-r4p6hHU&t=1s', + $body['element']['youtubeUrl'], + ); $this->assertSame([ [ 'id' => $firstChildElement->getId(), @@ -121,6 +128,7 @@ class ElementControllerTest extends TestCase string $description, string $richText, ?string $pdfPath, + ?string $youtubeUrl, ?Element $parentElement, ): Element { return $this->elementRepo->create(new CreateElementDto( @@ -129,6 +137,7 @@ class ElementControllerTest extends TestCase description: $description, richText: $richText, pdfPath: $pdfPath, + youtubeUrl: $youtubeUrl, parentElement: $parentElement, )); } diff --git a/backend/tests/Unit/Element/ElementTest.php b/backend/tests/Unit/Element/ElementTest.php index 7808344..7d0bcf2 100644 --- a/backend/tests/Unit/Element/ElementTest.php +++ b/backend/tests/Unit/Element/ElementTest.php @@ -22,6 +22,7 @@ class ElementTest extends TestCase description: 'Root description', richText: '

Root rich text

', pdfPath: null, + youtubeUrl: null, set: $set, parentElement: null, ); @@ -31,6 +32,7 @@ class ElementTest extends TestCase description: 'Child description', richText: '

Child rich text

', pdfPath: '/assets/pdfs/child.pdf', + youtubeUrl: 'https://www.youtube.com/watch?v=yHx-r4p6hHU&t=1s', set: $set, parentElement: $rootElement, ); @@ -49,9 +51,14 @@ class ElementTest extends TestCase '/assets/pdfs/child.pdf', $childElement->getPdfPath(), ); + $this->assertSame( + 'https://www.youtube.com/watch?v=yHx-r4p6hHU&t=1s', + $childElement->getYoutubeUrl(), + ); $this->assertSame($set, $childElement->getSet()); $this->assertSame($rootElement, $childElement->getParentElement()); $this->assertNull($rootElement->getPdfPath()); + $this->assertNull($rootElement->getYoutubeUrl()); $this->assertNull($rootElement->getParentElement()); } } diff --git a/backend/tests/Unit/Element/UseCases/CreateElementTest.php b/backend/tests/Unit/Element/UseCases/CreateElementTest.php index 2b34873..05e7d66 100644 --- a/backend/tests/Unit/Element/UseCases/CreateElementTest.php +++ b/backend/tests/Unit/Element/UseCases/CreateElementTest.php @@ -50,6 +50,7 @@ class CreateElementTest extends TestCase description: 'Root description', richText: '

Root rich text

', pdfPath: '/assets/pdfs/root.pdf', + youtubeUrl: 'https://www.youtube.com/watch?v=yHx-r4p6hHU&t=1s', parentElementId: null, )); @@ -58,6 +59,10 @@ class CreateElementTest extends TestCase $this->assertSame('Root description', $element->getDescription()); $this->assertSame('

Root rich text

', $element->getRichText()); $this->assertSame('/assets/pdfs/root.pdf', $element->getPdfPath()); + $this->assertSame( + 'https://www.youtube.com/watch?v=yHx-r4p6hHU&t=1s', + $element->getYoutubeUrl(), + ); $this->assertSame($set->getId(), $element->getSet()->getId()); $this->assertNull($element->getParentElement()); } @@ -72,6 +77,7 @@ class CreateElementTest extends TestCase description: 'Root description', richText: '

Root rich text

', pdfPath: null, + youtubeUrl: null, parentElementId: null, ) ); @@ -83,6 +89,7 @@ class CreateElementTest extends TestCase description: 'Child description', richText: '

Child rich text

', pdfPath: '/assets/pdfs/child.pdf', + youtubeUrl: 'https://youtu.be/yHx-r4p6hHU', parentElementId: $rootElement->getId(), ) ); @@ -100,6 +107,10 @@ class CreateElementTest extends TestCase '/assets/pdfs/child.pdf', $childElement->getPdfPath(), ); + $this->assertSame( + 'https://youtu.be/yHx-r4p6hHU', + $childElement->getYoutubeUrl(), + ); $this->assertSame( $rootElement->getId(), $childElement->getParentElement()->getId(), @@ -116,12 +127,14 @@ class CreateElementTest extends TestCase description: null, richText: null, pdfPath: null, + youtubeUrl: null, parentElementId: null, )); $this->assertSame('', $element->getDescription()); $this->assertSame('', $element->getRichText()); $this->assertNull($element->getPdfPath()); + $this->assertNull($element->getYoutubeUrl()); } public function testCreatesElementWithNullPdfPathWhenBlank(): void @@ -134,12 +147,30 @@ class CreateElementTest extends TestCase description: 'Root description', richText: '

Root rich text

', pdfPath: '', + youtubeUrl: null, parentElementId: null, )); $this->assertNull($element->getPdfPath()); } + public function testCreatesElementWithNullYoutubeUrlWhenBlank(): void + { + $set = $this->createSet('Daily learning'); + + $element = $this->createElement->execute(new CreateElementRequest( + setId: $set->getId(), + title: 'Root', + description: 'Root description', + richText: '

Root rich text

', + pdfPath: null, + youtubeUrl: '', + parentElementId: null, + )); + + $this->assertNull($element->getYoutubeUrl()); + } + public function testThrowsWhenSetIdMissing(): void { $this->expectException(BadRequestException::class); @@ -151,6 +182,7 @@ class CreateElementTest extends TestCase description: 'Root description', richText: '

Root rich text

', pdfPath: null, + youtubeUrl: null, parentElementId: null, )); } @@ -166,6 +198,7 @@ class CreateElementTest extends TestCase description: 'Root description', richText: '

Root rich text

', pdfPath: null, + youtubeUrl: null, parentElementId: null, )); } @@ -181,6 +214,7 @@ class CreateElementTest extends TestCase description: 'Root description', richText: '

Root rich text

', pdfPath: null, + youtubeUrl: null, parentElementId: null, )); } @@ -200,6 +234,7 @@ class CreateElementTest extends TestCase description: 'Child description', richText: '

Child rich text

', pdfPath: null, + youtubeUrl: null, parentElementId: 99, )); } @@ -213,6 +248,7 @@ class CreateElementTest extends TestCase description: 'Root description', richText: '

Root rich text

', pdfPath: null, + youtubeUrl: null, parentElementId: null, )); @@ -227,6 +263,7 @@ class CreateElementTest extends TestCase description: 'Another root description', richText: '

Another root rich text

', pdfPath: null, + youtubeUrl: null, parentElementId: null, )); } @@ -242,6 +279,7 @@ class CreateElementTest extends TestCase description: 'Parent root description', richText: '

Parent root rich text

', pdfPath: null, + youtubeUrl: null, parentElementId: null, ) ); @@ -257,6 +295,7 @@ class CreateElementTest extends TestCase description: 'Invalid child description', richText: '

Invalid child rich text

', pdfPath: null, + youtubeUrl: null, parentElementId: $parentElement->getId(), )); } diff --git a/backend/tests/Unit/Element/UseCases/GetElementTest.php b/backend/tests/Unit/Element/UseCases/GetElementTest.php index 2b11d63..f175b62 100644 --- a/backend/tests/Unit/Element/UseCases/GetElementTest.php +++ b/backend/tests/Unit/Element/UseCases/GetElementTest.php @@ -33,6 +33,7 @@ class GetElementTest extends TestCase 'A structured path for growth', '

A structured path for growth

', '/assets/pdfs/baderech.pdf', + 'https://www.youtube.com/watch?v=yHx-r4p6hHU&t=1s', null, ); @@ -56,6 +57,10 @@ class GetElementTest extends TestCase '/assets/pdfs/baderech.pdf', $foundElement->getPdfPath(), ); + $this->assertSame( + 'https://www.youtube.com/watch?v=yHx-r4p6hHU&t=1s', + $foundElement->getYoutubeUrl(), + ); } public function testReturnsDirectChildElements(): void @@ -68,6 +73,7 @@ class GetElementTest extends TestCase '

A structured path for growth

', '/assets/pdfs/baderech.pdf', null, + null, ); $firstChildElement = $this->createElement( $set, @@ -75,6 +81,7 @@ class GetElementTest extends TestCase 'Foundations for steady avodah', '

Foundations rich text

', '/assets/pdfs/foundations.pdf', + null, $parentElement, ); $secondChildElement = $this->createElement( @@ -83,6 +90,7 @@ class GetElementTest extends TestCase 'Daily practices for growth', '

Daily practice rich text

', null, + null, $parentElement, ); $this->createElement( @@ -91,6 +99,7 @@ class GetElementTest extends TestCase 'Nested description', '

Nested rich text

', null, + null, $firstChildElement, ); $otherSet = $this->createSet(2, 'Daily Learning'); @@ -101,6 +110,7 @@ class GetElementTest extends TestCase '

Other parent rich text

', null, null, + null, ); $this->createElement( $otherSet, @@ -108,6 +118,7 @@ class GetElementTest extends TestCase 'Other child description', '

Other child rich text

', null, + null, $otherParentElement, ); @@ -169,6 +180,7 @@ class GetElementTest extends TestCase string $description, string $richText, ?string $pdfPath, + ?string $youtubeUrl, ?Element $parentElement, ): Element { return $this->elementRepo->create(new CreateElementDto( @@ -177,6 +189,7 @@ class GetElementTest extends TestCase description: $description, richText: $richText, pdfPath: $pdfPath, + youtubeUrl: $youtubeUrl, parentElement: $parentElement, )); }