50 lines
1.7 KiB
PHP
50 lines
1.7 KiB
PHP
<?php
|
|
|
|
use App\Models\Audition;
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
use Sinnbeck\DomAssertions\Asserts\AssertElement;
|
|
|
|
use function Pest\Laravel\get;
|
|
|
|
uses(RefreshDatabase::class);
|
|
|
|
it('allows only an admin to manage auditions', function () {
|
|
get((route('admin.auditions.index')))
|
|
->assertRedirect(route('home'));
|
|
actAsNormal();
|
|
get((route('admin.auditions.index')))
|
|
->assertRedirect('/dashboard')
|
|
->assertSessionHas('error', 'You are not authorized to perform this action');
|
|
actasAdmin();
|
|
get((route('admin.auditions.index')))
|
|
->assertOk();
|
|
});
|
|
it('has a link to add a new audition', function () {
|
|
// Arrange
|
|
actAsAdmin();
|
|
// Act & Assert
|
|
get((route('admin.auditions.index')))
|
|
->assertOk()
|
|
->assertSee('New Audition')
|
|
->assertSee(route('admin.auditions.create'));
|
|
});
|
|
it('shows audition data', function () {
|
|
// Arrange
|
|
$auditions = Audition::factory()->count(10)->create();
|
|
actAsAdmin();
|
|
// Act & Assert
|
|
$response = get((route('admin.auditions.index')));
|
|
$response->assertOk();
|
|
foreach ($auditions as $audition) {
|
|
$response->assertElementExists('#auditionRow-'.$audition->id,
|
|
function (AssertElement $element) use ($audition) {
|
|
$element->containsText($audition->event->name)
|
|
->containsText($audition->name)
|
|
->containsText($audition->entry_deadline)
|
|
->containsText($audition->display_fee())
|
|
->containsText($audition->minimum_grade.' - '.$audition->maximum_grade)
|
|
->containsText($audition->entries->count());
|
|
});
|
|
}
|
|
});
|