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()