From 0ea300f4d24f237bb56fc890509bdbd917b5ba02 Mon Sep 17 00:00:00 2001 From: Yisroel Baum Date: Tue, 28 Apr 2026 22:37:28 +0300 Subject: [PATCH] add find by user method for scheduled nodes --- app/ScheduledNode/ScheduledNodeRepository.php | 6 +++++ tests/Fakes/FakeScheduledNodeRepository.php | 23 +++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/app/ScheduledNode/ScheduledNodeRepository.php b/app/ScheduledNode/ScheduledNodeRepository.php index b13b7c5..055a939 100644 --- a/app/ScheduledNode/ScheduledNodeRepository.php +++ b/app/ScheduledNode/ScheduledNodeRepository.php @@ -2,7 +2,13 @@ namespace App\ScheduledNode; +use App\User\User; + interface ScheduledNodeRepository { public function create(CreateScheduledNodeDto $dto): ScheduledNode; + /** + * @return ScheduledNode[] + */ + public function findByUser(User $user): array; } diff --git a/tests/Fakes/FakeScheduledNodeRepository.php b/tests/Fakes/FakeScheduledNodeRepository.php index 8bf5419..293fe72 100644 --- a/tests/Fakes/FakeScheduledNodeRepository.php +++ b/tests/Fakes/FakeScheduledNodeRepository.php @@ -5,6 +5,7 @@ namespace Tests\Fakes; use App\ScheduledNode\CreateScheduledNodeDto; use App\ScheduledNode\ScheduledNode; use App\ScheduledNode\ScheduledNodeRepository; +use App\User\User; class FakeScheduledNodeRepository implements ScheduledNodeRepository { @@ -46,4 +47,26 @@ class FakeScheduledNodeRepository implements ScheduledNodeRepository { return count($this->existingScheduledNodes); } + + public function findByUser(User $user): array + { + $scheduledNodes = array_filter( + $this->existingScheduledNodes, + function (ScheduledNode $node) use ($user) { + return $node->getPlan()->getUser()->getId() === $user->getId(); + } + ); + + return array_map( + function (ScheduledNode $node) { + return new ScheduledNode( + id: $node->getId(), + date: $node->getDate(), + plan: $node->getPlan(), + node: $node->getNode(), + ); + }, + $scheduledNodes, + ); + } }