コード例 #1
0
 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)
コード例 #2
0
ファイル: tests.py プロジェクト: AeroNotix/django-timetracker
 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)
コード例 #3
0
 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)
コード例 #4
0
 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)
コード例 #5
0
ファイル: tests.py プロジェクト: AeroNotix/django-timetracker
 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)
コード例 #6
0
ファイル: tests.py プロジェクト: AeroNotix/django-timetracker
 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)
コード例 #7
0
ファイル: tests.py プロジェクト: foonnnnn/django-timetracker
 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)
コード例 #8
0
ファイル: tests.py プロジェクト: foonnnnn/django-timetracker
 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())
コード例 #9
0
ファイル: tests.py プロジェクト: AeroNotix/django-timetracker
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)
コード例 #10
0
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)