setUpHasPlanner(); } public function test_find_interfering_dishes(): void { $planner = $this->planner; $user = User::factory()->planner($planner)->create(); $dishRecurring = Dish::factory()->planner($planner)->create(); $minimumRecurrence = MinimumRecurrence::factory()->days(5)->create(); UserDish::factory()->user($user)->dish(Dish::factory()->planner($planner)->create())->create(); $userDishRecurring = UserDish::factory()->user($user)->dish($dishRecurring)->create(); UserDishRecurrence::factory() ->userDish($userDishRecurring) ->recurrence($minimumRecurrence) ->create(); $date = now()->startOfDay()->addDays(2); $schedule = Schedule::factory()->planner($planner)->date($date->copy()->addDays(2))->create(); ScheduledUserDish::factory()->userDish($userDishRecurring)->schedule($schedule)->create(); $this->actingAs($planner); /** UserDishRepository $userDishRepository */ $userDishRepository = resolve(UserDishRepository::class); $userDishes = $userDishRepository->findInterferingUserDishes($user, $date); $this->assertCount(1, $userDishes); $this->assertEquals($userDishRecurring->id, $userDishes->first()->id); } public function test_find_candidates_for_date(): void { $planner = $this->planner; $user = User::factory()->planner($planner)->create(); $dishRecurring = Dish::factory()->planner($planner)->create(); $minimumRecurrence = MinimumRecurrence::factory()->days(5)->create(); $userDishPlain = UserDish::factory()->user($user)->dish(Dish::factory()->planner($planner)->create())->create(); $userDishRecurring = UserDish::factory()->user($user)->dish($dishRecurring)->create(); UserDishRecurrence::factory() ->userDish($userDishRecurring) ->recurrence($minimumRecurrence) ->create(); $date = now()->startOfDay()->addDays(2); $schedule = Schedule::factory()->planner($planner)->date($date->copy()->addDays(2))->create(); ScheduledUserDish::factory()->userDish($userDishRecurring)->schedule($schedule)->create(); $this->actingAs($planner); /** UserDishRepository $userDishRepository */ $userDishRepository = resolve(UserDishRepository::class); $userDishes = $userDishRepository->findCandidatesForDate($user, $date); $this->assertEquals($userDishes->pluck('id')->toArray(), [$userDishPlain->id]); } }