Example #1
0
class TaskStatusesTestCase(unittest.TestCase):

    def setUp(self):
        self.task = Task('summary')

    def test_summary(self):
        self.assertEqual('summary', self.task.summary, 'Task should store sumammary')

    def test_initial_status_is_new(self):
        self.assertEqual(Status.NEW, self.task.status, 'Initial status should be "New"')

    def test_after_start_status_is_pending(self):
        self.task.start()
        self.assertEqual(Status.PENDING, self.task.status)

    def test_defer_change_status_to_deferred(self):
        self.task.start()
        self.task.defer()
        self.assertEqual(Status.DEFERRED, self.task.status)

    def test_done_change_status_to_done(self):
        self.task.done()
        self.assertEqual(Status.DONE, self.task.status)

    def test_cancel_change_status_to_cancelled(self):
        self.task.cancel()
        self.assertEqual(Status.CANCELLED, self.task.status)
Example #2
0
 def new_task(self, task_name, note=None, due_date=None):
     """Creates a new Task object with name, note and due date.
     If note and due date aren't specified, by default are None.
     Updates the dictionary of Task objects and returns
     the created task."""
     task = Task(task_name, note, due_date)
     self.tasks.update({task.id: task})
     return task
Example #3
0
 def setUp(self):
     self.task = Task('summary')
Example #4
0
class DurationCoputationTestCase(unittest.TestCase):

    def setUp(self):
        self.task = Task('summary')

    def test_initial_duration_is_0(self):
        self.assertEqual(datetime.timedelta(0), self.task.duration)

    @patch_datetime
    def test_duration_get_whole_time_spent_on_task(self, shift_time):
        self.task.start()
        shift_time(minutes=10)
        self.task.defer()
        self.assertEqual(datetime.timedelta(minutes=10), self.task.duration)

        self.task.start()
        shift_time(minutes=10)
        self.task.defer()
        self.assertEqual(datetime.timedelta(minutes=20), self.task.duration,
                         'Duration should be computed properly if task is resumed couple of times.')

    def test_default_estimate_is_None(self):
        self.assertIsNone(self.task.estimate)

    @patch_datetime
    def test_remain_is_estimate_minus_duration(self, shift_time):
        self.task.estimate = datetime.timedelta(minutes=60)
        self.task.start()
        shift_time(minutes=30)
        self.assertEqual(datetime.timedelta(minutes=30), self.task.remain)

    @patch_datetime
    def test_remain_can_not_be_negative(self, shift_time):
        self.task.estimate = datetime.timedelta(minutes=60)
        self.task.start()
        shift_time(minutes=70)
        self.assertEqual(datetime.timedelta(0), self.task.remain)

    @patch_datetime
    def test_deviation_is_always_0_if_estimate_is_None(self, shift_time):
        self.assertEqual(datetime.timedelta(0), self.task.deviation)
        self.task.start()
        shift_time(days=2)
        self.assertEqual(datetime.timedelta(0), self.task.deviation)

    @patch_datetime
    def test_deviation_is_negative_if_task_is_late(self, shift_time):
        self.task.estimate = datetime.timedelta(minutes=60)
        self.task.start()
        shift_time(minutes=70)
        self.assertEqual(datetime.timedelta(minutes=-10), self.task.deviation)

    @patch_datetime
    def test_deviation_is_zero_if_task_is_on_time(self, shift_time):
        """deviation = estimate - (actual + remain)"""
        self.task.estimate = datetime.timedelta(minutes=60)
        self.task.start()
        shift_time(minutes=50)
        self.assertEqual(datetime.timedelta(0), self.task.deviation)
        shift_time(minutes=10)
        self.assertEqual(datetime.timedelta(0), self.task.deviation)

    @patch_datetime
    def test_deviation_is_positive_if_task_is_done_earlier_than_expected(self, shift_time):
        self.task.estimate = datetime.timedelta(minutes=60)
        self.task.start()
        shift_time(minutes=50)
        self.task.done()
        self.assertEqual(datetime.timedelta(minutes=10), self.task.deviation)

    @patch_datetime
    def test_pending_task_takes_into_account_time_from_last_start(self, shift_time):
        self.task.start()
        shift_time(minutes=10)
        self.assertEqual(datetime.timedelta(minutes=10), self.task.duration)

    @patch_datetime
    def test_marking_task_as_done_properly_updates_duration_time(self, shift_time):
        self.task.start()
        shift_time(minutes=10)
        self.task.done()
        self.assertEqual(datetime.timedelta(minutes=10), self.task.duration)

    @patch_datetime
    def test_marking_task_as_cancelled_properly_updates_duration_time(self, shift_time):
        self.task.start()
        shift_time(minutes=10)
        self.task.cancel()
        self.assertEqual(datetime.timedelta(minutes=10), self.task.duration)