diff --git a/app/Http/Controllers/Admin/RoomController.php b/app/Http/Controllers/Admin/RoomController.php index a4be3cd..4f1cee1 100644 --- a/app/Http/Controllers/Admin/RoomController.php +++ b/app/Http/Controllers/Admin/RoomController.php @@ -24,9 +24,6 @@ class RoomController extends Controller public function judgingAssignment() // Show form for assigning judges { - if (! Auth::user()->is_admin) { - abort(403); - } $usersWithoutRooms = User::doesntHave('rooms')->orderBy('last_name')->orderBy('first_name')->get(); $usersWithRooms = User::has('rooms')->orderBy('last_name')->orderBy('first_name')->get(); $rooms = Room::with(['judges.school', 'auditions'])->get(); diff --git a/resources/views/admin/rooms/judge_assignments.blade.php b/resources/views/admin/rooms/judge_assignments.blade.php index a42f3d3..6ae2aec 100644 --- a/resources/views/admin/rooms/judge_assignments.blade.php +++ b/resources/views/admin/rooms/judge_assignments.blade.php @@ -5,7 +5,7 @@ @if($room->id == 0) @continue @endif -
  • {{-- card wrapper --}} +
  • {{-- card wrapper --}}
    {{-- card header --}}

    {{ $room->name }}

    @@ -60,8 +60,8 @@
    {{-- Judge Line --}}

    - {{ $judge->full_name() }}, - {{ $judge->school->name }} + {{ $judge->full_name() }} + {{ $judge->school->name ?? '' }}

    {{ $judge->judging_preference }}

    diff --git a/tests/Feature/Pages/Setup/JudgingIndexTest.php b/tests/Feature/Pages/Setup/JudgingIndexTest.php new file mode 100644 index 0000000..13bf112 --- /dev/null +++ b/tests/Feature/Pages/Setup/JudgingIndexTest.php @@ -0,0 +1,74 @@ +get(route('admin.rooms.judgingAssignment')) + ->assertRedirect(route('home')); + actAsNormal(); + $this->get(route('admin.rooms.judgingAssignment')) + ->assertRedirect(route('dashboard')) + ->assertSessionHas('error', 'You are not authorized to perform this action'); + actAsAdmin(); + $this->get(route('admin.rooms.judgingAssignment')) + ->assertOk(); +}); +it('shows a card for each room with its judges', function () { + // Arrange + $rooms = Room::factory()->count(3)->create(); + foreach ($rooms as $room) { + $users = User::factory()->count(3)->create(); + foreach ($users as $user) { + $room->addJudge($user->id); + } + } + // Act & Assert + actAsAdmin(); + $response = $this->get(route('admin.rooms.judgingAssignment')); + $response->assertOk(); + foreach ($rooms as $room) { + $response->assertElementExists('#room-'.$room->id.'-card', function (AssertElement $element) use ($room) { + $element->is('li'); + $element->containsText($room->name); + foreach ($room->judges as $judge) { + $element->containsText($judge->full_name()); + } + }); + } +}); +it('can assign a judge', function () { + // Arrange + $room = Room::factory()->create(); + $judge = User::factory()->create(); + // Act & Assert + expect($room->judges->contains($judge))->toBeFalse(); + actAsAdmin(); + $response = $this->post(route('admin.rooms.updateJudgeAssignment', $room), ['judge' => $judge->id]); + /** @noinspection PhpUnhandledExceptionInspection */ + $response->assertRedirect(route('admin.rooms.judgingAssignment')) + ->assertSessionHas('success', 'Assigned '.$judge->full_name().' to '.$room->name) + ->assertSessionHasNoErrors(); + $checkRoom = Room::find($room->id); + expect($checkRoom->judges->contains($judge))->toBeTrue(); +}); +it('can remove a judge', function () { + // Arrange + $room = Room::factory()->create(); + $judge = User::factory()->create(); + $room->addJudge($judge->id); + expect($room->judges->contains($judge))->toBeTrue(); + actAsAdmin(); + // Act & Assert + $response = $this->delete(route('admin.rooms.updateJudgeAssignment', $room), ['judge' => $judge->id]); + /** @noinspection PhpUnhandledExceptionInspection */ + $response->assertRedirect(route('admin.rooms.judgingAssignment')) + ->assertSessionHas('success', 'Removed '.$judge->full_name().' from '.$room->name) + ->assertSessionHasNoErrors(); + $checkRoom = Room::find($room->id); + expect($checkRoom->judges->contains($judge))->toBeFalse(); +});