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")
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)