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)); } });