From 1b67fbdfebe9a919c61593ed3496be4359c57423 Mon Sep 17 00:00:00 2001 From: Matt Young Date: Sun, 30 Jun 2024 18:17:51 -0500 Subject: [PATCH] Add forSeating and forAdvancement scope to Audition --- app/Models/Audition.php | 10 ++++++++++ tests/Feature/Models/AuditionTest.php | 22 ++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/app/Models/Audition.php b/app/Models/Audition.php index 160f6db..836109a 100644 --- a/app/Models/Audition.php +++ b/app/Models/Audition.php @@ -191,4 +191,14 @@ class Audition extends Model { $query->where('entry_deadline', '>=', Carbon::now()); } + + public function scopeForSeating(Builder $query): void + { + $query->where('for_seating', 1); + } + + public function scopeForAdvancement(Builder $query): void + { + $query->where('for_advancement', 1); + } } diff --git a/tests/Feature/Models/AuditionTest.php b/tests/Feature/Models/AuditionTest.php index 901cd48..8f28d9c 100644 --- a/tests/Feature/Models/AuditionTest.php +++ b/tests/Feature/Models/AuditionTest.php @@ -15,3 +15,25 @@ test('only returns open auditions for open scope', function () { ->toHaveCount(1) ->first()->id->toEqual($openAudition->id); }); + +it('only returns auditions for seating with forSeating scope', function () { + // Arrange + Audition::factory(['for_seating' => 0])->create(); + $seatingAudition = Audition::factory()->create(); + + // Act & Assert + expect(Audition::forSeating()->get()) + ->toHaveCount(1) + ->first()->id->toEqual($seatingAudition->id); +}); + +it('only returns auditions for advancement with for forAdvancement scope', function () { + // Arrange + Audition::factory(['for_advancement' => 0])->create(); + $advancementAudition = Audition::factory()->create(); + + // Act & Assert + expect(Audition::forAdvancement()->get()) + ->toHaveCount(1) + ->first()->id->toEqual($advancementAudition->id); +});