def test_overtime_work_yesterday_overtime_today(self):
     self.journal.actions[0].dt -= datetime.timedelta(days=1, minutes=36)
     self.journal.tasks.append(
         journal.Task(name='test_task',
                      time=15,
                      task_type=journal.TASK_WORK_TYPE,
                      completed=False))
     self.journal.actions.append(
         journal.Action(action=journal.TASK_SWITCH,
                        task_id=0,
                        dt=datetime.datetime.now() -
                        datetime.timedelta(days=1, minutes=36)))
     self.journal.actions.append(
         journal.Action(action=journal.TASK_PAUSE,
                        task_id=-1,
                        dt=datetime.datetime.now() -
                        datetime.timedelta(days=1, minutes=26)))
     self.journal.actions.append(
         journal.Action(action=journal.TASK_SWITCH,
                        task_id=0,
                        dt=datetime.datetime.now() -
                        datetime.timedelta(minutes=26)))
     self.journal.actions.append(
         journal.Action(action=journal.TASK_PAUSE,
                        task_id=-1,
                        dt=datetime.datetime.now() -
                        datetime.timedelta(minutes=16)))
     num_overtime, time_overtime = self.journal.count_overtime(
         datetime.date.today(), 1)
     self.assertEqual(num_overtime, 1)
     self.assertEqual(time_overtime, 5 * 60)
 def test_adjust_timing_cancel_fail(self):
     self.journal.actions[0].dt -= datetime.timedelta(minutes=10)
     self.journal.tasks.append(
         journal.Task(name='test_task',
                      time=10,
                      task_type=journal.TASK_WORK_TYPE,
                      completed=False))
     self.journal.actions.append(
         journal.Action(action=journal.TASK_SWITCH,
                        task_id=0,
                        dt=datetime.datetime.now() -
                        datetime.timedelta(minutes=10)))
     self.journal.actions.append(
         journal.Action(action=journal.TASK_WALK,
                        task_id=-1,
                        dt=datetime.datetime.now() -
                        datetime.timedelta(minutes=2)))
     self.input_values.append('')  # How many
     self.input_values.append('2')  # Which
     self.input_values.append('3')  # By how much
     self.input_values.append('n')  # if you continue
     self.journal.adjust_timing()
     self.assertTrue("unable" not in printed.getvalue())
     self.assertTrue("cancelled" in printed.getvalue())
     self.assertEqual(
         8,
         self.journal.count_time_in_action(journal.TASK_SWITCH, 0) / 60)
 def test_adjust_timing_yescurrent_zerodisplaced(self):
     self.journal.actions[0].dt -= datetime.timedelta(hours=1, minutes=10)
     self.journal.tasks.append(
         journal.Task(name='test_task',
                      time=10,
                      task_type=journal.TASK_WORK_TYPE,
                      completed=False))
     self.journal.actions.append(
         journal.Action(action=journal.TASK_SWITCH,
                        task_id=0,
                        dt=datetime.datetime.now() -
                        datetime.timedelta(hours=1, minutes=10)))
     self.journal.actions.append(
         journal.Action(action=journal.TASK_WALK,
                        task_id=-1,
                        dt=datetime.datetime.now() -
                        datetime.timedelta(hours=1, minutes=5)))
     self.input_values.append('1')
     self.input_values.append('2')
     self.input_values.append('1:03:00')
     self.input_values.append('y')
     self.journal.adjust_timing()
     self.assertTrue("Was unable" not in printed.getvalue())
     self.assertTrue("invalid" not in printed.getvalue())
     self.assertTrue("cancelled" not in printed.getvalue())
     self.assertEqual(
         68,
         self.journal.count_time_in_action(journal.TASK_SWITCH, 0) / 60)
     self.assertEqual(journal.TASK_WALK, self.journal.actions[-1].action)
 def test_count_time_in_action_switch_yesprevious_yescurrent_24hours(self):
     self.journal.actions[0].dt -= datetime.timedelta(days=2, minutes=36)
     self.journal.tasks.append(
         journal.Task(name='test_task',
                      time=40,
                      task_type=journal.TASK_WORK_TYPE,
                      completed=False))
     self.journal.actions.append(
         journal.Action(action=journal.TASK_SWITCH,
                        task_id=0,
                        dt=datetime.datetime.now() -
                        datetime.timedelta(days=2, minutes=36)))
     self.journal.actions.append(
         journal.Action(action=journal.TASK_PAUSE,
                        task_id=-1,
                        dt=datetime.datetime.now() -
                        datetime.timedelta(days=2, minutes=12)))
     self.journal.actions.append(
         journal.Action(action=journal.TASK_SWITCH,
                        task_id=0,
                        dt=datetime.datetime.now() -
                        datetime.timedelta(days=1, minutes=8)))
     self.journal.actions.append(
         journal.Action(action=journal.TASK_PAUSE,
                        task_id=-1,
                        dt=datetime.datetime.now() -
                        datetime.timedelta(days=1)))
     time = self.journal.count_time_in_action(
         journal.TASK_SWITCH, 0,
         datetime.date.today() - datetime.timedelta(days=1), None)
     self.assertEqual(8, time / 60)
 def test_switch_task_toaddtasks_ainans(self):
     self.journal.actions[0].dt -= datetime.timedelta(minutes=10)
     self.journal.tasks.append(
         journal.Task(name='test_task',
                      time=10,
                      task_type=journal.TASK_PERS_TYPE,
                      completed=False))
     journal.switch_task(self.journal, 'a')
     self.assertEqual(journal.TASK_ADD_TASKS, self.journal.cur_action)
     self.assertEqual(-1, self.journal.cur_action_key)
 def test_switch_task_towork_allinans(self):
     self.journal.actions[0].dt -= datetime.timedelta(minutes=10)
     self.journal.tasks.append(
         journal.Task(name='test_task',
                      time=10,
                      task_type=journal.TASK_WORK_TYPE,
                      completed=False))
     journal.switch_task(self.journal, 'w0')
     self.assertEqual(journal.TASK_SWITCH, self.journal.cur_action)
     self.assertEqual(0, self.journal.cur_action_key)
 def test_list_tasks(self):
     self.journal.tasks.append(
         journal.Task(name='test_task',
                      time=10,
                      task_type=journal.TASK_WORK_TYPE,
                      completed=False))
     self.journal.list_tasks()
     printed_lines = printed.getvalue().strip().split('\n')
     self.assertEqual(1, len(printed_lines))
     self.assertTrue("test_task" in printed_lines[0])
 def test_switch_task_topers_pinans_wascompleted(self):
     self.journal.actions[0].dt -= datetime.timedelta(minutes=10)
     self.journal.tasks.append(
         journal.Task(name='test_task',
                      time=10,
                      task_type=journal.TASK_PERS_TYPE,
                      completed=True))
     self.input_values.append('0')  # What task
     self.input_values.append('y')  # change its status
     journal.switch_task(self.journal, 'p')
     self.assertFalse(self.journal.tasks[0].completed)
     self.assertEqual(journal.TASK_SWITCH, self.journal.cur_action)
     self.assertEqual(0, self.journal.cur_action_key)
 def test_adjust_timing_nocurrent_onedisplaced(self):
     self.journal.actions[0].dt -= datetime.timedelta(minutes=10)
     self.journal.tasks.append(
         journal.Task(name='test_task',
                      time=10,
                      task_type=journal.TASK_WORK_TYPE,
                      completed=False))
     self.journal.actions.append(
         journal.Action(action=journal.TASK_SWITCH,
                        task_id=0,
                        dt=datetime.datetime.now() -
                        datetime.timedelta(minutes=10)))
     self.journal.actions.append(
         journal.Action(action=journal.TASK_LUNCH,
                        task_id=-1,
                        dt=datetime.datetime.now() -
                        datetime.timedelta(minutes=9)))
     self.journal.actions.append(
         journal.Action(action=journal.TASK_WALK,
                        task_id=-1,
                        dt=datetime.datetime.now() -
                        datetime.timedelta(minutes=2)))
     self.journal.actions.append(
         journal.Action(action=journal.TASK_SWITCH,
                        task_id=0,
                        dt=datetime.datetime.now() -
                        datetime.timedelta(minutes=2)))
     self.input_values.append('')
     self.input_values.append('4')
     self.input_values.append('-5:01')
     self.input_values.append('y')
     self.journal.adjust_timing()
     self.assertTrue("Was unable" not in printed.getvalue())
     self.assertTrue("invalid" not in printed.getvalue())
     self.assertTrue("cancelled" not in printed.getvalue())
     self.assertEqual(
         6,
         int(
             self.journal.count_time_in_action(journal.TASK_SWITCH, 0) /
             60))
     self.assertEqual(
         1,
         int(
             self.journal.count_time_in_action(journal.TASK_LUNCH, -1) /
             60))
     self.assertEqual(
         2,
         int(self.journal.count_time_in_action(journal.TASK_WALK, -1) / 60))
     self.assertEqual(journal.TASK_WALK, self.journal.actions[-1].action)
     self.assertEqual(journal.TASK_WALK, self.journal.cur_action)
     self.assertEqual(-1, self.journal.cur_action_key)
 def test_switch_task_towork_wascompleted_nocomplete(self):
     self.journal.actions[0].dt -= datetime.timedelta(minutes=10)
     self.journal.tasks.append(
         journal.Task(name='test_task',
                      time=10,
                      task_type=journal.TASK_WORK_TYPE,
                      completed=True))
     self.input_values.append('w')  # (w)ork task
     self.input_values.append('0')  # What task
     self.input_values.append('n')  # change its status
     journal.switch_task(self.journal, '')
     self.assertEqual(journal.TASK_ADD_TASKS, self.journal.cur_action)
     self.assertEqual(-1, self.journal.cur_action_key)
     self.assertTrue(self.journal.tasks[0].completed)
 def test_count_time_in_action_switch_noprevious_yescurrent_today(self):
     self.journal.actions[0].dt -= datetime.timedelta(minutes=10)
     self.journal.tasks.append(
         journal.Task(name='test_task',
                      time=10,
                      task_type=journal.TASK_WORK_TYPE,
                      completed=False))
     self.journal.actions.append(
         journal.Action(action=journal.TASK_SWITCH,
                        task_id=0,
                        dt=datetime.datetime.now() -
                        datetime.timedelta(minutes=5)))
     time = self.journal.count_time_in_action(journal.TASK_SWITCH, 0)
     self.assertEqual(5, time / 60)
 def test_overtime_no_overtime(self):
     self.journal.actions[0].dt -= datetime.timedelta(minutes=36)
     self.journal.tasks.append(
         journal.Task(name='test_task',
                      time=5,
                      task_type=journal.TASK_WORK_TYPE,
                      completed=False))
     self.journal.actions.append(
         journal.Action(action=journal.TASK_SWITCH,
                        task_id=0,
                        dt=datetime.datetime.now() -
                        datetime.timedelta(minutes=4)))
     num_overtime, time_overtime = self.journal.count_overtime()
     self.assertEqual(num_overtime, 0)
     self.assertEqual(time_overtime, 0)
 def test_complete_query_yesinans_nobeatestimation(self):
     self.journal.actions[0].dt -= datetime.timedelta(minutes=10, seconds=5)
     self.journal.tasks.append(
         journal.Task(name='test_task',
                      time=5,
                      task_type=journal.TASK_WORK_TYPE,
                      completed=False))
     self.journal.actions.append(
         journal.Action(action=journal.TASK_SWITCH,
                        task_id=0,
                        dt=datetime.datetime.now() -
                        datetime.timedelta(minutes=10, seconds=5)))
     self.journal.cur_action = journal.TASK_SWITCH
     self.journal.cur_action_key = 0
     journal.complete_query(self.journal, "y")
     self.assertTrue("You took 5 minutes" in printed.getvalue())
     self.assertTrue(self.journal.tasks[0].completed)
 def test_complete_query_emptyans_invalchar(self):
     self.journal.actions[0].dt -= datetime.timedelta(minutes=10)
     self.journal.tasks.append(
         journal.Task(name='test_task',
                      time=10,
                      task_type=journal.TASK_WORK_TYPE,
                      completed=False))
     self.journal.actions.append(
         journal.Action(action=journal.TASK_SWITCH,
                        task_id=0,
                        dt=datetime.datetime.now() -
                        datetime.timedelta(minutes=10)))
     self.journal.cur_action = journal.TASK_SWITCH
     self.journal.cur_action_key = 0
     self.input_values.append('Hello World!')
     journal.complete_query(self.journal, "")
     self.assertTrue("Operation aborted" in printed.getvalue())
     self.assertFalse(self.journal.tasks[0].completed)
 def test_complete_query_noinans(self):
     self.journal.actions[0].dt -= datetime.timedelta(minutes=10)
     self.journal.tasks.append(
         journal.Task(name='test_task',
                      time=10,
                      task_type=journal.TASK_WORK_TYPE,
                      completed=False))
     self.journal.actions.append(
         journal.Action(action=journal.TASK_SWITCH,
                        task_id=0,
                        dt=datetime.datetime.now() -
                        datetime.timedelta(minutes=10)))
     self.journal.cur_action = journal.TASK_SWITCH
     self.journal.cur_action_key = 0
     journal.complete_query(self.journal, "n")
     self.assertFalse(
         "beat your estimation by 9 minutes" in printed.getvalue())
     self.assertFalse(self.journal.tasks[0].completed)
 def test_list_actions_select_some(self):
     self.journal.tasks.append(
         journal.Task(name='test_task',
                      time=10,
                      task_type=journal.TASK_WORK_TYPE,
                      completed=False))
     self.journal.actions.append(
         journal.Action(action=journal.TASK_SWITCH,
                        task_id=0,
                        dt=datetime.datetime.now()))
     self.journal.actions.append(
         journal.Action(action=journal.TASK_WALK,
                        task_id=-1,
                        dt=datetime.datetime.now()))
     self.input_values.append('2')
     self.journal.list_actions()
     printed_lines = printed.getvalue().strip().split('\n')
     self.assertEqual(3, len(printed_lines))