"""Test Processes module."""
from unittest import TestCase
-from http.client import HTTPConnection
from urllib.parse import urlencode
from tests.utils import TestCaseWithDB, TestCaseWithServer
from plomtask.processes import Process
+from plomtask.misc import HandledException
class TestsSansDB(TestCase):
"""Module tests not requiring DB setup."""
- def test_Process_versioned_defaults(self):
+ def test_Process_versioned_defaults(self) -> None:
"""Test defaults of Process' VersionedAttributes."""
self.assertEqual(Process(None).title.newest, 'UNNAMED')
self.assertEqual(Process(None).description.newest, '')
class TestsWithDB(TestCaseWithDB):
"""Mdule tests not requiring DB setup."""
- def test_Process_save(self):
+ def test_Process_save(self) -> None:
"""Test Process.save()."""
p_saved = Process(None)
p_saved.save(self.db_conn)
p_loaded = Process.by_id(self.db_conn, p_saved.id_)
self.assertEqual(p_saved.title.history, p_loaded.title.history)
- def test_Process_by_id(self):
+ def test_Process_by_id(self) -> None:
"""Test Process.by_id()."""
- self.assertEqual(None, Process.by_id(self.db_conn, None, create=False))
- self.assertEqual(None, Process.by_id(self.db_conn, 0, create=False))
- self.assertEqual(None, Process.by_id(self.db_conn, 1, create=False))
+ with self.assertRaises(HandledException):
+ Process.by_id(self.db_conn, None, create=False)
+ with self.assertRaises(HandledException):
+ Process.by_id(self.db_conn, 0, create=False)
+ with self.assertRaises(HandledException):
+ 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_,
self.assertEqual(Process(2).id_,
Process.by_id(self.db_conn, 2, create=True).id_)
- def test_Process_all(self):
+ def test_Process_all(self) -> None:
"""Test Process.all()."""
p_1 = Process(None)
p_1.save(self.db_conn)
class TestsWithServer(TestCaseWithServer):
"""Module tests against our HTTP server/handler (and database)."""
- def test_do_POST_process(self):
+ def test_do_POST_process(self) -> None:
"""Test POST /process and its effect on the database."""
- def post_data_to_expect(form_data: dict, to_: str, expect: int):
+ 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))}
- http_conn.request('POST', to_,
+ self.conn.request('POST', to_,
body=encoded_form_data, headers=headers)
- self.assertEqual(http_conn.getresponse().status, expect)
- http_conn = HTTPConnection(*self.httpd.server_address)
+ 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['effort'] = 'foo'
self.assertEqual([p.id_ for p in Process.all(self.db_conn)],
[retrieved.id_])
- def test_do_GET(self):
+ def test_do_GET(self) -> None:
"""Test /process and /processes response codes."""
- http_conn = HTTPConnection(*self.httpd.server_address)
- http_conn.request('GET', '/process')
- self.assertEqual(http_conn.getresponse().status, 200)
- http_conn.request('GET', '/process?id=')
- self.assertEqual(http_conn.getresponse().status, 200)
- http_conn.request('GET', '/process?id=0')
- self.assertEqual(http_conn.getresponse().status, 200)
- http_conn.request('GET', '/process?id=FOO')
- self.assertEqual(http_conn.getresponse().status, 400)
- http_conn.request('GET', '/processes')
- self.assertEqual(http_conn.getresponse().status, 200)
+ 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)