home · contact · privacy
Refactor .all() tests.
[plomtask] / tests / utils.py
index a4f29ff45263cc2716f2299fa3f6d36d973d03a6..d8bd247bd8391682e5f7577c56f5e77d86216e9f 100644 (file)
@@ -131,7 +131,7 @@ class TestCaseWithDB(TestCase):
         self.check_storage([obj])
 
     def test_from_table_row(self) -> None:
-        """Test .from_table_row() properly reads in class from DB."""
+        """Test .from_table_row() properly reads in class directly from DB."""
         if not hasattr(self, 'checked_class'):
             return
         id_ = self.default_ids[0]
@@ -174,25 +174,26 @@ class TestCaseWithDB(TestCase):
             attr = getattr(retrieved, attr_name)
             self.assertEqual(sorted(attr.history.values()), vals)
 
-    def check_all(self) -> tuple[Any, Any, Any]:
-        """Test .all()."""
-        # pylint: disable=not-callable
-        item1 = self.checked_class(self.default_ids[0])
-        item2 = self.checked_class(self.default_ids[1])
-        item3 = self.checked_class(self.default_ids[2])
-        # check pre-save .all() returns empty list
+    def test_all(self) -> None:
+        """Test .all() and its relation to cache and savings."""
+        if not hasattr(self, 'checked_class'):
+            return
+        id_1, id_2, id_3 = self.default_ids
+        item1 = self.checked_class(id_1, **self.default_init_kwargs)
+        item2 = self.checked_class(id_2, **self.default_init_kwargs)
+        item3 = self.checked_class(id_3, **self.default_init_kwargs)
+        # check .all() returns empty list on un-cached items
         self.assertEqual(self.checked_class.all(self.db_conn), [])
-        # check that all() shows all saved, but no unsaved items
-        item1.save(self.db_conn)
+        # check that all() shows only cached/saved items
+        item1.cache()
         item3.save(self.db_conn)
         self.assertEqual(sorted(self.checked_class.all(self.db_conn)),
                          sorted([item1, item3]))
         item2.save(self.db_conn)
         self.assertEqual(sorted(self.checked_class.all(self.db_conn)),
                          sorted([item1, item2, item3]))
-        return item1, item2, item3
 
-    def test_singularity(self)-> None:
+    def test_singularity(self) -> None:
         """Test pointers made for single object keep pointing to it."""
         if not hasattr(self, 'checked_class'):
             return
@@ -201,6 +202,7 @@ class TestCaseWithDB(TestCase):
         obj.save(self.db_conn)
         attr_name = self.checked_class.to_save[-1]
         attr = getattr(obj, attr_name)
+        new_attr: str | int | float | bool
         if isinstance(attr, (int, float)):
             new_attr = attr + 1
         elif isinstance(attr, str):