40 lines
1.1 KiB
PHP
40 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace Tests\Unit\Schedule\Actions;
|
|
|
|
use App\Models\Schedule;
|
|
use App\Models\ScheduledUserDish;
|
|
use App\Models\User;
|
|
use Carbon\CarbonPeriod;
|
|
use DishPlanner\Schedule\Actions\DraftScheduleForPeriodAction;
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
use Tests\TestCase;
|
|
use Tests\Traits\DishesTestTrait;
|
|
use Tests\Traits\HasPlanner;
|
|
|
|
class DraftScheduleForPeriodActionTest extends TestCase
|
|
{
|
|
use HasPlanner;
|
|
use RefreshDatabase;
|
|
use DishesTestTrait;
|
|
|
|
public function test_user_can_generate_schedule(): void
|
|
{
|
|
$planner = $this->planner;
|
|
|
|
$this->assertNotNull($planner);
|
|
|
|
$expectedPeriodScheduleCount = 10;
|
|
$this->generateDishes($planner);
|
|
|
|
$this->assertDatabaseCount(Schedule::class, 0);
|
|
|
|
|
|
resolve(DraftScheduleForPeriodAction::class)
|
|
->execute($planner, CarbonPeriod::create(now()->addDay(), now()->addDays($expectedPeriodScheduleCount)));
|
|
|
|
|
|
$this->assertDatabaseCount(Schedule::class, $expectedPeriodScheduleCount);
|
|
$this->assertDatabaseCount(ScheduledUserDish::class, $expectedPeriodScheduleCount * User::all()->count());
|
|
}
|
|
}
|