def test_collect_blown(self): utils.make_workshift_pool_hours() self.assertEqual( ([], [], []), utils.collect_blown(), ) self.assertEqual( ([], [], []), utils.collect_blown(semester=self.semester), ) moment = localtime(now().replace( hour=20, minute=0, second=0, microsecond=0, )) past = moment - timedelta(days=1) WorkshiftInstance.objects.create( info=InstanceInfo.objects.create( title="Closed", pool=self.p1, end_time=time(12), ), closed=True, date=past.date(), semester=self.semester, ) to_close = WorkshiftInstance.objects.create( info=InstanceInfo.objects.create( title="To be closed", pool=self.p1, end_time=time(12), ), date=past.date(), semester=self.semester, ) WorkshiftInstance.objects.create( info=InstanceInfo.objects.create( title="Not Blown", pool=self.p1, end_time=time(12), ), date=moment.date(), semester=self.semester, ) blown = WorkshiftInstance.objects.create( info=InstanceInfo.objects.create( title="Blown", pool=self.p1, end_time=time(12), ), date=past.date(), workshifter=self.profile, semester=self.semester, ) WorkshiftInstance.objects.create( info=InstanceInfo.objects.create( title="Edge Case 1: Not Closed", pool=self.p1, end_time=moment.time(), ), date=moment.date(), semester=self.semester, ) edge_datetime = moment - timedelta( hours=self.p1.verify_cutoff, minutes=1, ) edge_case_2 = WorkshiftInstance.objects.create( info=InstanceInfo.objects.create( title="Edge Case 2: Closed", pool=self.p1, end_time=edge_datetime.time(), ), date=edge_datetime.date(), ) signed_out_1 = WorkshiftInstance.objects.create( info=InstanceInfo.objects.create( title="Workshifter signed out early enough", pool=self.p1, end_time=time(12), ), date=past.date(), semester=self.semester, ) signed_out_2 = WorkshiftInstance.objects.create( info=InstanceInfo.objects.create( title="Workshifter signed out too late", pool=self.p1, end_time=time(12), ), liable=self.profile, date=past.date(), semester=self.semester, ) self.assertEqual( ([to_close, edge_case_2, signed_out_1], [], [blown, signed_out_2]), utils.collect_blown(moment=moment), )
def do(self): utils.collect_blown()