def plan_handler(service: AppService, namespace): if namespace.action == 'create': plan = service.create_plan(user=namespace.user, task_id=namespace.task_id, period_amount=namespace.period_amount, period=namespace.period, repetitions_amount=namespace.plan_amount, start_date=namespace.start_date, end_date=namespace.end_date) print('Created plan:') print(plan) elif namespace.action == 'show': plan_show_handlers(service, namespace) elif namespace.action == 'edit': plan = service.update_plan(user=namespace.user, plan_id=namespace.plan_id, period_amount=namespace.period_amount, period=namespace.period, repetitions_amount=namespace.plan_amount, end_date=namespace.end_date) print('Updated plan:') print(plan) elif namespace.action == 'delete': service.delete_plan(user=namespace.user, plan_id=namespace.plan_id) print(f'Plan(ID={namespace.plan_id}) has been deleted')
class TaskTest(unittest.TestCase): def setUp(self): session = mo.set_up_connection(DRIVER_NAME, CONNECTIONSTRING) self.serv = AppService(session) def test_create_task(self): parent_task = self.serv.create_task( user=TEST_USER, name=TEST_NAME, ) task = self.serv.create_task(user=TEST_USER, name=TEST_NAME, description=TEST_DESCRIPTION, start_date=TEST_DATE_FIRST, end_date=TEST_DATE_SECOND, priority=TEST_PRIORITY_VALUE, status=TEST_STATUS_VALUE, parent_task_id=parent_task.id) self.assertEqual(task.owner, TEST_USER) self.assertEqual(task.name, TEST_NAME) self.assertEqual(task.description, TEST_DESCRIPTION) self.assertEqual(task.priority, TEST_PRIORITY) self.assertEqual(task.status, TEST_STATUS) self.assertEqual(task.start_date, TEST_DATE_FIRST) self.assertEqual(task.end_date, TEST_DATE_SECOND) self.assertEqual(task.parent_task_id, parent_task.id) with self.assertRaises(KeyError): self.serv.create_task(user=TEST_USER, name=TEST_NAME, status=TEST_RANDOM_STR) with self.assertRaises(KeyError): self.serv.create_task(user=TEST_USER, name=TEST_NAME, priority=TEST_RANDOM_STR) plan = self.serv.create_plan(user=TEST_USER, task_id=task.id, period=TEST_PERIOD_VALUE, period_amount=TEST_RANDOM_INT) with self.assertRaises(ValueError): subtask = self.serv.create_task(user=TEST_USER, name=TEST_NAME, parent_task_id=task.id) def test_update_task(self): task = self.serv.create_task(user=TEST_USER, name='TEST_NAME', description='TEST_DESCRIPTION', start_date=datetime(2018, 4, 4, 19, 00), end_date=datetime(2018, 4, 4, 21, 00), priority='low', status='todo') self.serv.update_task(user=TEST_USER, task_id=task.id, name=TEST_NAME, description=TEST_DESCRIPTION, start_date=TEST_DATE_FIRST, end_date=TEST_DATE_SECOND, priority=TEST_PRIORITY_VALUE, status=TEST_STATUS_VALUE) self.assertEqual(task.name, TEST_NAME) self.assertEqual(task.description, TEST_DESCRIPTION) self.assertEqual(task.priority, TEST_PRIORITY) self.assertEqual(task.status, TEST_STATUS) self.assertEqual(task.start_date, TEST_DATE_FIRST) self.assertEqual(task.end_date, TEST_DATE_SECOND) with self.assertRaises(ValueError): self.serv.update_task(user=TEST_USER, task_id=task.id, name=TEST_NAME, start_date=TEST_DATE_SECOND, end_date=TEST_DATE_FIRST) with self.assertRaises(ValueError): self.serv.update_task(user=TEST_USER, task_id=task.id, name=TEST_NAME, end_date=TEST_DATE_FIRST) with self.assertRaises(ValueError): self.serv.update_task(user=TEST_USER, task_id=task.id, name=TEST_NAME, start_date=TEST_DATE_SECOND) with self.assertRaises(KeyError): self.serv.update_task(user=TEST_USER, task_id=task.id, name=TEST_NAME, priority=TEST_RANDOM_STR) with self.assertRaises(KeyError): self.serv.update_task(user=TEST_USER, task_id=task.id, name=TEST_NAME, status=TEST_RANDOM_STR) with self.assertRaises(KeyError): self.serv.update_task(user=TEST_USER, task_id=task.id, name=TEST_NAME, status=TEST_RANDOM_STR) def test_get_task_user_relation(self): task = self.serv.create_task(user=TEST_USER, name=TEST_NAME) rel = self.serv.get_task_user_relation(user=TEST_USER, task_id=task.id) self.assertTrue(rel) rel = self.serv.get_task_user_relation(user=TEST_USER, task_id=100) self.assertIsNone(rel) rel = self.serv.get_task_user_relation(user=TEST_RECEIVER, task_id=task.id) self.assertIsNone(rel) def test_get_task(self): task_created = self.serv.create_task(user=TEST_USER, name=TEST_NAME) task_expected = self.serv.get_task(user=TEST_USER, task_id=task_created.id) self.assertEqual(task_created, task_expected) with self.assertRaises(ex.ObjectNotFound): self.serv.get_task(user=TEST_RECEIVER, task_id=task_created.id) self.serv.get_task(user=TEST_USER, task_id=TEST_RANDOM_INT) def test_assign_user(self): task = self.serv.create_task(user=TEST_USER, name=TEST_NAME) self.serv.assign_user(user=TEST_USER, task_id=task.id, user_receiver=TEST_RECEIVER) self.assertTrue(task.assigned, TEST_RECEIVER) self.assertIn(TEST_RECEIVER, [rel.user for rel in task.members]) with self.assertWarns(ex.RedundancyAction): self.serv.assign_user(user=TEST_USER, task_id=task.id, user_receiver=TEST_RECEIVER) def test_share_task(self): task = self.serv.create_task(user=TEST_USER, name=TEST_NAME) with self.assertRaises(ex.ObjectNotFound): self.serv.get_task(user=TEST_RECEIVER, task_id=task.id) self.serv.share_task(user=TEST_USER, task_id=task.id, user_receiver=TEST_RECEIVER) task_rec = self.serv.get_task(user=TEST_RECEIVER, task_id=task.id) self.assertEqual(task, task_rec) with self.assertWarns(ex.RedundancyAction): self.serv.share_task(user=TEST_USER, task_id=task.id, user_receiver=TEST_RECEIVER) def test_unshare_task(self): task = self.serv.create_task(user=TEST_USER, name=TEST_NAME) with self.assertRaises(ValueError): self.serv.unshare_task(user=TEST_USER, task_id=task.id, user_receiver=TEST_USER) with self.assertRaises(ValueError): self.serv.unshare_task(user=TEST_USER, task_id=task.id, user_receiver=TEST_RECEIVER) self.serv.share_task(user=TEST_USER, task_id=task.id, user_receiver=TEST_RECEIVER) self.serv.unshare_task(user=TEST_USER, task_id=task.id, user_receiver=TEST_RECEIVER) self.assertNotIn(TEST_RECEIVER, [rel.user for rel in task.members]) def test_delete_task(self): with self.assertRaises(ex.ObjectNotFound): self.serv.delete_task(user=TEST_USER, task_id=TEST_RANDOM_INT) task = self.serv.create_task(user=TEST_USER, name=TEST_NAME) self.serv.delete_task(user=TEST_USER, task_id=task.id) def test_add_subtask(self): task = self.serv.create_task(user=TEST_USER, name=TEST_NAME) subtask = self.serv.create_task(user=TEST_USER, name=TEST_NAME) plan = self.serv.create_plan(user=TEST_USER, task_id=task.id, period='min', period_amount=10) with self.assertRaises(ValueError): self.serv.add_subtask(user=TEST_USER, task_id=subtask.id, parent_task_id=task.id) self.serv.delete_plan(user=TEST_USER, plan_id=plan.id) self.serv.add_subtask(user=TEST_USER, task_id=subtask.id, parent_task_id=task.id) with self.assertRaises(ValueError): self.serv.add_subtask(user=TEST_USER, task_id=subtask.id, parent_task_id=task.id) with self.assertRaises(ValueError): self.serv.add_subtask(user=TEST_USER, task_id=task.id, parent_task_id=task.id) with self.assertRaises(ValueError): self.serv.add_subtask(user=TEST_USER, task_id=task.id, parent_task_id=subtask.id) def test_detach_task(self): task = self.serv.create_task(user=TEST_USER, name=TEST_NAME) subtask = self.serv.create_task(user=TEST_USER, name=TEST_NAME, parent_task_id=task.id) self.serv.detach_task(TEST_USER, subtask.id) self.assertIsNone(subtask.parent_task_id) with self.assertRaises(ValueError): self.serv.detach_task(TEST_USER, subtask.id) def test_change_task_status(self): task = self.serv.create_task(user=TEST_USER, name=TEST_NAME) self.serv.change_task_status(user=TEST_USER, task_id=task.id, status=mo.TaskStatus.DONE.value) self.assertEqual(task.status, mo.TaskStatus.DONE) subtask = self.serv.create_task(user=TEST_USER, name=TEST_NAME) self.serv.add_subtask(user=TEST_USER, task_id=subtask.id, parent_task_id=task.id) self.serv.change_task_status(user=TEST_USER, task_id=task.id, status=mo.TaskStatus.DONE.value) self.assertEqual(subtask.status, mo.TaskStatus.DONE) with self.assertRaises(KeyError): self.serv.change_task_status(user=TEST_USER, task_id=task.id, status=TEST_RANDOM_STR) def test_get_filtered_tasks(self): task = self.serv.create_task(user=TEST_USER, name=TEST_NAME, description=TEST_DESCRIPTION, status=TEST_STATUS_VALUE, priority=TEST_PRIORITY_VALUE, start_date=TEST_DATE_FIRST, end_date=TEST_DATE_THIRD) tasks = self.serv.get_filtered_tasks(user=TEST_USER, name=TEST_NAME, description=TEST_DESCRIPTION, start_date=TEST_DATE_FIRST, end_date=TEST_DATE_THIRD, priority=TEST_PRIORITY_VALUE, status=TEST_STATUS_VALUE) self.assertEqual(len(tasks), 0)