home · contact · privacy
Cache DB objects to ensure we do not accidentally edit clones.
[plomtask] / tests / todos.py
index 8bcd181e97ae06348f028a5f273a00ea7c53dcb2..db4ad9ca1c828145ae6baaa1c764d0f005f7fc65 100644 (file)
@@ -7,7 +7,7 @@ from plomtask.exceptions import NotFoundException
 
 
 class TestsWithDB(TestCaseWithDB):
-    """Tests not requiring DB setup."""
+    """Tests requiring DB, but not server setup."""
 
     def test_Todo_by_id(self) -> None:
         """Test creation and findability of Todos."""
@@ -18,9 +18,6 @@ class TestsWithDB(TestCaseWithDB):
             todo.save(self.db_conn)
         process.save_without_steps(self.db_conn)
         todo.save(self.db_conn)
-        with self.assertRaises(NotFoundException):
-            _ = Todo.by_id(self.db_conn, 1)
-        day.save(self.db_conn)
         self.assertEqual(Todo.by_id(self.db_conn, 1), todo)
         with self.assertRaises(NotFoundException):
             self.assertEqual(Todo.by_id(self.db_conn, 0), todo)
@@ -37,14 +34,25 @@ class TestsWithDB(TestCaseWithDB):
         todo1.save(self.db_conn)
         todo2 = Todo(None, process, False, day1)
         todo2.save(self.db_conn)
-        with self.assertRaises(NotFoundException):
-            _ = Todo.by_date(self.db_conn, day1.date)
-        day1.save(self.db_conn)
-        day2.save(self.db_conn)
         self.assertEqual(Todo.by_date(self.db_conn, day1.date), [todo1, todo2])
         self.assertEqual(Todo.by_date(self.db_conn, day2.date), [])
         self.assertEqual(Todo.by_date(self.db_conn, 'foo'), [])
 
+    def test_Todo_singularity(self) -> None:
+        """Test pointers made for single object keep pointing to it."""
+        day = Day('2024-01-01')
+        day.save(self.db_conn)
+        process = Process(None)
+        process.save_without_steps(self.db_conn)
+        todo = Todo(None, process, False, day)
+        todo.save(self.db_conn)
+        retrieved_todo = Todo.by_id(self.db_conn, 1)
+        todo.is_done = True
+        self.assertEqual(retrieved_todo.is_done, True)
+        retrieved_todo = Todo.by_date(self.db_conn, '2024-01-01')[0]
+        retrieved_todo.is_done = False
+        self.assertEqual(todo.is_done, False)
+
 
 class TestsWithServer(TestCaseWithServer):
     """Tests against our HTTP server/handler (and database)."""