From 4963124d221f543520d20c329aca25938bd0ba8a Mon Sep 17 00:00:00 2001 From: Matt Young Date: Tue, 8 Jul 2025 21:36:36 -0500 Subject: [PATCH] add testValidity method to ScoreSheet model. Aimed to replace scoreSheetService::isScoreSheetValid --- app/Models/ScoreSheet.php | 5 +++++ tests/Feature/app/Models/ScoreSheetTest.php | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/app/Models/ScoreSheet.php b/app/Models/ScoreSheet.php index b74ef4b..5d14979 100644 --- a/app/Models/ScoreSheet.php +++ b/app/Models/ScoreSheet.php @@ -48,4 +48,9 @@ class ScoreSheet extends Model return $this->subscores[$id]['score'] ?? false; // this function is used at resources/views/tabulation/entry_score_sheet.blade.php } + + public function testValidity() + { + return $this->audition->judges->contains('id', $this->user_id); + } } diff --git a/tests/Feature/app/Models/ScoreSheetTest.php b/tests/Feature/app/Models/ScoreSheetTest.php index f28016a..829853e 100644 --- a/tests/Feature/app/Models/ScoreSheetTest.php +++ b/tests/Feature/app/Models/ScoreSheetTest.php @@ -2,6 +2,7 @@ use App\Models\Audition; use App\Models\Entry; +use App\Models\Room; use App\Models\ScoreSheet; use App\Models\User; use Illuminate\Foundation\Testing\RefreshDatabase; @@ -39,3 +40,13 @@ it('returns its audition', function () { it('can return a specified subscore', function () { expect($this->scoreSheet->getSubscore(2))->toEqual(68); }); + +it('can validate itself', function () { + $room = Room::factory()->create(); + $this->entry->audition->update(['room_id' => $room->id]); + $room->addJudge($this->judge); + expect($this->scoreSheet->testValidity())->toBeTrue; + $room->removeJudge($this->judge); + $this->scoreSheet->refresh(); + expect($this->scoreSheet->testValidity())->toBeFalse; +});