self.post_process(2)
proc = Process.by_id(self.db_conn, 1)
proc2 = Process.by_id(self.db_conn, 2)
self.post_process(2)
proc = Process.by_id(self.db_conn, 1)
proc2 = Process.by_id(self.db_conn, 2)
self.check_post(form_data, '/day?date=2024-01-01', 302)
self.assertEqual(Todo.by_date(self.db_conn, '2024-01-01'), [])
form_data['new_todo'] = str(proc.id_)
self.check_post(form_data, '/day?date=2024-01-01', 302)
self.assertEqual(Todo.by_date(self.db_conn, '2024-01-01'), [])
form_data['new_todo'] = str(proc.id_)
'/day?date=2024-01-01', 302)
# test posting to bad URLs
self.check_post({}, '/todo=', 404)
'/day?date=2024-01-01', 302)
# test posting to bad URLs
self.check_post({}, '/todo=', 404)
self.check_post({}, '/todo?id=FOO', 400)
self.check_post({}, '/todo?id=0', 404)
# test posting naked entity
self.check_post({}, '/todo?id=FOO', 400)
self.check_post({}, '/todo?id=0', 404)
# test posting naked entity
self.assertEqual(todo1.children, [])
self.assertEqual(todo1.parents, [])
self.assertEqual(todo1.is_done, False)
# test posting doneness
self.assertEqual(todo1.children, [])
self.assertEqual(todo1.parents, [])
self.assertEqual(todo1.is_done, False)
# test posting doneness
self.assertEqual(todo1.is_done, True)
# test implicitly posting non-doneness
self.assertEqual(todo1.is_done, True)
# test implicitly posting non-doneness
self.assertEqual(todo1.is_done, False)
# test malformed adoptions
self.check_post({'adopt': 'foo'}, '/todo?id=1', 400)
self.check_post({'adopt': 1}, '/todo?id=1', 400)
self.check_post({'adopt': 2}, '/todo?id=1', 404)
# test posting second todo of same process
self.assertEqual(todo1.is_done, False)
# test malformed adoptions
self.check_post({'adopt': 'foo'}, '/todo?id=1', 400)
self.check_post({'adopt': 1}, '/todo?id=1', 400)
self.check_post({'adopt': 2}, '/todo?id=1', 404)
# test posting second todo of same process
'/day?date=2024-01-01', 302)
# test todo 1 adopting todo 2
'/day?date=2024-01-01', 302)
# test todo 1 adopting todo 2
todo2 = Todo.by_date(self.db_conn, '2024-01-01')[1]
self.assertEqual(todo1.children, [todo2])
self.assertEqual(todo1.parents, [])
self.assertEqual(todo2.children, [])
self.assertEqual(todo2.parents, [todo1])
# test todo1 cannot be set done with todo2 not done yet
todo2 = Todo.by_date(self.db_conn, '2024-01-01')[1]
self.assertEqual(todo1.children, [todo2])
self.assertEqual(todo1.parents, [])
self.assertEqual(todo2.children, [])
self.assertEqual(todo2.parents, [todo1])
# test todo1 cannot be set done with todo2 not done yet
- todo1 = post_and_reload({'done': '', 'adopt': 2}, 400)
+ todo1 = post_and_reload({'done': '', 'adopt': 2, 'comment': ''}, 400)
self.assertEqual(todo1.is_done, False)
# test todo1 un-adopting todo 2 by just not sending an adopt
self.assertEqual(todo1.is_done, False)
# test todo1 un-adopting todo 2 by just not sending an adopt
todo2 = Todo.by_date(self.db_conn, '2024-01-01')[1]
self.assertEqual(todo1.children, [])
self.assertEqual(todo1.parents, [])
todo2 = Todo.by_date(self.db_conn, '2024-01-01')[1]
self.assertEqual(todo1.children, [])
self.assertEqual(todo1.parents, [])
"""Test Todos posted to Day view may adopt existing Todos."""
form_data = self.post_process()
form_data = self.post_process(2, form_data | {'new_top_step': 1})
"""Test Todos posted to Day view may adopt existing Todos."""
form_data = self.post_process()
form_data = self.post_process(2, form_data | {'new_top_step': 1})
self.check_post(form_data, '/day?date=2024-01-01', 302)
form_data['new_todo'] = 2
self.check_post(form_data, '/day?date=2024-01-01', 302)
self.check_post(form_data, '/day?date=2024-01-01', 302)
form_data['new_todo'] = 2
self.check_post(form_data, '/day?date=2024-01-01', 302)
"""Test multiple Todos can be posted to Day view."""
form_data = self.post_process()
form_data = self.post_process(2)
"""Test multiple Todos can be posted to Day view."""
form_data = self.post_process()
form_data = self.post_process(2)
self.check_post(form_data, '/day?date=2024-01-01', 302)
todo1 = Todo.by_date(self.db_conn, '2024-01-01')[0]
todo2 = Todo.by_date(self.db_conn, '2024-01-01')[1]
self.check_post(form_data, '/day?date=2024-01-01', 302)
todo1 = Todo.by_date(self.db_conn, '2024-01-01')[0]
todo2 = Todo.by_date(self.db_conn, '2024-01-01')[1]
"""Test multiple Todos can be posted to Day view w. inner adoption."""
form_data = self.post_process()
form_data = self.post_process(2, form_data | {'new_top_step': 1})
"""Test multiple Todos can be posted to Day view w. inner adoption."""
form_data = self.post_process()
form_data = self.post_process(2, form_data | {'new_top_step': 1})
self.check_post(form_data, '/day?date=2024-01-01', 302)
todo1 = Todo.by_date(self.db_conn, '2024-01-01')[0]
todo2 = Todo.by_date(self.db_conn, '2024-01-01')[1]
self.check_post(form_data, '/day?date=2024-01-01', 302)
todo1 = Todo.by_date(self.db_conn, '2024-01-01')[0]
todo2 = Todo.by_date(self.db_conn, '2024-01-01')[1]
self.assertEqual(todo2.children, [todo1])
self.assertEqual(todo2.parents, [])
# check process ID order does not affect end result
self.assertEqual(todo2.children, [todo1])
self.assertEqual(todo2.parents, [])
# check process ID order does not affect end result
self.check_post(form_data, '/day?date=2024-01-02', 302)
todo1 = Todo.by_date(self.db_conn, '2024-01-02')[1]
todo2 = Todo.by_date(self.db_conn, '2024-01-02')[0]
self.check_post(form_data, '/day?date=2024-01-02', 302)
todo1 = Todo.by_date(self.db_conn, '2024-01-02')[1]
todo2 = Todo.by_date(self.db_conn, '2024-01-02')[0]
self.assertEqual(todo2.parents, [])
def test_do_POST_day_todo_doneness(self) -> None:
self.assertEqual(todo2.parents, [])
def test_do_POST_day_todo_doneness(self) -> None:
self.check_post(form_data, '/day?date=2024-01-01', 302)
todo = Todo.by_date(self.db_conn, '2024-01-01')[0]
self.check_post(form_data, '/day?date=2024-01-01', 302)
todo = Todo.by_date(self.db_conn, '2024-01-01')[0]
self.check_post(form_data, '/day?date=2024-01-01', 302)
self.assertEqual(todo.is_done, False)
self.check_post(form_data, '/day?date=2024-01-01', 302)
self.assertEqual(todo.is_done, False)
self.check_post(form_data, '/day?date=2024-01-01', 302)
self.assertEqual(todo.is_done, True)
def test_do_GET_todo(self) -> None:
"""Test GET /todo response codes."""
self.post_process()
self.check_post(form_data, '/day?date=2024-01-01', 302)
self.assertEqual(todo.is_done, True)
def test_do_GET_todo(self) -> None:
"""Test GET /todo response codes."""
self.post_process()
self.check_post(form_data, '/day?date=2024-01-01', 302)
self.check_get('/todo', 400)
self.check_get('/todo?id=', 400)
self.check_post(form_data, '/day?date=2024-01-01', 302)
self.check_get('/todo', 400)
self.check_get('/todo?id=', 400)