X-Git-Url: https://plomlompom.com/repos/feed.xml?a=blobdiff_plain;f=tests%2Fprocesses.py;h=8a7f91d4c561a34878af14b7e0796dcaa38ecf26;hb=8bbb9ac156bdca7b9dd015b62db3f07f1e7a9e17;hp=0488efc0f2a6b661feeae79d454843dd97c809ab;hpb=be5fe79322159cee339baa7919e38774298ebd95;p=plomtask diff --git a/tests/processes.py b/tests/processes.py index 0488efc..8a7f91d 100644 --- a/tests/processes.py +++ b/tests/processes.py @@ -1,9 +1,8 @@ """Test Processes module.""" from unittest import TestCase -from urllib.parse import urlencode from tests.utils import TestCaseWithDB, TestCaseWithServer from plomtask.processes import Process -from plomtask.exceptions import NotFoundException +from plomtask.exceptions import NotFoundException, BadFormatException class TestsSansDB(TestCase): @@ -25,10 +24,8 @@ class TestsWithDB(TestCaseWithDB): p_saved.save(self.db_conn) self.assertEqual(p_saved.id_, Process.by_id(self.db_conn, 1, create=False).id_) - p_saved = Process(0) - p_saved.save(self.db_conn) - self.assertEqual(p_saved.id_, - Process.by_id(self.db_conn, 2, create=False).id_) + with self.assertRaises(BadFormatException): + p_saved = Process(0) p_saved = Process(5) p_saved.save(self.db_conn) self.assertEqual(p_saved.id_, @@ -50,8 +47,6 @@ class TestsWithDB(TestCaseWithDB): Process.by_id(self.db_conn, 1, create=False) self.assertNotEqual(Process(1).id_, Process.by_id(self.db_conn, None, create=True).id_) - self.assertNotEqual(Process(1).id_, - Process.by_id(self.db_conn, 0, create=True).id_) self.assertEqual(Process(1).id_, Process.by_id(self.db_conn, 1, create=True).id_) self.assertEqual(Process(2).id_, @@ -72,36 +67,52 @@ class TestsWithServer(TestCaseWithServer): def test_do_POST_process(self) -> None: """Test POST /process and its effect on the database.""" - def post_data_to_expect(form_data: dict[str, object], - to_: str, expect: int) -> None: - encoded_form_data = urlencode(form_data).encode('utf-8') - headers = {'Content-Type': 'application/x-www-form-urlencoded', - 'Content-Length': str(len(encoded_form_data))} - self.conn.request('POST', to_, - body=encoded_form_data, headers=headers) - self.assertEqual(self.conn.getresponse().status, expect) - form_data = {'title': 'foo', 'description': 'foo', 'effort': 1.0} - post_data_to_expect(form_data, '/process?id=FOO', 400) + form_data = {'title': 'foo', 'description': 'foo', + 'effort': 1.1, 'children': [1, 2]} + self.check_post(form_data, '/process?id=FOO', 400) form_data['effort'] = 'foo' - post_data_to_expect(form_data, '/process?id=', 400) - form_data['effort'] = None - post_data_to_expect(form_data, '/process?id=', 400) - form_data = {'title': None, 'description': 1, 'effort': 1.0} - post_data_to_expect(form_data, '/process?id=', 302) - retrieved = Process.by_id(self.db_conn, 1) - self.assertEqual(retrieved.title.newest, 'None') + self.check_post(form_data, '/process?id=', 400) + form_data['effort'] = 1.1 + form_data['children'] = 1.1 + self.check_post(form_data, '/process?id=', 400) + form_data['children'] = 'a' + self.check_post(form_data, '/process?id=', 400) + form_data['children'] = [1, 1.2] + self.check_post(form_data, '/process?id=', 400) + form_data['children'] = [1, 'b'] + self.check_post(form_data, '/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) + form_data = {'title': '', 'description': '', + 'effort': 1.1, 'children': [1, 2]} + self.check_post(form_data, '/process?id=', 302, '/') + retrieved_1 = Process.by_id(self.db_conn, 1) + self.assertEqual(retrieved_1.title.newest, '') + self.assertEqual(retrieved_1.child_ids, [1, 2]) + form_data['children'] = [] + self.check_post(form_data, '/process?id=', 302, '/') + retrieved_2 = Process.by_id(self.db_conn, 2) + self.assertEqual(retrieved_2.child_ids, []) + del form_data['children'] + self.check_post(form_data, '/process?id=', 302, '/') + retrieved_3 = Process.by_id(self.db_conn, 3) + self.assertEqual(retrieved_2.child_ids, []) + self.check_post(form_data, '/process?id=1', 302, '/') self.assertEqual([p.id_ for p in Process.all(self.db_conn)], - [retrieved.id_]) + [retrieved_1.id_, retrieved_2.id_, retrieved_3.id_]) + retrieved_1 = Process.by_id(self.db_conn, 1) + self.assertEqual(retrieved_1.child_ids, []) + self.check_post(form_data, '/process', 302, '/') def test_do_GET(self) -> None: """Test /process and /processes response codes.""" - self.conn.request('GET', '/process') - self.assertEqual(self.conn.getresponse().status, 200) - self.conn.request('GET', '/process?id=') - self.assertEqual(self.conn.getresponse().status, 200) - self.conn.request('GET', '/process?id=0') - self.assertEqual(self.conn.getresponse().status, 200) - self.conn.request('GET', '/process?id=FOO') - self.assertEqual(self.conn.getresponse().status, 400) - self.conn.request('GET', '/processes') - self.assertEqual(self.conn.getresponse().status, 200) + self.check_get('/process', 200) + self.check_get('/process?id=', 200) + self.check_get('/process?id=0', 400) + self.check_get('/process?id=FOO', 400) + self.check_get('/processes', 200)