app/tests/Unit/Schedule/Actions/DraftScheduleForPeriodActionTest.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());
}
}