run(); SubscoreDefinition::where('id', '<', 900)->delete(); $this->audition = Audition::first(); $this->entry = Entry::factory()->create(['audition_id' => $this->audition->id]); $this->rollTaker = app(EnterNoShow::class); }); it('can enter a no-show', function () { ($this->rollTaker)($this->entry); expect($this->entry->hasFlag('no_show'))->toBeTrue(); }); it('creates a log entry when entering a no-show', function () { ($this->rollTaker)($this->entry); $logEntry = AuditLogEntry::orderBy('id', 'desc')->first(); expect($logEntry->message)->toStartWith('No Show has been entered for'); }); it('can enter a failed prelim', function () { ($this->rollTaker)($this->entry, 'failprelim'); expect($this->entry->hasFlag('failed_prelim'))->toBeTrue(); }); it('creates a log entry when entering a failed prelim', function () { ($this->rollTaker)($this->entry, 'failprelim'); $logEntry = AuditLogEntry::orderBy('id', 'desc')->first(); expect($logEntry->message)->toStartWith('Failed prelim has been entered for'); }); it('will not accept an invalid flag type', function () { ($this->rollTaker)($this->entry, 'bazinga'); })->throws(AuditionAdminException::class, 'Invalid flag type'); it('will not enter a no-show in an audition with published seats', function () { $this->audition->addFlag('seats_published'); ($this->rollTaker)($this->entry); })->throws(AuditionAdminException::class, 'Cannot enter a no-show for an entry in an audition where seats are published'); it('will not enter a no-show in an audition with published advancement', function () { $this->audition->addFlag('advancement_published'); ($this->rollTaker)($this->entry); })->throws(AuditionAdminException::class, 'Cannot enter a no-show for an entry in an audition where advancement is published'); it('deletes existing score sheets when marking a no show', function () { $scribe = app(EnterScore::class); $judge1 = User::factory()->create(); $judge2 = User::factory()->create(); $this->audition->judges()->attach([$judge1->id, $judge2->id]); $scribe($judge1, $this->entry, [ 1001 => 10, 1002 => 11, 1003 => 12, 1004 => 13, 1005 => 14, ]); $scribe($judge2, $this->entry, [ 1001 => 10, 1002 => 11, 1003 => 12, 1004 => 13, 1005 => 14, ]); expect($this->entry->scoreSheets()->count())->toBe(2); expect($this->entry->TotalScore()->count())->toBe(1); ($this->rollTaker)($this->entry); expect($this->entry->scoreSheets()->count())->toBe(0); expect($this->entry->TotalScore()->count())->toBe(0); });