auditionadmin/tests/Feature/Pages/Admin/EntriesIndexTest.php

78 lines
2.3 KiB
PHP

<?php
use App\Models\Entry;
use Illuminate\Foundation\Testing\RefreshDatabase;
use function Pest\Laravel\get;
uses(RefreshDatabase::class);
it('admin can see an entries index page', function () {
actAsAdmin();
get(route('admin.entries.index'))
->assertOk();
});
it('normal users cannot see entries index page', function () {
// Arrange
actAsNormal();
get(route('admin.entries.index'))
->assertRedirect(route('dashboard'));
// Act & Assert
});
it('does not allow guests to see the entries index page', function () {
// Arrange
get(route('admin.entries.index'))
->assertRedirect(route('home'));
});
it('shows entries on the index page', function () {
$entries = Entry::factory()->count(2)->create();
actAsAdmin();
$response = get(route('admin.entries.index'))
->assertOk();
foreach ($entries as $entry) {
$response
->assertSee($entry->id)
->assertSee($entry->audition->name)
->assertSee($entry->student->full_name())
->assertSee($entry->student->grade)
->assertSee($entry->school->name);
}
});
it('has a link to add a new entry', function () {
actAsAdmin();
get(route('admin.entries.index'))
->assertSee('New Entry')
->assertSee(route('admin.entries.create'));
});
it('has a link to edit each entry', function () {
$entries = Entry::factory()->count(2)->create();
actAsAdmin();
$response = get(route('admin.entries.index'))
->assertOk();
foreach ($entries as $entry) {
$response
->assertSee(route('admin.entries.edit', $entry));
}
});
//it('has pagination after 10 entries', function () {
// Entry::factory()->count(10)->create();
// actAsAdmin();
// get(route('admin.entries.index'))
// ->assertOk()
// ->assertDontSee('Previous')
// ->assertDontSee('Next');
// Entry::factory()->count(1)->create();
// get(route('admin.entries.index'))
// ->assertOk()
// ->assertSee('Next');
// get(route('admin.entries.index', ['page' => 2]))
// ->assertOk()
// ->assertSee('Previous')
// ->assertDontSee('Next');
// Entry::factory()->count(20)->create();
// get(route('admin.entries.index', ['page' => 2]))
// ->assertOk()
// ->assertSee('Previous')
// ->assertSee('Next');
//});