create(); $user = User::factory()->forSchool($school)->create(); actingAs($user); $event = Event::factory()->create(['name' => 'Concert']); $event2 = Event::factory()->create(['name' => 'Jazz']); $audition11 = Audition::factory()->create([ 'minimum_grade' => 1, 'maximum_grade' => 15, 'event_id' => $event->id, ]); $audition12 = Audition::factory()->create([ 'minimum_grade' => 1, 'maximum_grade' => 15, 'event_id' => $event->id, ]); $audition21 = Audition::factory()->create([ 'minimum_grade' => 1, 'maximum_grade' => 15, 'event_id' => $event2->id, ]); $audition22 = Audition::factory()->create([ 'minimum_grade' => 1, 'maximum_grade' => 15, 'event_id' => $event2->id, ]); $student = Student::factory()->forSchool($school)->create(); $entryDesk = app(CreateEntry::class); $entryDesk($student, $audition11); $entryDesk($student, $audition12); $entryDesk($student, $audition21); $entryDesk($student, $audition22); DoublerRequest::create([ 'event_id' => $event2->id, 'student_id' => $student->id, 'request' => 'request body', ]); $response = $this->get(route('doubler_request.index')); $response->assertOk(); $viewEvents = $response->viewData('events'); $viewDoublers = $response->viewData('doublers'); $viewExistingRequests = $response->viewData('existingRequests'); expect($viewEvents)->toHaveCount(2) ->and($viewDoublers)->toHaveCount(2) ->and($viewDoublers[$event->id]->count())->toBe(1) ->and($viewExistingRequests[$event2->id][$student->id]->request)->toBe('request body'); }); }); describe('makeRequest', function () { it('submits a request', function () { $school = School::factory()->create(); $user = User::factory()->forSchool($school)->create(); $event1 = Event::factory()->create(); $event2 = Event::factory()->create(); $student = Student::factory()->forSchool($school)->create(); $student2 = Student::factory()->forSchool($school)->create(); actingAs($user); $response = $this->post(route('doubler_request.make_request'), [ 'doubler_requests' => [ $event1->id => [ $student->id => 'student 1 request in event 1', $student2->id => 'student 2 request in event 1', ], $event2->id => [ $student->id => 'student 1 request in event 2', $student2->id => 'student 2 request in event 2', ], ], ]); $response->assertRedirect(route('doubler_request.index')); expect(DoublerRequest::count())->toBe(4) ->and(DoublerRequest::where('event_id', $event2->id)->where('student_id', $student->id)->first()->request)->toBe('student 1 request in event 2'); }); });