63 lines
1.4 KiB
PHP
63 lines
1.4 KiB
PHP
<?php
|
|
|
|
use App\Models\Planner;
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
use Illuminate\Support\Facades\Hash;
|
|
use Tests\BrowserTestCase;
|
|
use Tests\TestCase;
|
|
|
|
uses(TestCase::class)->in('Feature', 'Unit');
|
|
uses(BrowserTestCase::class, RefreshDatabase::class)->in('Browser');
|
|
|
|
// Livewire round-trips can be slower than the default 5s auto-wait budget.
|
|
pest()->browser()->timeout(10000);
|
|
|
|
/**
|
|
* Create a planner with a known password for browser logins.
|
|
*/
|
|
function createPlanner(?string $email = null): Planner
|
|
{
|
|
return Planner::factory()->create([
|
|
'email' => $email ?? fake()->unique()->safeEmail(),
|
|
'password' => Hash::make('password'),
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Log in as the given planner and navigate to the target page.
|
|
*
|
|
* @return \Pest\Browser\Api\Webpage
|
|
*/
|
|
function loginAs(Planner $planner, string $page = '/dashboard')
|
|
{
|
|
return visit('/login')
|
|
->type('input[id="email"]', $planner->email)
|
|
->type('input[id="password"]', 'password')
|
|
->press('Sign In')
|
|
->assertPathIs('/dashboard')
|
|
->navigate($page);
|
|
}
|
|
|
|
/**
|
|
* @return \Pest\Browser\Api\Webpage
|
|
*/
|
|
function loginAndGoToDishes()
|
|
{
|
|
return loginAs(createPlanner(), '/dishes');
|
|
}
|
|
|
|
/**
|
|
* @return \Pest\Browser\Api\Webpage
|
|
*/
|
|
function loginAndGoToUsers()
|
|
{
|
|
return loginAs(createPlanner(), '/users');
|
|
}
|
|
|
|
/**
|
|
* @return \Pest\Browser\Api\Webpage
|
|
*/
|
|
function loginAndGoToSchedule()
|
|
{
|
|
return loginAs(createPlanner(), '/schedule');
|
|
}
|