home · contact · privacy
Minor tests refactoring.
[plomtask] / tests / conditions.py
index b6510a1afbf2b7435679573ad45fbd8a8ac5ff57..40d7c486fe7b05f2ed7f447e2cf58cd435546ebb 100644 (file)
@@ -1,7 +1,8 @@
 """Test Conditions module."""
 from tests.utils import TestCaseWithDB, TestCaseWithServer
 from plomtask.conditions import Condition
-from plomtask.exceptions import NotFoundException
+from plomtask.processes import Process
+from plomtask.exceptions import NotFoundException, HandledException
 
 
 class TestsWithDB(TestCaseWithDB):
@@ -36,6 +37,22 @@ class TestsWithDB(TestCaseWithDB):
         condition_retrieved = Condition.by_id(self.db_conn, 1)
         self.assertEqual(True, condition_retrieved.is_active)
 
+    def test_Condition_removal(self) -> None:
+        """Test removal of Condition."""
+        cond = Condition(None, False)
+        cond.save(self.db_conn)
+        assert isinstance(cond.id_, int)
+        proc = Process(None)
+        proc.save(self.db_conn)
+        proc.set_conditions(self.db_conn, [cond.id_], 'conditions')
+        proc.save(self.db_conn)
+        with self.assertRaises(HandledException):
+            cond.remove(self.db_conn)
+        proc.set_conditions(self.db_conn, [], 'conditions')
+        proc.save(self.db_conn)
+        cond.remove(self.db_conn)
+        self.assertEqual(Condition.all(self.db_conn), [])
+
 
 class TestsWithServer(TestCaseWithServer):
     """Module tests against our HTTP server/handler (and database)."""
@@ -43,13 +60,17 @@ class TestsWithServer(TestCaseWithServer):
     def test_do_POST_condition(self) -> None:
         """Test POST /condition and its effect on the database."""
         form_data = {'title': 'foo', 'description': 'foo'}
-        self.check_post(form_data, '/condition', 302, '/')
+        self.check_post(form_data, '/condition', 302, '/condition?id=1')
         self.assertEqual(1, len(Condition.all(self.db_conn)))
+        form_data['delete'] = ''
+        self.check_post(form_data, '/condition?id=', 404)
+        self.check_post(form_data, '/condition?id=2', 404)
+        self.check_post(form_data, '/condition?id=1', 302, '/conditions')
+        self.assertEqual(0, len(Condition.all(self.db_conn)))
 
     def test_do_GET(self) -> None:
         """Test /condition and /conditions response codes."""
-        self.check_get('/condition', 200)
-        self.check_get('/condition?id=', 200)
-        self.check_get('/condition?id=0', 500)
-        self.check_get('/condition?id=FOO', 400)
+        form_data = {'title': 'foo', 'description': 'foo'}
+        self.check_post(form_data, '/condition', 302, '/condition?id=1')
+        self.check_get_defaults('/condition')
         self.check_get('/conditions', 200)