app/tests/Traits/ScheduledDishesTestTrait.php

41 lines
1.1 KiB
PHP
Raw Permalink Normal View History

2025-10-13 14:57:11 +02:00
<?php
namespace Tests\Traits;
use App\Models\Planner;
use App\Models\Schedule;
use App\Models\ScheduledUserDish;
use App\Models\User;
use Carbon\CarbonPeriod;
trait ScheduledDishesTestTrait
{
use DishesTestTrait;
public function generateScheduledDishes(Planner $planner, ?CarbonPeriod $period = null): void
{
$users = User::all();
$this->generateDishes($planner);
if (is_null($period)) {
$dateRangeStart = now();
$dateRangeEnd = now()->addWeeks(2);
$period = CarbonPeriod::create($dateRangeStart, $dateRangeEnd);
}
collect($period)
->each(function ($date) use ($users, $planner) {
$schedule = Schedule::factory()->planner($planner)->date($date)->create();
$users
->each(fn (User $user) => ScheduledUserDish::factory()
->schedule($schedule)
->user($user)
->userDish($user->userDishes->random())
->create()
);
});
}
}