expectException(\App\Exceptions\AuditionServiceException::class); $auditionService->getSubscores(new Audition(), 'invalid_mode'); }); it('throws an exception when an invalid sort is requested', function () { // Arrange #$auditionService = new \App\Services\AuditionService(); $auditionService = App::make(AuditionService::class); $this->expectException(\App\Exceptions\AuditionServiceException::class); // Act $auditionService->getSubscores(new Audition(), 'seating', 'invalid_sort'); }); it('throws an exception when an invalid audition is provided', function () { // Arrange #$auditionService = new \App\Services\AuditionService(); $auditionService = App::make(AuditionService::class); $this->expectException(\App\Exceptions\AuditionServiceException::class); $auditionService->getSubscores(new Audition(), 'seating', 'tiebreak'); // Act & Assert }); it('gets subscores for an audition', function () { // Arrange loadSampleAudition(); #$auditionService = new \App\Services\AuditionService(); $auditionService = App::make(AuditionService::class); // Act $subscores = $auditionService->getSubscores(Audition::find(1000), 'seating', 'tiebreak'); // Assert expect($subscores->toArray())->toBe(Audition::find(1000)->scoringGuide->subscores->where('for_seating', true)->sortBy('tiebreak_order')->toArray()); });