dishplanner/tests/Browser/Schedule/GenerateScheduleTest.php

67 lines
1.6 KiB
PHP
Raw Normal View History

<?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.'"]');
});