assertRedirect(route('home')); }); it('denies access to a user with no school', function () { // Arrange actAsNormal(); // Act & Assert get(route('doubler_request.index')) ->assertStatus(405); }); it('allows access to a user with a school', function () { // Arrange $school = School::factory()->create(); $user = User::factory()->create(['school_id' => $school->id]); actingAs($user); // Act & Assert get(route('doubler_request.index')) ->assertOk() ->assertSessionHasNoErrors(); }); it('includes a section for each event', function () { // Arrange $events = \App\Models\Event::factory()->count(3)->create(); $school = School::factory()->create(); $user = User::factory()->create(['school_id' => $school->id]); actingAs($user); // Act & Assert $response = get(route('doubler_request.index')); $response->assertOk() ->assertViewHas('events', \App\Models\Event::all()); foreach ($events as $event) { $response->assertSee($event->name); } }); it(/** * @throws ManageEntryException */ 'includes all doublers for the users school', function () { // Arrange $school = School::factory()->create(); $user = User::factory()->create(['school_id' => $school->id]); $concert_event = \App\Models\Event::create(['name' => 'Concert Band']); $jazz_event = \App\Models\Event::create(['name' => 'Jazz Band']); $jas_audition = Audition::factory()->create([ 'name' => 'Jazz Alto Sax', 'event_id' => $jazz_event->id, 'minimum_grade' => 1, 'maximum_grade' => 99, ]); $jts_audition = Audition::factory()->create([ 'name' => 'Jazz Tenor Sax', 'event_id' => $jazz_event->id, 'minimum_grade' => 1, 'maximum_grade' => 99, ]); $cas_audition = Audition::factory()->create([ 'name' => 'Alto Sax', 'event_id' => $concert_event->id, 'minimum_grade' => 1, 'maximum_grade' => 99, ]); $cts_audition = Audition::factory()->create([ 'name' => 'Tenor Sax', 'event_id' => $concert_event->id, 'minimum_grade' => 1, 'maximum_grade' => 99, ]); $concert_student = Student::factory()->create(['school_id' => $school->id]); $jazz_student = Student::factory()->create(['school_id' => $school->id]); $singleton_student = Student::factory()->create(['school_id' => $school->id]); $other_school_student = Student::factory()->create(); $entryCreator = new CreateEntry(); $entryCreator->createEntry($concert_student, $cas_audition); $entryCreator->createEntry($singleton_student, $cas_audition); $entryCreator->createEntry($concert_student, $cts_audition); $entryCreator->createEntry($jazz_student, $jas_audition); $entryCreator->createEntry($jazz_student, $jts_audition); $entryCreator->createEntry($singleton_student, $jts_audition); $entryCreator->createEntry($other_school_student, $cas_audition); $entryCreator->createEntry($other_school_student, $cts_audition); $entryCreator->createEntry($other_school_student, $jts_audition); $entryCreator->createEntry($other_school_student, $jas_audition); actingAs($user); // Act $response = get(route('doubler_request.index')); // Assert $response->assertOk() ->assertSee($concert_student->full_name()) ->assertSee($jazz_student->full_name()) ->assertDontSee($singleton_student->full_name()) ->assertDontSee($other_school_student->full_name()); });