def setUp(self) -> None: self.api = RestApi() self.tasks = Tasks() self.task = Task() self.today = Today() self.tasks.remove_all() self.util = Common()
def test_reschedule_tasks(self): tasks = Tasks(self.db) tasks.clear_objects() tasks.add("task1", "label1", "project1", "2021-10-22") task1 = tasks.get_task_by_name("task1") self.assertIsNotNone(task1) # Deleted tasks should not be rescheduled tasks.add("task2", "label2", "project2", "2021-10-22") task2 = tasks.get_task_by_name("task2") self.assertIsNotNone(task2) tasks.delete(task2.unique_id) # Completed tasks should not be rescheduled tasks.add("task3", "label3", "project3", "2021-10-22") task3 = tasks.get_task_by_name("task3") self.assertIsNotNone(task3) tasks.complete(task3.unique_id) today = Today() tasks.reschedule(today) task_list = tasks.get_tasks_by_date(today.to_date_string()) self.assertTrue(len(task_list) == 1) rescheduled_task = task_list[0] self.assertEqual(rescheduled_task.text, "task1") self.assertEqual(rescheduled_task.label, "label1") self.assertEqual(rescheduled_task.project, "project1")
def test_count_by_date(self): self.tasks.add("task1", "label1", "project1", "today") date_string = Today().to_date_string() snapshot_list = self.client.count_tasks_by_due_date( date_string, **{"page": 1}) self.assertTrue(len(snapshot_list) == 1) snapshot = snapshot_list[0] self.assertTrue(snapshot.count == 1)
def test_count_by_project(self): date_string = Today().to_date_string() self.tasks.add("task1", "current", "work", date_string) self.tasks.add("task2", "current", "work", date_string) self.tasks.add("task3", "current", "work", date_string) snapshot_list = self.client.count_tasks_by_project( "work", **{"page": 1}) self.assertTrue(len(snapshot_list) == 1) snapshot = snapshot_list[0] self.assertTrue(snapshot.count == 3)
def test_task_is_complete(self): tasks = Tasks(self.db) tasks.clear_objects() tasks.add("Simple Task", "current", "home", "today") task_list = tasks.get_object_list() self.assertTrue(len(task_list) == 1) task1 = task_list[0] self.assertTrue(task1.due_date.date_string == Today().to_date_string()) task1.complete() self.assertTrue(task1.is_completed())
def test_reset(self): tasks = Tasks(self.db) tasks.clear_objects() tasks.add("InitialTask", "current", "home", "2020-05-11") initial_task = tasks.get_task_by_name("InitialTask") tasks.reset(initial_task.unique_id) self.assertEqual(initial_task.due_date.date_string, "2020-05-11") modified_task = tasks.get_task_by_name("InitialTask") current_date_string = Today().to_date_string() self.assertTrue( modified_task.due_date.date_string == current_date_string)
def reset(self, task_id: str) -> Task: """ Resets the due date to today on the selected task :param task_id: :return: """ assert type(task_id) is str task = self.get_task_by_id(task_id) if task is not None: due_date = DueDate() due_date.completed = False due_date.date_string = Today().to_date_string() task.due_date = due_date self.replace_object(task.index, task) return task else: raise TaskKeyError()
def filter_tasks_by_today(self) -> List[Task]: date_string = Today().to_date_string() task_list = self.tasks.get_tasks_by_date(date_string) return self.display_tasks(task_list)
def reschedule_tasks(self, today=Today()): self.tasks.reschedule(today)
class TestTaskFiltering(unittest.TestCase): def setUp(self) -> None: self.api = RestApi() self.tasks = Tasks() self.task = Task() self.today = Today() self.tasks.remove_all() self.util = Common() def tearDown(self) -> None: pass def test_filter_by_due_date(self): self.tasks.add("task1", "project1", "label1", "2019-03-01") self.tasks.add("task2", "project1", "label1", "2019-03-01") self.tasks.add("task3", "project1", "label1", "2019-03-01") self.tasks.reschedule() response = self.tasks.filter_by_due_date(self.today.to_date_string()) self.assertTrue(self.util.verify_structure(response)) self.assertTrue(self.util.count_tasks(response) == 3) def test_filter_by_project(self): self.tasks.add("task1", "project1", "label1", "today") self.tasks.add("task2", "project1", "label1", "today") self.tasks.add("task3", "project1", "label1", "today") response = self.tasks.filter_by_project("project1") self.assertTrue(self.util.verify_structure(response)) self.assertTrue(self.util.count_tasks(response) == 3) def test_filter_by_text(self): self.tasks.add("my_task", "project1", "label1", "today") response = self.tasks.filter_by_text("my_task") self.assertTrue(self.util.verify_structure(response)) self.assertTrue(self.util.count_tasks(response) == 1) def test_filter_by_label(self): self.tasks.add("task1", "project1", "my_label", "today") response = self.tasks.filter_by_label("my_label") self.assertTrue(self.util.verify_structure(response)) self.assertTrue(self.util.count_tasks(response) == 1) def test_filter_by_status(self): response = self.tasks.add("task1", "project1", "label1", "today") uuid = util.get(response, "tasks/0/unique_id") response = self.tasks.filter_by_status("incomplete") self.assertTrue(self.util.verify_structure(response)) self.assertTrue(self.util.count_tasks(response) == 1) response = self.task.complete_task(uuid) self.assertTrue(self.util.verify_structure(response)) response = self.tasks.filter_by_status("complete") self.assertTrue(self.util.count_tasks(response) == 1) response = self.task.incomplete_task(uuid) self.assertTrue(self.util.verify_structure(response)) self.assertTrue(self.util.count_tasks(response) == 1) def test_filter_by_due_date_range(self): self.tasks.add("task1", "project1", "label1", "2019-03-02") self.tasks.add("task2", "project1", "label1", "2019-03-05") self.tasks.add("task3", "project1", "label1", "2019-03-08") response = self.tasks.filter_by_due_date_range("2019-03-01", "2019-03-05") self.assertTrue(self.util.verify_structure(response)) self.assertTrue(self.util.count_tasks(response) == 1) response = self.tasks.filter_by_due_date_range("2019-03-01", "2019-03-09") self.assertTrue(self.util.count_tasks(response) == 3)
class TestDateGenerator(unittest.TestCase): def match_date(self, current_date_string, date_expression, expected_date_string): current_date_time = datetime.strptime(current_date_string, CommonVariables().date_format) self.date_generator.current_day = Day(current_date_time) due_date_list = self.date_generator.get_due_dates(date_expression) return due_date_list[0].date_string == expected_date_string def get_date_count(self, current_date_string, date_expression): current_date_time = datetime.strptime(current_date_string, CommonVariables().date_format) self.date_generator.current_day = Day(current_date_time) due_date_list = self.date_generator.get_due_dates(date_expression) return len(due_date_list) def setUp(self): self.today = Today() self.vars = CommonVariables() self.date_generator = DateGenerator() self.march1 = datetime.strptime('2019-03-01', self.vars.date_format) def tearDown(self): pass def test_pad_number(self): current_date_time = datetime.strptime('2019-03-12', self.vars.date_format) day = Day(current_date_time) date_list = day.to_date_list() self.assertListEqual(date_list, ['2019-03-12']) def test_get_date_when_in_same_week(self): self.assertTrue(self.match_date('2019-03-12', 'w', '2019-03-13')) def test_get_date_when_in_next_week(self): self.assertTrue(self.match_date('2019-03-12', 'm', '2019-03-18')) def test_get_date_when_in_next_month(self): self.assertTrue(self.match_date('2019-03-29', 'tu', '2019-04-02')) def test_get_date_when_today(self): self.assertTrue( self.match_date(self.today.to_date_string(), 'today', self.today.to_date_string())) def test_get_date_when_tomorrow(self): self.assertTrue(self.match_date('2019-03-29', 'tomorrow', '2019-03-30')) def test_get_date_when_next_week(self): self.assertTrue( self.match_date('2019-03-17', 'next week', '2019-03-18')) self.assertTrue( self.match_date('2019-03-18', 'next week', '2019-03-25')) self.assertTrue( self.match_date('2019-03-29', 'next week', '2019-04-01')) def test_get_date_when_next_month(self): self.assertTrue( self.match_date('2019-07-02', 'next month', '2019-08-01')) self.assertTrue( self.match_date('2019-12-02', 'next month', '2020-01-01')) def test_get_date_when_every_day(self): self.date_generator.current_day = Day(self.march1) due_date_list = self.date_generator.get_due_dates("every day") self.assertTrue(len(due_date_list) == 62) def test_get_date_count_when_every_weekday(self): self.vars.recurring_month_limit = 2 day_count = self.get_date_count('2019-03-01', 'every weekday') self.assertTrue(day_count == 44) def test_get_date_when_every_weekday(self): self.vars.recurring_month_limit = 2 self.date_generator.current_day = Day(self.march1) due_date_list = self.date_generator.get_due_dates("every weekday") self.assertTrue(len(due_date_list) == 44) self.assertTrue(due_date_list[0].date_string == "2019-03-01") self.assertTrue(due_date_list[1].date_string == "2019-03-04") self.assertTrue(due_date_list[2].date_string == "2019-03-05") self.assertTrue(due_date_list[3].date_string == "2019-03-06") self.assertTrue(due_date_list[4].date_string == "2019-03-07") def test_get_date_when_every_sunday(self): self.vars.recurring_month_limit = 2 self.assertTrue(self.get_date_count('2019-03-01', 'every su') == 9) def test_get_date_when_every_monday(self): self.vars.recurring_month_limit = 2 self.assertTrue(self.get_date_count('2019-03-01', 'every m') == 9) def test_get_date_when_every_tuesday(self): self.vars.recurring_month_limit = 2 self.assertTrue(self.get_date_count('2019-03-01', 'every tu') == 9) def test_get_date_when_every_wednesday(self): self.vars.recurring_month_limit = 2 self.assertTrue(self.get_date_count('2019-03-01', 'every w') == 9) def test_get_date_when_every_thursday(self): self.vars.recurring_month_limit = 2 self.assertTrue(self.get_date_count('2019-03-01', 'every th') == 8) def test_get_date_when_every_friday(self): self.vars.recurring_month_limit = 2 day_count = self.get_date_count('2019-03-01', 'every f') self.assertTrue(day_count == 9) def test_get_date_when_every_saturday(self): self.vars.recurring_month_limit = 2 self.assertTrue(self.get_date_count('2019-03-01', 'every sa') == 9) def test_short_date(self): due_date_list = self.date_generator.get_due_dates("apr 14") self.assertTrue(len(due_date_list) == 1) self.assertTrue(due_date_list[0].date_string == '2021-04-14') def test_validate_input(self): self.assertTrue(self.date_generator.validate_input("every weekday")) self.assertTrue(self.date_generator.validate_input("every tu")) self.assertTrue(self.date_generator.validate_input("m")) self.assertTrue(self.date_generator.validate_input("today")) self.assertFalse(self.date_generator.validate_input("every")) self.assertFalse(self.date_generator.validate_input("24")) self.assertFalse(self.date_generator.validate_input("monday")) self.assertTrue(self.date_generator.validate_input("apr 21")) self.assertFalse(self.date_generator.validate_input("apr")) def test_empty_date_handler(self): due_date_list = self.date_generator.get_due_dates("empty") self.assertTrue(len(due_date_list) == 1) due_date = due_date_list[0] self.assertEqual(due_date.date_string, "") self.assertFalse(due_date.completed) def test_year_month_date_handler(self): due_date_list = self.date_generator.get_due_dates("2019-03-019") self.assertTrue(len(due_date_list) == 1) self.assertFalse(due_date_list[0].completed) due_date_list = self.date_generator.get_due_dates("2019-03-01") self.assertTrue(len(due_date_list) == 1) self.assertFalse(due_date_list[0].completed) self.assertTrue(due_date_list[0].date_string == "2019-03-01") def test_get_due_date(self): due_date = self.date_generator.get_due_date("this week") self.assertTrue(len(due_date.date_string) == 0) due_date = self.date_generator.get_due_date("sep 24") self.assertIn("09-24", due_date.date_string)
def setUp(self): self.today = Today() self.vars = CommonVariables() self.date_generator = DateGenerator() self.march1 = datetime.strptime('2019-03-01', self.vars.date_format)