From f37db47d278baec97870a5cf585f77e753416a43 Mon Sep 17 00:00:00 2001 From: Matt Young Date: Thu, 3 Jul 2025 12:56:01 -0500 Subject: [PATCH] Create tests for app/Models/Ensemble --- tests/Feature/app/Models/EnsembleTest.php | 72 +++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 tests/Feature/app/Models/EnsembleTest.php diff --git a/tests/Feature/app/Models/EnsembleTest.php b/tests/Feature/app/Models/EnsembleTest.php new file mode 100644 index 0000000..0581a24 --- /dev/null +++ b/tests/Feature/app/Models/EnsembleTest.php @@ -0,0 +1,72 @@ +event = Event::factory()->create(); + $this->ensemble = Ensemble::factory()->create([ + 'event_id' => $this->event->id, 'name' => 'Test Ensemble', + ]); + $this->audition = Audition::factory()->create([ + 'event_id' => $this->event->id, 'minimum_grade' => 1, 'maximum_grade' => 12, + ]); + $this->student = \App\Models\Student::factory()->create(['grade' => 12]); + $this->entry = app(CreateEntry::class)($this->student, $this->audition); + $this->seatingLimit = SeatingLimit::create([ + 'ensemble_id' => $this->ensemble->id, + 'audition_id' => $this->audition->id, + 'maximum_accepted' => 3, + ]); + $this->seat = Seat::create([ + 'ensemble_id' => $this->ensemble->id, + 'audition_id' => $this->audition->id, + 'seat' => 1, + 'entry_id' => $this->entry->id, + ]); + +}); + +it('can return its event', function () { + expect($this->ensemble->event->id)->toEqual($this->event->id); +}); + +it('can return its auditions', function () { + expect($this->ensemble->auditions()->count())->toEqual(1) + ->and($this->ensemble->auditions()->first())->toBeInstanceOf(\App\Models\Audition::class); +}); + +it('can return its seating limits', function () { + expect($this->ensemble->seatingLimits()->count())->toEqual(1) + ->and($this->ensemble->seatingLimits()->first())->toBeInstanceOf(\App\Models\SeatingLimit::class); +}); + +it('can return its seats', function () { + expect($this->ensemble->seats()->count())->toEqual(1) + ->and($this->ensemble->seats()->first())->toBeInstanceOf(\App\Models\Seat::class); +}); + +it('can return ensembles for a given auditions event', function () { + $newEvent = \App\Models\Event::factory()->create(); + $newEnsemble = Ensemble::factory()->create(['event_id' => $newEvent->id]); + expect(Ensemble::forAudition($this->audition->id)->count())->toBe(1) + ->and(Ensemble::forAudition($this->audition->id)->first())->toBeInstanceOf(Ensemble::class) + ->and(Ensemble::forAudition($this->audition->id)->first()->id)->toEqual($this->ensemble->id) + ->and(Ensemble::count())->toBe(2); +}); + +it('can return ensembles for a given event', function () { + $newEvent = \App\Models\Event::factory()->create(); + $newEnsemble = Ensemble::factory()->create(['event_id' => $newEvent->id]); + expect(Ensemble::forEvent($this->event->id)->count())->toBe(1) + ->and(Ensemble::forEvent($this->event->id)->first())->toBeInstanceOf(Ensemble::class) + ->and(Ensemble::forEvent($this->event->id)->first()->id)->toEqual($this->ensemble->id) + ->and(Ensemble::count())->toBe(2); +});