From: Christian Heller Date: Tue, 18 Jun 2024 01:46:20 +0000 (+0200) Subject: Refactor .all() tests. X-Git-Url: https://plomlompom.com/repos/%7B%7B%20web_path%20%7D%7D/todos?a=commitdiff_plain;h=aa0f1ff1b3ccb57a1c3c2772fc6a172643cdab73;p=plomtask Refactor .all() tests. --- diff --git a/tests/conditions.py b/tests/conditions.py index fb55e00..562dcd9 100644 --- a/tests/conditions.py +++ b/tests/conditions.py @@ -29,10 +29,6 @@ class TestsWithDB(TestCaseWithDB): """Test .by_id(), including creation.""" self.check_by_id() - def test_Condition_all(self) -> None: - """Test .all().""" - self.check_all() - def test_Condition_versioned_attributes_singularity(self) -> None: """Test behavior of VersionedAttributes on saving (with .title).""" self.check_versioned_singularity() diff --git a/tests/days.py b/tests/days.py index 6a87736..1972dbd 100644 --- a/tests/days.py +++ b/tests/days.py @@ -60,7 +60,12 @@ class TestsWithDB(TestCaseWithDB): def test_Day_by_date_range_filled(self) -> None: """Test Day.by_date_range_filled.""" date1, date2, date3 = self.default_ids - day1, day2, day3 = self.check_all() + day1 = Day(date1) + day2 = Day(date2) + day3 = Day(date3) + day1.save(self.db_conn) + day2.save(self.db_conn) + day3.save(self.db_conn) # check date range is a closed interval self.assertEqual(Day.by_date_range_filled(self.db_conn, date1, date3), [day1, day2, day3]) diff --git a/tests/processes.py b/tests/processes.py index 70090d1..f495fd5 100644 --- a/tests/processes.py +++ b/tests/processes.py @@ -186,10 +186,6 @@ class TestsWithDB(TestCaseWithDB): """Test .by_id(), including creation""" self.check_by_id() - def test_Process_all(self) -> None: - """Test .all().""" - self.check_all() - def test_Process_versioned_attributes_singularity(self) -> None: """Test behavior of VersionedAttributes on saving (with .title).""" self.check_versioned_singularity() diff --git a/tests/utils.py b/tests/utils.py index a4f29ff..d8bd247 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -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):