home · contact · privacy
Turn TodoNode into full class with .as_dict, with result expand Day tests.
[plomtask] / tests / days.py
index 079a0ebee54eb8c26558f2b770152f0236d432e5..4e70e097b5d1c53c709d43fb1b42462fe186c248 100644 (file)
@@ -83,8 +83,36 @@ class TestsWithServer(TestCaseWithServer):
         """Return JSON of Process to expect."""
         return {'id': date, 'comment': '', 'todos': []}
 
+    @staticmethod
+    def todo_as_dict(id_: int = 1,
+                     process_id: int = 1,
+                     date: str = '2024-01-01',
+                     ) -> dict[str, object]:
+        """Return JSON of Process to expect."""
+        # pylint: disable=too-many-arguments
+        d = {'id': id_,
+             'date': date,
+             'process_id': process_id,
+             'is_done': False,
+             'calendarize': False,
+             'comment': '',
+             'children': [],
+             'parents': [],
+             'effort': None,
+             'conditions': [],
+             'disables': [],
+             'enables': [],
+             'blockers': []}
+        return d
+
+    @staticmethod
+    def todo_node_as_dict(todo_id: int) -> dict[str, object]:
+        """Return JSON of TodoNode to expect."""
+        return {'children': [], 'seen': False, 'todo': todo_id}
+
     def test_do_GET_day(self) -> None:
         """Test GET /day basics."""
+        # pylint: disable=too-many-statements
         # check undefined day
         date = date_in_n_days(0)
         day = self.day_dict(date)
@@ -119,7 +147,7 @@ class TestsWithServer(TestCaseWithServer):
         expected['_library']['Day'] = self.as_refs([day])
         self.check_json_get(f'/day?date={date}', expected)
         # check saved day
-        post_day = {'day_comment': 'foo', 'make_type': ''}
+        post_day: dict[str, object] = {'day_comment': 'foo', 'make_type': ''}
         self.check_post(post_day, f'/day?date={date}', 302,
                         f'/day?date={date}&make_type=')
         day['comment'] = post_day['day_comment']
@@ -131,6 +159,28 @@ class TestsWithServer(TestCaseWithServer):
         self.check_json_get(f'/day?date={date}', expected)
         expected['make_type'] = 'bar'
         self.check_json_get(f'/day?date={date}&make_type=bar', expected)
+        # check GET with two Todos and Processes
+        expected['make_type'] = ''
+        form_data = self.post_process(1)
+        form_data['title'] = 'bar'
+        form_data['description'] = 'rab'
+        form_data['effort'] = 0.9
+        self.post_process(2, form_data)
+        post_day['new_todo'] = [1, 2]
+        self.check_post(post_day, f'/day?date={date}', 302,
+                        f'/day?date={date}&make_type=foo')
+        proc1 = self.proc_as_dict(1, 'foo', 'foo', 1.1)
+        proc2 = self.proc_as_dict(2, 'bar', 'rab', 0.9)
+        expected['_library']['Process'] = self.as_refs([proc1, proc2])
+        expected['processes'] = self.as_id_list([proc1, proc2])
+        t1 = self.todo_as_dict(1, 1, date)
+        t2 = self.todo_as_dict(2, 2, date)
+        expected['_library']['Todo'] = self.as_refs([t1, t2])
+        day['todos'] = self.as_id_list([t1, t2])
+        n1 = self.todo_node_as_dict(1)
+        n2 = self.todo_node_as_dict(2)
+        expected['top_nodes'] = [n1, n2]
+        self.check_json_get(f'/day?date={date}', expected)
 
     def test_do_GET(self) -> None:
         """Test /day and /calendar response codes, and / redirect."""