def test_save(self): self.assertEqual(Competition.objects.count(), 0) cat1 = mixer.blend('notorhot.CandidateCategory') cat2 = mixer.blend('notorhot.CandidateCategory') cands = mixer.cycle(3).blend('notorhot.Candidate', category=cat1, is_enabled=True, challenges=0) comp = Competition(**{ 'left': cands[0], 'right': cands[1], }) comp.save() self.assertEqual(Competition.objects.count(), 1) self.assertEqual(cands[0].challenges, 1) self.assertEqual(cands[1].challenges, 1) self.assertEqual(comp.category, cat1) self.assertIsNone(comp.winner) self.assertIsNone(comp.winning_side) self.assertIsNone(comp.date_voted) self.assertIsNotNone(comp.date_presented) # make sure saving again doesn't set any new values comp.save() self.assertEqual(Competition.objects.count(), 1) self.assertEqual(cands[0].challenges, 1) self.assertEqual(cands[1].challenges, 1) self.assertEqual(comp.category, cat1) self.assertIsNone(comp.winner) self.assertIsNone(comp.winning_side) self.assertIsNone(comp.date_voted) self.assertIsNotNone(comp.date_presented)
def test_clean(self): cat1 = mixer.blend('notorhot.CandidateCategory') cat2 = mixer.blend('notorhot.CandidateCategory') cands = mixer.cycle(3).blend('notorhot.Candidate', category=cat1, is_enabled=True) cand_cat2 = mixer.blend('notorhot.Candidate', category=cat2, is_enabled=True) try: comp = Competition(**{ 'left': cands[0], 'right': cands[1], }) comp.clean() except ValidationError: self.fail(u"Competition with no winner or category set should clean " u"without trouble.") try: comp = Competition(**{ 'left': cands[0], 'right': cands[1], 'winner': cands[0], 'category': cat1, }) comp.clean() except ValidationError: self.fail(u"Competition with winner and category matching candidates " u"shoudl clean without trouble") # winner in same category but difft competition with self.assertRaises(ValidationError): comp = Competition(**{ 'left': cands[0], 'right': cands[1], 'winner': cands[2], }) comp.clean() # category doesn't match candidates with self.assertRaises(ValidationError): comp = Competition(**{ 'left': cands[0], 'right': cands[1], 'category': cat2, }) comp.clean() # candidates from different categories with self.assertRaises(ValidationError): comp = Competition(**{ 'left': cands[0], 'right': cand_cat2, }) comp.clean()