X-Git-Url: https://plomlompom.com/repos/feed.xml?a=blobdiff_plain;f=tests%2Fprocesses.py;h=ce7f8571cc7aa84aaa6a8a4855febfeb97d879b9;hb=9c68e4b443a695652f2ba3acae126ad02e3f6ffa;hp=6695f78363656cffb5963b539c23bf2444db1703;hpb=ee18435127ad396c24dbee2c7efcdbe6810d5a91;p=plomtask diff --git a/tests/processes.py b/tests/processes.py index 6695f78..ce7f857 100644 --- a/tests/processes.py +++ b/tests/processes.py @@ -3,6 +3,7 @@ from unittest import TestCase from tests.utils import TestCaseWithDB, TestCaseWithServer from plomtask.processes import Process, ProcessStep, ProcessStepsNode from plomtask.conditions import Condition +from plomtask.todos import Todo from plomtask.exceptions import NotFoundException, HandledException @@ -22,7 +23,7 @@ class TestsSansDB(TestCase): class TestsWithDB(TestCaseWithDB): - """Mdule tests not requiring DB setup.""" + """Module tests requiring DB setup.""" def setUp(self) -> None: super().setUp() @@ -158,12 +159,14 @@ class TestsWithDB(TestCaseWithDB): self.assertEqual(self.proc1.title.history, p_loaded.title.history) def test_Process_removal(self) -> None: - """Test removal of Processes.""" + """Test removal of Processes and ProcessSteps.""" assert isinstance(self.proc3.id_, int) self.proc1.remove(self.db_conn) self.assertEqual({self.proc2.id_, self.proc3.id_}, set(p.id_ for p in Process.all(self.db_conn))) self.proc2.set_steps(self.db_conn, [(None, self.proc3.id_, None)]) + with self.assertRaises(HandledException): + self.proc3.remove(self.db_conn) self.proc2.explicit_steps[0].remove(self.db_conn) retrieved = Process.by_id(self.db_conn, self.proc2.id_) self.assertEqual(retrieved.explicit_steps, []) @@ -172,6 +175,12 @@ class TestsWithDB(TestCaseWithDB): self.proc2.remove(self.db_conn) with self.assertRaises(NotFoundException): ProcessStep.by_id(self.db_conn, step.id_) + todo = Todo(None, self.proc3, False, '2024-01-01') + todo.save(self.db_conn) + with self.assertRaises(HandledException): + self.proc3.remove(self.db_conn) + todo.remove(self.db_conn) + self.proc3.remove(self.db_conn) class TestsWithServer(TestCaseWithServer): @@ -180,37 +189,31 @@ class TestsWithServer(TestCaseWithServer): def test_do_POST_process(self) -> None: """Test POST /process and its effect on the database.""" self.assertEqual(0, len(Process.all(self.db_conn))) - form_data = {'title': 'foo', 'description': 'foo', 'effort': 1.1} - self.check_post(form_data, '/process?id=', 302, '/') + form_data = self.post_process() self.assertEqual(1, len(Process.all(self.db_conn))) self.check_post(form_data, '/process?id=FOO', 400) - form_data['effort'] = 'foo' - self.check_post(form_data, '/process?id=', 400) + self.check_post(form_data | {'effort': 'foo'}, '/process?id=', 400) self.check_post({}, '/process?id=', 400) - form_data = {'title': '', 'description': ''} - self.check_post(form_data, '/process?id=', 400) - form_data = {'title': '', 'effort': 1.1} - self.check_post(form_data, '/process?id=', 400) - form_data = {'description': '', 'effort': 1.0} - self.check_post(form_data, '/process?id=', 400) + self.check_post({'title': '', 'description': ''}, '/process?id=', 400) + self.check_post({'title': '', 'effort': 1.1}, '/process?id=', 400) + self.check_post({'description': '', 'effort': 1.0}, + '/process?id=', 400) self.assertEqual(1, len(Process.all(self.db_conn))) - form_data = {'title': 'foo', 'description': 'foo', 'effort': 1.0, - 'condition': []} - self.check_post(form_data, '/process?id=', 302, '/') - form_data['condition'] = [1] + form_data = {'title': 'foo', 'description': 'foo', 'effort': 1.0} + self.post_process(2, form_data | {'condition': []}) + self.check_post(form_data | {'condition': [1]}, '/process?id=', 404) + self.check_post({'title': 'foo', 'description': 'foo'}, + '/condition', 302, '/condition?id=1') + self.post_process(3, form_data | {'condition': [1]}) + self.post_process(4, form_data | {'disables': [1]}) + self.post_process(5, form_data | {'enables': [1]}) + form_data['delete'] = '' self.check_post(form_data, '/process?id=', 404) - form_data_cond = {'title': 'foo', 'description': 'foo'} - self.check_post(form_data_cond, '/condition', 302, '/') - self.check_post(form_data, '/process?id=', 302, '/') - form_data['disables'] = [1] - self.check_post(form_data, '/process?id=', 302, '/') - form_data['enables'] = [1] - self.check_post(form_data, '/process?id=', 302, '/') + self.check_post(form_data, '/process?id=6', 404) + self.check_post(form_data, '/process?id=5', 302, '/processes') def test_do_GET(self) -> None: """Test /process and /processes response codes.""" - self.check_get('/process', 200) - self.check_get('/process?id=', 200) - self.check_get('/process?id=0', 500) - self.check_get('/process?id=FOO', 400) + self.post_process() + self.check_get_defaults('/process') self.check_get('/processes', 200)