home · contact · privacy
Re-factor TestCaseSansDB methods.
[plomtask] / tests / conditions.py
index 53a75b87de137fb2258d7183e94acbb8fab1e158..468b1e8b13499ea3c6775baf40f68cad1b646a87 100644 (file)
@@ -9,7 +9,6 @@ from plomtask.exceptions import HandledException
 class TestsSansDB(TestCaseSansDB):
     """Tests requiring no DB setup."""
     checked_class = Condition
-    do_id_test = True
     versioned_defaults_to_test = {'title': 'UNNAMED', 'description': ''}
 
 
@@ -19,31 +18,9 @@ class TestsWithDB(TestCaseWithDB):
     default_init_kwargs = {'is_active': False}
     test_versioneds = {'title': str, 'description': str}
 
-    def test_Condition_from_table_row(self) -> None:
-        """Test .from_table_row() properly reads in class from DB"""
-        self.check_from_table_row()
-        self.check_versioned_from_table_row('title', str)
-        self.check_versioned_from_table_row('description', str)
-
-    def test_Condition_by_id(self) -> None:
-        """Test .by_id(), including creation."""
-        self.check_by_id()
-
-    def test_Condition_all(self) -> None:
-        """Test .all()."""
-        self.check_all()
-
-    def test_Condition_singularity(self) -> None:
-        """Test pointers made for single object keep pointing to it."""
-        self.check_singularity('is_active', True)
-
-    def test_Condition_versioned_attributes_singularity(self) -> None:
-        """Test behavior of VersionedAttributes on saving (with .title)."""
-        self.check_versioned_singularity()
-
-    def test_Condition_remove(self) -> None:
+    def test_remove(self) -> None:
         """Test .remove() effects on DB and cache."""
-        self.check_remove()
+        super().test_remove()
         proc = Process(None)
         proc.save(self.db_conn)
         todo = Todo(None, proc, False, '2024-01-01')
@@ -74,16 +51,18 @@ class TestsWithServer(TestCaseWithServer):
         """Return JSON of Condition to expect."""
         d = {'id': id_,
              'is_active': is_active,
-             'title': {'history': {}, 'parent_id': id_},
-             'description': {'history': {}, 'parent_id': id_}}
+             '_versioned': {
+                 'title': {},
+                 'description': {}
+                 }
+             }
         titles = titles if titles else []
         descriptions = descriptions if descriptions else []
+        assert isinstance(d['_versioned'], dict)
         for i, title in enumerate(titles):
-            assert isinstance(d['title'], dict)
-            d['title']['history'][f'[{i}]'] = title
+            d['_versioned']['title'][i] = title
         for i, description in enumerate(descriptions):
-            assert isinstance(d['description'], dict)
-            d['description']['history'][f'[{i}]'] = description
+            d['_versioned']['description'][i] = description
         return d
 
     @staticmethod
@@ -100,9 +79,11 @@ class TestsWithServer(TestCaseWithServer):
              'calendarize': False,
              'suppressed_steps': [],
              'explicit_steps': [],
-             'title': {'history': {'[0]': title}, 'parent_id': id_},
-             'effort': {'history': {'[0]': 1.0}, 'parent_id': id_},
-             'description': {'history': {'[0]': ''}, 'parent_id': id_},
+             '_versioned': {
+                 'title': {0: title},
+                 'description': {0: ''},
+                 'effort': {0: 1.0}
+                 },
              'conditions': conditions if conditions else [],
              'disables': disables if disables else [],
              'enables': enables if enables else [],
@@ -117,7 +98,7 @@ class TestsWithServer(TestCaseWithServer):
         post = {'title': 'foo', 'description': 'oof', 'is_active': False}
         self.check_post(post, '/condition', 302, '/condition?id=1')
         # … single /condition
-        cond = self.cond_as_dict(titles = ['foo'], descriptions = ['oof'])
+        cond = self.cond_as_dict(titles=['foo'], descriptions=['oof'])
         expected_single: dict[str, object]
         expected_single = {'is_new': False,
                            'enabled_processes': [],
@@ -137,7 +118,8 @@ class TestsWithServer(TestCaseWithServer):
         # test effect of POST changing title and activeness
         post = {'title': 'bar', 'description': 'oof', 'is_active': True}
         self.check_post(post, '/condition?id=1', 302)
-        expected_single['condition']['title']['history']['[1]'] = 'bar'
+        assert isinstance(expected_single['condition'], dict)
+        expected_single['condition']['_versioned']['title'][1] = 'bar'
         expected_single['condition']['is_active'] = True
         self.check_json_get('/condition?id=1', expected_single)
         # test deletion POST's effect on …
@@ -162,7 +144,7 @@ class TestsWithServer(TestCaseWithServer):
         proc_2_post = {'title': 'B', 'description': '', 'effort': 1.0,
                        'enables': [1], 'blocker': [1]}
         self.post_process(2, proc_2_post)
-        cond = self.cond_as_dict(titles = ['foo'], descriptions = ['oof'])
+        cond = self.cond_as_dict(titles=['foo'], descriptions=['oof'])
         proc_1 = self.proc_as_dict(conditions=[cond], disables=[cond])
         proc_2 = self.proc_as_dict(2, 'B', blockers=[cond], enables=[cond])
         expected_single = {'is_new': False,
@@ -193,7 +175,7 @@ class TestsWithServer(TestCaseWithServer):
         self.check_post(post_2, '/condition', 302, '/condition?id=2')
         post_3 = {'title': 'baz', 'description': 'zab', 'is_active': True}
         self.check_post(post_3, '/condition', 302, '/condition?id=3')
-        cond_1 = self.cond_as_dict(titles = ['foo'], descriptions = ['oof'])
+        cond_1 = self.cond_as_dict(titles=['foo'], descriptions=['oof'])
         cond_2 = self.cond_as_dict(2, titles=['bar'], descriptions=['rab'])
         cond_3 = self.cond_as_dict(3, True, ['baz'], ['zab'])
         cons = [cond_2, cond_3, cond_1]