def testDoubleClose(self): entry = TrackingEntry( user=self.linked_user, entry_date=datetime.datetime.today() + datetime.timedelta(days=3), start_time=datetime.time(9, 0, 0), end_time=datetime.time(20, 45, 0), breaks=datetime.time(0, 15, 0), daytype="WKDAY", ) entry.full_clean() entry.save() entry.create_approval_request() pending = PendingApproval.objects.get(entry=entry) try: # we may be running with a default implementation which # doesn't sent e-mails. from timetracker.tracker.notifications import ( send_overtime_notification, send_pending_overtime_notification, send_undertime_notification) except: return pending.tl_close(True) pending.close(True) self.assertEqual(len(mail.outbox), 1) pending.tl_close(True) pending.close(True) self.assertEqual(len(mail.outbox), 1)
def testDoubleClose(self): entry = TrackingEntry( user=self.linked_user, entry_date=datetime.datetime.today() + datetime.timedelta(days=3), start_time=datetime.time(9, 0, 0), end_time=datetime.time(20, 45, 0), breaks=datetime.time(0, 15, 0), daytype="WKDAY", ) entry.full_clean() entry.save() entry.create_approval_request() pending = PendingApproval.objects.get( entry=entry ) try: # we may be running with a default implementation which # doesn't sent e-mails. from timetracker.tracker.notifications import ( send_overtime_notification, send_pending_overtime_notification, send_undertime_notification ) except: return pending.tl_close(True) pending.close(True) self.assertEqual(len(mail.outbox), 1) pending.tl_close(True) pending.close(True) self.assertEqual(len(mail.outbox), 1)
def testIsHolidayRequest(self): entry = TrackingEntry( user=self.linked_user, entry_date=datetime.datetime.today() + datetime.timedelta(days=5), start_time=datetime.time(9, 0, 0), end_time=datetime.time(20, 45, 0), breaks=datetime.time(0, 15, 0), daytype="PENDI", ) entry.full_clean() entry.save() entry.create_approval_request() pending = PendingApproval.objects.get(entry=entry) self.assertEqual(pending.is_holiday_request(), True)
def testTLDeny(self): entry = TrackingEntry( user=self.linked_user, entry_date=datetime.datetime.today() + datetime.timedelta(days=6), start_time=datetime.time(9, 0, 0), end_time=datetime.time(20, 45, 0), breaks=datetime.time(0, 15, 0), daytype="WKDAY", ) entry.full_clean() entry.save() entry.create_approval_request() pending = PendingApproval.objects.get(entry=entry) pending.tl_close(False) self.assertEqual(len(mail.outbox), 1)
def testIsHolidayRequest(self): entry = TrackingEntry( user=self.linked_user, entry_date=datetime.datetime.today() + datetime.timedelta(days=5), start_time=datetime.time(9, 0, 0), end_time=datetime.time(20, 45, 0), breaks=datetime.time(0, 15, 0), daytype="PENDI", ) entry.full_clean() entry.save() entry.create_approval_request() pending = PendingApproval.objects.get( entry=entry ) self.assertEqual(pending.is_holiday_request(), True)
def testTLDeny(self): entry = TrackingEntry( user=self.linked_user, entry_date=datetime.datetime.today() + datetime.timedelta(days=6), start_time=datetime.time(9, 0, 0), end_time=datetime.time(20, 45, 0), breaks=datetime.time(0, 15, 0), daytype="WKDAY", ) entry.full_clean() entry.save() entry.create_approval_request() pending = PendingApproval.objects.get( entry=entry ) pending.tl_close(False) self.assertEqual(len(mail.outbox), 1)
def testTimeDifferenceZero(self): '''Tests an entry against several rules to make sure our check for whether an entry is or is not overtime is correctly working.''' for date, end in [ ["2012-01-11", "16:45"], ]: entry = TrackingEntry( entry_date=date, user_id=self.linked_user.id, start_time="09:00", end_time=end, breaks="00:15", daytype="WKDAY" ) entry.full_clean() self.assertTrue(entry.time_difference() == 0)
def testIsOvertime(self): '''Tests an entry against several rules to make sure our check for whether an entry is or is not overtime is correctly working.''' for date, end in [ ["2012-01-06", "18:01"], ["2012-01-07", "19:00"], ]: entry = TrackingEntry( entry_date=date, user_id=self.linked_user.id, start_time="09:00", end_time=end, breaks="00:15", daytype="WKDAY" ) entry.full_clean() self.assertTrue(entry.is_overtime())
class ApprovalTest(TestCase): @classmethod def setUpClass(self): create_users(self) self.ot_entry = TrackingEntry( user=self.linked_user, entry_date=datetime.datetime.today(), start_time=datetime.time(0, 0, 0), end_time=datetime.time(17, 0, 0), breaks=datetime.time(0, 15, 0), daytype="WKDAY", ) self.pending_entry = TrackingEntry( user=self.linked_user, entry_date=datetime.datetime.today() + datetime.timedelta(days=123), start_time=datetime.time(9, 0, 0), end_time=datetime.time(17, 0, 0), breaks=datetime.time(0, 15, 0), daytype="PENDI", ) self.entry = TrackingEntry( user=self.linked_user, entry_date=datetime.datetime.today() + datetime.timedelta(days=1), start_time=datetime.time(9, 0, 0), end_time=datetime.time(16, 45, 0), breaks=datetime.time(0, 15, 0), daytype="WKDAY", ) self.ot_entry.full_clean() self.ot_entry.save() self.entry.full_clean() self.entry.save() @classmethod def tearDownClass(self): delete_users(self) def testPendingApprovalDenied(self): self.doapprovaltest(False, "Request for Overtime: Denied.", 0) def testPendingApprovalApproved(self): try: # we may be running with a default implementation which # doesn't sent e-mails. from timetracker.tracker.notifications import ( send_overtime_notification, send_pending_overtime_notification, send_undertime_notification ) except: # pragma: no cover return self.doapprovaltest(True, "Your recent timetracker actions.", 1) @override_settings(UNDER_TIME_ENABLED={M: True for M in MARKET_CHOICES}) def doapprovaltest(self, status, message, attachments): approval = PendingApproval( entry=self.ot_entry, approver=self.linked_manager ) approval.save() approval.close(status) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].subject, message) self.assertEqual(len(mail.outbox[0].attachments), attachments) def test_approvalonpendingtest(self): self.pending_entry.save() approval = PendingApproval( entry=self.pending_entry, approver=self.linked_manager ) approval.save() approval.close(True) self.assertEqual(approval.entry.daytype, "HOLIS") def testNoApprovalRequired(self): # pragma: no cover if not settings.SENDING_APPROVAL.get(self.linked_manager.market): return approval = PendingApproval( entry=self.entry, approver=self.linked_manager ) approval.inform_manager() self.assertEqual(len(mail.outbox), 0) def testApprovalRequired(self): # pragma: no cover if not settings.SENDING_APPROVAL.get(self.linked_manager.market): return approval = PendingApproval( entry=self.ot_entry, approver=self.linked_manager ) approval.inform_manager() self.assertEqual(len(mail.outbox), 1) def testSoftClose(self): entry = TrackingEntry( user=self.linked_user, entry_date=datetime.datetime.today() + datetime.timedelta(days=2), start_time=datetime.time(9, 0, 0), end_time=datetime.time(20, 45, 0), breaks=datetime.time(0, 15, 0), daytype="WKDAY", ) entry.full_clean() entry.save() entry.create_approval_request() pending = PendingApproval.objects.get( entry=entry ) pending.tl_close(True) self.assertEqual(pending.tl_approved, True) def testDoubleClose(self): entry = TrackingEntry( user=self.linked_user, entry_date=datetime.datetime.today() + datetime.timedelta(days=3), start_time=datetime.time(9, 0, 0), end_time=datetime.time(20, 45, 0), breaks=datetime.time(0, 15, 0), daytype="WKDAY", ) entry.full_clean() entry.save() entry.create_approval_request() pending = PendingApproval.objects.get( entry=entry ) try: # we may be running with a default implementation which # doesn't sent e-mails. from timetracker.tracker.notifications import ( send_overtime_notification, send_pending_overtime_notification, send_undertime_notification ) except: return pending.tl_close(True) pending.close(True) self.assertEqual(len(mail.outbox), 1) pending.tl_close(True) pending.close(True) self.assertEqual(len(mail.outbox), 1) def testDeniedClosedMail(self): entry = TrackingEntry( user=self.linked_user, entry_date=datetime.datetime.today() + datetime.timedelta(days=4), start_time=datetime.time(9, 0, 0), end_time=datetime.time(20, 45, 0), breaks=datetime.time(0, 15, 0), daytype="WKDAY", ) entry.full_clean() entry.save() entry.create_approval_request() pending = PendingApproval.objects.get( entry=entry ) pending.tl_close(False) self.assertEqual(len(mail.outbox), 1) def testIsHolidayRequest(self): entry = TrackingEntry( user=self.linked_user, entry_date=datetime.datetime.today() + datetime.timedelta(days=5), start_time=datetime.time(9, 0, 0), end_time=datetime.time(20, 45, 0), breaks=datetime.time(0, 15, 0), daytype="PENDI", ) entry.full_clean() entry.save() entry.create_approval_request() pending = PendingApproval.objects.get( entry=entry ) self.assertEqual(pending.is_holiday_request(), True) def testTLDeny(self): entry = TrackingEntry( user=self.linked_user, entry_date=datetime.datetime.today() + datetime.timedelta(days=6), start_time=datetime.time(9, 0, 0), end_time=datetime.time(20, 45, 0), breaks=datetime.time(0, 15, 0), daytype="WKDAY", ) entry.full_clean() entry.save() entry.create_approval_request() pending = PendingApproval.objects.get( entry=entry ) pending.tl_close(False) self.assertEqual(len(mail.outbox), 1)
class ApprovalTest(TestCase): @classmethod def setUpClass(self): create_users(self) self.ot_entry = TrackingEntry( user=self.linked_user, entry_date=datetime.datetime.today(), start_time=datetime.time(0, 0, 0), end_time=datetime.time(17, 0, 0), breaks=datetime.time(0, 15, 0), daytype="WKDAY", ) self.pending_entry = TrackingEntry( user=self.linked_user, entry_date=datetime.datetime.today() + datetime.timedelta(days=123), start_time=datetime.time(9, 0, 0), end_time=datetime.time(17, 0, 0), breaks=datetime.time(0, 15, 0), daytype="PENDI", ) self.entry = TrackingEntry( user=self.linked_user, entry_date=datetime.datetime.today() + datetime.timedelta(days=1), start_time=datetime.time(9, 0, 0), end_time=datetime.time(16, 45, 0), breaks=datetime.time(0, 15, 0), daytype="WKDAY", ) self.ot_entry.full_clean() self.ot_entry.save() self.entry.full_clean() self.entry.save() @classmethod def tearDownClass(self): delete_users(self) def testPendingApprovalDenied(self): self.doapprovaltest(False, "Request for Overtime: Denied.", 0) def testPendingApprovalApproved(self): try: # we may be running with a default implementation which # doesn't sent e-mails. from timetracker.tracker.notifications import ( send_overtime_notification, send_pending_overtime_notification, send_undertime_notification) except: # pragma: no cover return self.doapprovaltest(True, "Your recent timetracker actions.", 1) @override_settings(UNDER_TIME_ENABLED={M: True for M in MARKET_CHOICES}) def doapprovaltest(self, status, message, attachments): approval = PendingApproval(entry=self.ot_entry, approver=self.linked_manager) approval.save() approval.close(status) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].subject, message) self.assertEqual(len(mail.outbox[0].attachments), attachments) def test_approvalonpendingtest(self): self.pending_entry.save() approval = PendingApproval(entry=self.pending_entry, approver=self.linked_manager) approval.save() approval.close(True) self.assertEqual(approval.entry.daytype, "HOLIS") def testNoApprovalRequired(self): # pragma: no cover if not settings.SENDING_APPROVAL.get(self.linked_manager.market): return approval = PendingApproval(entry=self.entry, approver=self.linked_manager) approval.inform_manager() self.assertEqual(len(mail.outbox), 0) def testApprovalRequired(self): # pragma: no cover if not settings.SENDING_APPROVAL.get(self.linked_manager.market): return approval = PendingApproval(entry=self.ot_entry, approver=self.linked_manager) approval.inform_manager() self.assertEqual(len(mail.outbox), 1) def testSoftClose(self): entry = TrackingEntry( user=self.linked_user, entry_date=datetime.datetime.today() + datetime.timedelta(days=2), start_time=datetime.time(9, 0, 0), end_time=datetime.time(20, 45, 0), breaks=datetime.time(0, 15, 0), daytype="WKDAY", ) entry.full_clean() entry.save() entry.create_approval_request() pending = PendingApproval.objects.get(entry=entry) pending.tl_close(True) self.assertEqual(pending.tl_approved, True) def testDoubleClose(self): entry = TrackingEntry( user=self.linked_user, entry_date=datetime.datetime.today() + datetime.timedelta(days=3), start_time=datetime.time(9, 0, 0), end_time=datetime.time(20, 45, 0), breaks=datetime.time(0, 15, 0), daytype="WKDAY", ) entry.full_clean() entry.save() entry.create_approval_request() pending = PendingApproval.objects.get(entry=entry) try: # we may be running with a default implementation which # doesn't sent e-mails. from timetracker.tracker.notifications import ( send_overtime_notification, send_pending_overtime_notification, send_undertime_notification) except: return pending.tl_close(True) pending.close(True) self.assertEqual(len(mail.outbox), 1) pending.tl_close(True) pending.close(True) self.assertEqual(len(mail.outbox), 1) def testDeniedClosedMail(self): entry = TrackingEntry( user=self.linked_user, entry_date=datetime.datetime.today() + datetime.timedelta(days=4), start_time=datetime.time(9, 0, 0), end_time=datetime.time(20, 45, 0), breaks=datetime.time(0, 15, 0), daytype="WKDAY", ) entry.full_clean() entry.save() entry.create_approval_request() pending = PendingApproval.objects.get(entry=entry) pending.tl_close(False) self.assertEqual(len(mail.outbox), 1) def testIsHolidayRequest(self): entry = TrackingEntry( user=self.linked_user, entry_date=datetime.datetime.today() + datetime.timedelta(days=5), start_time=datetime.time(9, 0, 0), end_time=datetime.time(20, 45, 0), breaks=datetime.time(0, 15, 0), daytype="PENDI", ) entry.full_clean() entry.save() entry.create_approval_request() pending = PendingApproval.objects.get(entry=entry) self.assertEqual(pending.is_holiday_request(), True) def testTLDeny(self): entry = TrackingEntry( user=self.linked_user, entry_date=datetime.datetime.today() + datetime.timedelta(days=6), start_time=datetime.time(9, 0, 0), end_time=datetime.time(20, 45, 0), breaks=datetime.time(0, 15, 0), daytype="WKDAY", ) entry.full_clean() entry.save() entry.create_approval_request() pending = PendingApproval.objects.get(entry=entry) pending.tl_close(False) self.assertEqual(len(mail.outbox), 1)