"""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):
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)."""
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', 400)
- 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)