def testCollectFromAssignment_NoneAssigned(self): c, d, v, a, fix_to_date = self.setup_sendable_test() f.TriggerByAssignmentFactory.create(campaign=c) result = Sendable.collect_from_assignment(fix_to_date) self.assertEqual(0, result) all_qs = Sendable.objects.all() self.assertQuerysetEqual(all_qs, [])
def testCollectFromAssignment_OneAssigned(self): c, d, v, a, fix_to_date = self.setup_sendable_test() when = datetime.combine(fix_to_date, time(1, 0, 0, 0, pytz.utc)) f.AssignmentFactory(volunteer=v, duty=d, created=when) f.TriggerByAssignmentFactory.create(campaign=c) result = Sendable.collect_from_assignment(fix_to_date) self.assertEqual(1, result) all_qs = Sendable.objects.all() self.assertQuerysetEqual(all_qs, [v], transform=lambda s: s.volunteer)
def testCollectFromAssignment_OneAssignedButEventInPast(self): c, d, v, a, fix_to_date = self.setup_sendable_test() when = datetime.combine(fix_to_date, time(1, 0, 0, 0, pytz.utc)) f.AssignmentFactory(volunteer=v, duty=d, created=when) f.TriggerByAssignmentFactory.create(campaign=c) d.event.date = fix_to_date - timedelta(days=1) d.event.save() result = Sendable.collect_from_assignment(fix_to_date) self.assertEqual(0, result) all_qs = Sendable.objects.all() self.assertQuerysetEqual(all_qs, [])
def testCollectFromAssignment_OnlyAssignedOnRightDayNoOffset(self): c, d, v, a, fix_to_date = self.setup_sendable_test() v2, v3, v4 = f.VolunteerFactory.create_batch(3) when = datetime.combine(fix_to_date, time(1, 0, 0, 0, pytz.utc)) f.AssignmentFactory(volunteer=v, duty=d, created=when - timedelta(1)) f.AssignmentFactory(volunteer=v2, duty=d, created=when) f.AssignmentFactory(volunteer=v3, duty=d, created=when) f.AssignmentFactory(volunteer=v4, duty=d, created=when + timedelta(1)) f.TriggerByAssignmentFactory.create(campaign=c) result = Sendable.collect_from_assignment(fix_to_date) self.assertEqual(2, result) all_qs = Sendable.objects.all().order_by('id') self.assertQuerysetEqual(all_qs, [v3, v2], transform=lambda s: s.volunteer)
def testCollectFromAssignment_MultipleCampaignsDifferentActivites(self): c, d, v, a, fix_to_date = self.setup_sendable_test() c.locations.add(d.location) when = datetime.combine(fix_to_date, time(1, 0, 0, 0, pytz.utc)) f.AssignmentFactory(volunteer=v, duty=d, created=when) # Create and assign event at different location d2 = f.FullDutyFactory() a2 = f.ActivityFactory() d2.event = d.event d2.activity = a2 d2.save() f.AssignmentFactory(volunteer=v, duty=d2, created=when) f.TriggerByAssignmentFactory.create(campaign=c) result = Sendable.collect_from_assignment(fix_to_date) self.assertEqual(1, result) all_qs = Sendable.objects.all() self.assertQuerysetEqual(all_qs, [v], transform=lambda s: s.volunteer)