class TestDibs(unittest.TestCase): def setUp(self): self.today = datetime.date.today() self.c = Club() self.c.name = "test" self.c.events_for_dibs = 2 self.c.save() self.race_class = RaceClass() self.race_class.name = "CSP" self.race_class.pax = .875 self.race_class.club = self.c self.race_class.save() self.s = Season() self.s.year = 2011 self.s.club = self.c self.s.save() self.e1 = Event() self.e1.name = "event1" self.e1.date = self.today-datetime.timedelta(days=10) self.e1.season = self.s self.e1.club = self.c self.e1.save() self.e2 = Event() self.e2.name = "event2" self.e2.date = self.today-datetime.timedelta(days=8) self.e2.season = self.s self.e2.club = self.c self.e2.save() self.e3 = Event() self.e3.name = "event3" self.e3.date = self.today-datetime.timedelta(days=5) self.e3.season = self.s self.e3.club = self.c self.e3.save() self.e4 = Event() self.e4.name = "event4" self.e4.date = self.today+datetime.timedelta(days=10) self.e4.season = self.s self.e4.club = self.c self.e4.save() self.events = [self.e1, self.e2, self.e3] for event in self.events: s = Session() s.event = event s.name = "AM" s.club = self.c s.save() self.u1 = User() self.u1.username = "******" self.u1.save() self.u2 = User() self.u2.username = "******" self.u2.save() self.u3 = User() self.u3.username = "******" self.u3.save() self.users = [self.u1, self.u2, self.u3] for i, user in enumerate(self.users): up = user.get_profile() for j, event in enumerate(self.events): if j<=i: r = Registration() r.number = "%d"%(i+1) r.race_class = self.race_class r.pax_class = None r.event = event r.user_profile = up r.club = self.c r.save() result = Result() result.reg = r result.session = event.sessions.all()[0] result.club = self.c result.save() for k in range(0, 3): r = Run() r.base_time = 10.0 r.calc_time = 10.0 r.index_time = 10.0 r.result = result r.club = self.c r.save() def tearDown(self): self.u3.delete() self.u2.delete() self.u1.delete() self.s.delete() self.c.delete() def test_1_dibs(self): self.c.assign_dibs() self.assertEqual(len(self.c.dibs.filter(club=self.c, user_profile=self.u3.get_profile()).all()), 1) dibs = Dibs.objects.filter(club=self.c, user_profile=self.u3.get_profile()).get() self.assertEqual(dibs.number, 3) self.assertEqual(dibs.race_class, self.race_class) self.assertEqual(dibs.expires, self.e4.date+datetime.timedelta(days=30)) Dibs.objects.all().delete() def test_no_dibs(self): reg = Registration() up = UserProfile.objects.get(user=self.u1) reg.user_profile = up reg.number = 15 reg.race_class = self.race_class reg.pax_class = None reg.event = self.e4 reg.club = self.c reg.save() s = Session() s.event = self.e4 s.name = "AM" s.club = self.c s.save() result = Result() result.reg = reg result.session = s result.club = self.c result.save() for k in range(0, 3): r = Run() r.base_time = 10.0 r.calc_time = 10.0 r.index_time = 10.0 r.result = result r.club = self.c r.save() self.c.assign_dibs() self.assertEqual(len(Dibs.objects.all()), 0) reg.delete() s.delete() def test_no_result_reg_dibs(self): reg = Registration() up = UserProfile.objects.get(user=self.u2) reg.user_profile = up reg.number = 15 reg.race_class = self.race_class reg.pax_class = None reg.event = self.e3 reg.club = self.c reg.save() self.c.assign_dibs() self.assertEqual(len(self.c.dibs.filter(club=self.c, user_profile=self.u3.get_profile()).all()), 1) dibs = Dibs.objects.filter(club=self.c, user_profile=self.u3.get_profile).get() self.assertEqual(dibs.number, 3) self.assertEqual(dibs.race_class, self.race_class) self.assertEqual(dibs.expires, self.e4.date+datetime.timedelta(days=30)) reg.delete() Dibs.objects.all().delete() def test_update_existing_dibs(self): dibs = Dibs() dibs.club = self.c dibs.user_profile = self.u3.get_profile() dibs.race_class = self.race_class dibs.number = 3 dibs.duration = 30 dibs.expires = self.today+datetime.timedelta(days=5) dibs.save() dibs.created = self.today-datetime.timedelta(days=60) dibs.save() self.c.assign_dibs() self.assertEqual(len(self.c.dibs.filter(club=self.c, user_profile=self.u3.get_profile()).all()), 1) dibs = Dibs.objects.filter(club=self.c, user_profile=self.u3.get_profile()).get() self.assertEqual(dibs.duration, 60) self.assertEqual(dibs.expires, self.e3.date+datetime.timedelta(days=60)) dibs.delete() def test_dont_update_old_dibs(self): dibs = Dibs() dibs.club = self.c dibs.user_profile = self.u1.get_profile() dibs.race_class = self.race_class dibs.number = 3 dibs.duration = 30 dibs.expires = self.today-datetime.timedelta(days=5) dibs.save() dibs.created = self.today-datetime.timedelta(days=60) dibs.save() self.c.assign_dibs() dibs = Dibs.objects.filter(user_profile=self.u1.get_profile()).get() self.assertEqual(dibs.expires, self.today-datetime.timedelta(days=5)) self.assertEqual(dibs.duration, 30) def test_race_class_allow_dibs(self): self.race_class.allow_dibs = False self.race_class.save() self.c.assign_dibs() self.assertEqual(len(Dibs.objects.all()), 0) def test_clean_dibs(self): dibs = Dibs() dibs.club = self.c dibs.expires = datetime.date.today()-datetime.timedelta(days=10) dibs.duration = 30 dibs.number = 99 dibs.race_class = self.race_class dibs.user_profile = self.u2.get_profile() dibs.save() clean_dibs() self.assertEqual(len(self.c.dibs.filter(club=self.c, user_profile=self.u3.get_profile()).all()), 1) dibs = Dibs.objects.filter(club=self.c, user_profile=self.u3.get_profile()).get() self.assertEqual(dibs.number, 3) self.assertEqual(dibs.race_class, self.race_class) self.assertEqual(dibs.expires, self.e4.date+datetime.timedelta(days=30)) self.assertEqual(len(self.c.dibs.filter(club=self.c, user_profile=self.u2.get_profile()).all()), 0)