66 lines
1.6 KiB
PHP
66 lines
1.6 KiB
PHP
<?php
|
|
|
|
use App\Models\Dish;
|
|
use App\Models\Planner;
|
|
use App\Models\User;
|
|
use Illuminate\Support\Facades\Hash;
|
|
|
|
/**
|
|
* @return array{0: Planner, 1: User}
|
|
*/
|
|
function makeScheduleFixture(): array
|
|
{
|
|
$planner = Planner::factory()->create([
|
|
'email' => fake()->unique()->safeEmail(),
|
|
'password' => Hash::make('password'),
|
|
]);
|
|
|
|
$user = User::factory()->create([
|
|
'planner_id' => $planner->id,
|
|
'name' => 'Test User',
|
|
]);
|
|
|
|
$dish = Dish::factory()->create([
|
|
'planner_id' => $planner->id,
|
|
'name' => 'Test Dish',
|
|
]);
|
|
|
|
$dish->users()->attach($user);
|
|
|
|
return [$planner, $user];
|
|
}
|
|
|
|
it('can generate a schedule with a user and dish', function () {
|
|
[$planner] = makeScheduleFixture();
|
|
|
|
loginAs($planner, '/schedule')
|
|
->assertSee('Test User')
|
|
->click('button[wire\:click="generate"]')
|
|
->assertSee('Test Dish');
|
|
});
|
|
|
|
it('shows the generated dish on the calendar', function () {
|
|
[$planner] = makeScheduleFixture();
|
|
|
|
loginAs($planner, '/schedule')
|
|
->click('button[wire\:click="generate"]')
|
|
->assertSee('Test Dish');
|
|
});
|
|
|
|
it('can clear the month schedule', function () {
|
|
[$planner] = makeScheduleFixture();
|
|
|
|
loginAs($planner, '/schedule')
|
|
->click('button[wire\:click="generate"]')
|
|
->assertSee('Test Dish')
|
|
->click('button[wire\:click="clearMonth"]')
|
|
->assertSee('No dishes scheduled');
|
|
});
|
|
|
|
it('selects all users by default', function () {
|
|
[$planner, $user] = makeScheduleFixture();
|
|
|
|
loginAs($planner, '/schedule')
|
|
->assertSee('Test User')
|
|
->assertChecked('input[value="'.$user->id.'"]');
|
|
});
|