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 testHolidayBalanceDecrement(self): ''' Test for the return decrement total works ''' for day in (("1", "RETRN"), ("2", "RETRN"), ("3", "RETRN")): entry = TrackingEntry( entry_date="2012-01-%s" % day[0], user_id=self.linked_user.id, start_time="00:00:00", end_time="00:00:00", breaks="00:00:00", daytype=day[1], ) entry.save() self.assertEquals(self.linked_user.get_holiday_balance(2012), 17)
def testHolidayBalanceAdd(self): ''' Test for the holiday additional total works ''' for day in (("1", "PUWRK"), ("2", "PUWRK"), ("3", "PUWRK")): entry = TrackingEntry( entry_date="2012-01-%s" % day[0], user_id=self.linked_user.id, start_time="00:00:00", end_time="00:00:00", breaks="00:00:00", daytype=day[1], ) entry.save() self.assertEquals(self.linked_user.get_holiday_balance(2012), 26)
def testHolidayBalanceMix(self): ''' Test to make sure that the holiday balance calculates correctly ''' for day in (("1", "HOLIS"), ("2", "PUWRK"), ("3", "RETRN")): entry = TrackingEntry( entry_date="2012-01-%s" % day[0], user_id=self.linked_user.id, start_time="00:00:00", end_time="00:00:00", breaks="00:00:00", daytype=day[1], ) entry.save() self.assertEquals(self.linked_user.get_holiday_balance(2012), 20)
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)
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)