def test_existing_tournament(self): tournament = TournamentFactory() data = self.simple_data() data['full_name'] = tournament.full_name form = CompetitionForm(data=data) self.assertTrue(form.is_valid(), form.errors.as_json()) form.save() competition = Competition.objects.get() self.assertEqual(competition.tournament, tournament)
def test_simple_create(self): data = self.simple_data() form = CompetitionForm(data=data) self.assertTrue(form.is_valid(), form.errors.as_json()) form.save() competition = Competition.objects.get() self.assert_shoot_fields(competition, data) self.assert_session_fields(competition, data) self.assert_result_mode_fields(competition, data)
def test_session_fields_change(self): competition = CompetitionFactory.create() SessionRoundFactory.create(session__competition=competition, session__start=datetime.datetime(2015, 1, 1, 9), shot_round=self.rnd) ResultsModeFactory.create(competition=competition) form = CompetitionForm(instance=competition) data = form.initial data['archers_per_target'] = 2 form = CompetitionForm(instance=competition, data=data) self.assertTrue(form.is_valid(), form.errors.as_json()) form.save() session = competition.session_set.get() self.assertEqual(session.archers_per_target, 2)
def test_simple_update(self): competition = CompetitionFactory.create() SessionRoundFactory.create(session__competition=competition, shot_round=self.rnd) ResultsModeFactory.create(competition=competition) data = self.simple_data() form = CompetitionForm(instance=competition, data=data) self.assertTrue(form.is_valid(), form.errors.as_json()) form.save() competition.refresh_from_db() self.assert_shoot_fields(competition, data) self.assert_session_fields(competition, data) self.assert_result_mode_fields(competition, data)
def test_session_rounds_change(self): competition = CompetitionFactory.create() SessionRoundFactory.create(session__competition=competition, session__start=datetime.datetime(2015, 1, 1, 9), shot_round=self.rnd) ResultsModeFactory.create(competition=competition) new_round = RoundFactory.create() form = CompetitionForm(instance=competition) data = form.initial data['session_1_rounds'] = [new_round.pk] form = CompetitionForm(instance=competition, data=data) self.assertTrue(form.is_valid(), form.errors.as_json()) form.save() session = competition.session_set.get() self.assertSequenceEqual(session.sessionround_set.values_list('shot_round', flat=True), [new_round.pk])
def test_result_modes_add(self): competition = CompetitionFactory.create() SessionRoundFactory.create(session__competition=competition, session__start=datetime.datetime(2015, 1, 1, 9), shot_round=self.rnd) ResultsModeFactory.create(competition=competition, mode='by-round') form = CompetitionForm(instance=competition) data = form.initial data.update({ 'result_modes': ['by-round', 'by-session'], }) form = CompetitionForm(instance=competition, data=data) self.assertTrue(form.is_valid(), form.errors.as_json()) form.save() result_modes = {rm.mode for rm in competition.result_modes.all()} self.assertEqual(result_modes, {'by-round', 'by-session'})
def test_session_delete(self): competition = CompetitionFactory.create() SessionRoundFactory.create(session__competition=competition, session__start=datetime.datetime(2015, 1, 1, 9), shot_round=self.rnd) SessionRoundFactory.create(session__competition=competition, session__start=datetime.datetime(2015, 1, 1, 12), shot_round=self.rnd) ResultsModeFactory.create(competition=competition) form = CompetitionForm(instance=competition) data = form.initial data.pop('session_2_time') data.pop('session_2_rounds') form = CompetitionForm(instance=competition, data=data) self.assertTrue(form.is_valid(), form.errors.as_json()) form.save() competition.refresh_from_db() self.assert_session_fields(competition, data)
def multiple_sessions_on_create(self): data = self.simple_data() data.update({ 'session_2_time': '2015-01-01 12:00:00', 'session_2_rounds': [self.rnd.pk], }) form = CompetitionForm(data=data) self.assertTrue(form.is_valid(), form.errors.as_json()) form.save() competition = Competition.objects.get() self.assertEqual(competition.session_set.count(), 2) sessions = competition.session_set.all() self.assertEqual(sessions[0].start, datetime.datetime(2015, 1, 1, 9)) self.assertEqual(sessions[1].start, datetime.datetime(2015, 1, 1, 12)) for session in sessions: self.assertEqual(session.archers_per_target, data['archers_per_target']) self.assertEqual(session.scoring_system, data['scoring_system']) self.assertEqual(session.arrows_entered_per_end, data['arrows_entered_per_end']) self.assertSequenceEqual(session.sessionround_set.values_list('shot_round', flat=True), [self.rnd.pk])
def test_session_add(self): competition = CompetitionFactory.create() SessionRoundFactory.create(session__competition=competition, session__start=datetime.datetime(2015, 1, 1, 9), shot_round=self.rnd) ResultsModeFactory.create(competition=competition) form = CompetitionForm(instance=competition) data = form.initial data.update({ 'session_2_time': '2015-01-01 12:00:00', 'session_2_rounds': [self.rnd.pk], }) form = CompetitionForm(instance=competition, data=data) self.assertTrue(form.is_valid(), form.errors.as_json()) form.save() self.assertEqual(competition.session_set.count(), 2) sessions = competition.session_set.all() self.assertEqual(sessions[0].start, datetime.datetime(2015, 1, 1, 9)) self.assertEqual(sessions[1].start, datetime.datetime(2015, 1, 1, 12)) for session in sessions: self.assertEqual(session.archers_per_target, data['archers_per_target']) self.assertEqual(session.scoring_system, data['scoring_system']) self.assertEqual(session.arrows_entered_per_end, data['arrows_entered_per_end']) self.assertSequenceEqual(session.sessionround_set.values_list('shot_round', flat=True), [self.rnd.pk])