From e5699ed8d845e09eeb2f5fc1def1b0bd507e12b6 Mon Sep 17 00:00:00 2001 From: Matt Young Date: Tue, 2 Jul 2024 09:57:29 -0500 Subject: [PATCH] AdminUsersIndex page test --- resources/views/admin/users/index.blade.php | 4 +- routes/admin.php | 12 +-- tests/Feature/Pages/Admin/DashboardTest.php | 2 +- tests/Feature/Pages/Admin/UsersIndexTest.php | 78 ++++++++++++++++++++ 4 files changed, 87 insertions(+), 9 deletions(-) create mode 100644 tests/Feature/Pages/Admin/UsersIndexTest.php diff --git a/resources/views/admin/users/index.blade.php b/resources/views/admin/users/index.blade.php index 4379bab..137e5e2 100644 --- a/resources/views/admin/users/index.blade.php +++ b/resources/views/admin/users/index.blade.php @@ -6,7 +6,7 @@ Users Click name to edit - New User + New User @@ -21,7 +21,7 @@ @foreach($users as $user) - {{ $user->full_name(true) }} + {{ $user->full_name(true) }} {{ $user->has_school() ? $user->school->name : ' ' }} {{ $user->email }} {{ $user->cell_phone }} diff --git a/routes/admin.php b/routes/admin.php index 95a7879..9c0c26a 100644 --- a/routes/admin.php +++ b/routes/admin.php @@ -108,11 +108,11 @@ Route::middleware(['auth', 'verified', CheckIfAdmin::class])->prefix('admin/')-> // Admin User Routes Route::prefix('users')->controller(\App\Http\Controllers\Admin\UserController::class)->group(function () { - Route::get('/', 'index'); - Route::get('/create', 'create'); - Route::post('/', 'store'); - Route::get('/{user}/edit', 'edit'); - Route::patch('/{user}', 'update'); - Route::delete('/{user}', 'destroy'); + Route::get('/', 'index')->name('admin.users.index'); + Route::get('/create', 'create')->name('admin.users.create'); + Route::post('/', 'store')->name('admin.users.store'); + Route::get('/{user}/edit', 'edit')->name('admin.users.edit'); + Route::patch('/{user}', 'update')->name('admin.users.update'); + Route::delete('/{user}', 'destroy')->name('admin.users.destroy'); }); }); diff --git a/tests/Feature/Pages/Admin/DashboardTest.php b/tests/Feature/Pages/Admin/DashboardTest.php index fa4d779..1b4435a 100644 --- a/tests/Feature/Pages/Admin/DashboardTest.php +++ b/tests/Feature/Pages/Admin/DashboardTest.php @@ -13,7 +13,7 @@ it('only shows for an admin user', function () { $nonAdminUser = User::factory()->create(); // Act & Assert - get(route('dashboard'))->assertRedirect(route('home')); + get(route('admin.dashboard'))->assertRedirect(route('home')); actingAs($adminUser); get(route('admin.dashboard'))->assertOk(); actingAs($nonAdminUser); diff --git a/tests/Feature/Pages/Admin/UsersIndexTest.php b/tests/Feature/Pages/Admin/UsersIndexTest.php new file mode 100644 index 0000000..c9198ff --- /dev/null +++ b/tests/Feature/Pages/Admin/UsersIndexTest.php @@ -0,0 +1,78 @@ +adminUser = User::factory()->admin()->create(); + $this->nonAdminUser = User::factory()->create(); + $this->tabUser = User::factory()->tab()->create(); + $this->users = User::factory(3)->create(); + $this->schools = []; + foreach ($this->users as $user) { + $school = School::factory()->create(); + $user->school_id = $school->id; + $user->save(); + } +}); + +it('only shows for an admin user', function () { + // Act & Assert + $checkRoute = 'admin.users.index'; + get(route($checkRoute))->assertRedirect(route('home')); + actingAs($this->adminUser); + get(route($checkRoute))->assertOk(); + actingAs($this->nonAdminUser); + get(route($checkRoute))->assertRedirect(route('dashboard')); +}); + +it('has a new user link', function () { + // Arrange + actingAs($this->adminUser); + // Act & Assert + get(route('admin.users.index')) + ->assertOk() + ->assertSeeInOrder([ + 'href=', + route('admin.users.create'), + 'New User', + '/a', + ]); +}); + +it('shows user data', function () { + // Arrange + actingAs($this->adminUser); + // Act & Assert + $response = get(route('admin.users.index')); + $response->assertOk(); + foreach ($this->users as $user) { + $response->assertSeeInOrder([ + $user->full_name(true), + $user->school->name, + $user->email, + $user->cell_phone, + $user->judging_preference, + ]); + } +}); + +it('has an edit link for each user', function () { + // Arrange + actingAs($this->adminUser); + // Act & Assert + $response = get(route('admin.users.index')); + $response->assertOk(); + $response->assertSee(route('admin.users.edit', $this->adminUser)); + $response->assertSee(route('admin.users.edit', $this->nonAdminUser)); + $response->assertSee(route('admin.users.edit', $this->tabUser)); + foreach ($this->users as $user) { + $response->assertSee(route('admin.users.edit', $user)); + } +});