add testValidity method to ScoreSheet model. Aimed to replace scoreSheetService::isScoreSheetValid

This commit is contained in:
Matt Young 2025-07-08 21:36:36 -05:00
parent b09f1b13ca
commit 4963124d22
2 changed files with 16 additions and 0 deletions

View File

@ -48,4 +48,9 @@ class ScoreSheet extends Model
return $this->subscores[$id]['score'] ?? false; return $this->subscores[$id]['score'] ?? false;
// this function is used at resources/views/tabulation/entry_score_sheet.blade.php // 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);
}
} }

View File

@ -2,6 +2,7 @@
use App\Models\Audition; use App\Models\Audition;
use App\Models\Entry; use App\Models\Entry;
use App\Models\Room;
use App\Models\ScoreSheet; use App\Models\ScoreSheet;
use App\Models\User; use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Foundation\Testing\RefreshDatabase;
@ -39,3 +40,13 @@ it('returns its audition', function () {
it('can return a specified subscore', function () { it('can return a specified subscore', function () {
expect($this->scoreSheet->getSubscore(2))->toEqual(68); 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;
});