/** * @test */ public function quizmasterCanProvideQuizzingPreferences() { $tournament = Tournament::firstOrFail(); $tournamentQuizmaster = TournamentQuizmaster::firstOrFail(); $shirtSize = 'XL'; $gamesQuizzed = 'Fewer than 15'; $this->visit('/tournaments/' . $tournament->slug . '/registration/quizmaster-preferences/' . $tournamentQuizmaster->guid)->select($gamesQuizzed, 'games_quizzed_this_season')->select($shirtSize, 'shirt_size')->press('Save')->see('Your quizzing preferences have been updated'); $tournamentQuizmaster = TournamentQuizmaster::firstOrFail(); $this->assertEquals($shirtSize, $tournamentQuizmaster->shirt_size); $this->assertEquals($gamesQuizzed, $tournamentQuizmaster->quizzing_preferences->gamesQuizzedThisSeason()); }
/** * @test */ public function canRegisterWithGroupAndWithoutFees() { $this->setupAsGuardian(); $this->simulateTransaction(); $gamesQuizzedThisSeason = 'Fewer than 30'; $tournament = Tournament::firstOrFail(); // Remove fees for quizmasters $tournament->participantFees()->where('participant_type_id', ParticipantType::QUIZMASTER)->update(['earlybird_fee' => 0, 'fee' => 0]); $group = Group::byProgram($tournament->program_id)->first(); $this->visit('/tournaments/' . $tournament->slug . '/registration/quizmaster')->select($group->id, 'group_id')->select($gamesQuizzedThisSeason, 'games_quizzed_this_season')->press('Submit')->see('Your quizmaster registration is complete'); $quizmaster = TournamentQuizmaster::orderBy('id', 'desc')->first(); $this->assertEquals($group->id, $quizmaster->group_id); // quizzing preferences saved $this->assertEquals($gamesQuizzedThisSeason, $quizmaster->quizzing_preferences->gamesQuizzedThisSeason()); // no payment was made, so we shouldn't have a receipt $this->assertNull($quizmaster->receipt_id); }
public function postPreferences(QuizzingPreferencesRequest $request, $slug, $guid) { /** @var TournamentQuizmaster $tournamentQuizmaster */ $tournamentQuizmaster = TournamentQuizmaster::where('guid', $guid)->firstOrFail(); // model events will pick this up and make sure this user // is flagged as a quizmaster in the mailing list if ($tournamentQuizmaster->user_id == null && $tournamentQuizmaster->email == Auth::user()->email) { $tournamentQuizmaster->user_id = Auth::user()->id; } /** @var QuizzingPreferences $quizzingPreferences */ $quizzingPreferences = $tournamentQuizmaster->quizzing_preferences; $quizzingPreferences->setQuizzedAtThisTournamentBefore($request->get('quizzed_at_tournament')); $quizzingPreferences->setTimesQuizzedAtThisTournament($request->get('times_quizzed_at_tournament')); $quizzingPreferences->setGamesQuizzedThisSeason($request->get('games_quizzed_this_season')); $quizzingPreferences->setQuizzingInterest($request->get('quizzing_interest')); $tournamentQuizmaster->quizzing_preferences = $quizzingPreferences; $tournamentQuizmaster->shirt_size = $request->get('shirt_size'); $tournamentQuizmaster->save(); return redirect('/tournaments/' . $tournamentQuizmaster->tournament->slug)->withFlashSuccess('Your quizzing preferences have been updated'); }
/** * @return TournamentQuizmaster */ public function tournamentQuizmaster() { return TournamentQuizmaster::where('id', $this->eventData()[0])->first(); }