X-Git-Url: https://plomlompom.com/repos/foo.html?a=blobdiff_plain;f=tests%2Fmisc.py;h=d49870fcce0a81179e03461e48bb5b1bb570cae9;hb=96a63958d64e4847cd462d12b227ccb4fecd0d9e;hp=893d67e7c462ad2d3a0c02182acdd32e5c8ff5ac;hpb=4724d02b2c8a7fac3029ae6380641c4093fa4554;p=plomtask
diff --git a/tests/misc.py b/tests/misc.py
index 893d67e..d49870f 100644
--- a/tests/misc.py
+++ b/tests/misc.py
@@ -1,5 +1,101 @@
"""Miscellaneous tests."""
+from unittest import TestCase
from tests.utils import TestCaseWithServer
+from plomtask.http import InputsParser
+from plomtask.exceptions import BadFormatException
+
+
+class TestsSansServer(TestCase):
+ """Tests that do not require DB setup or a server."""
+
+ def test_InputsParser_non_strict(self) -> None:
+ """Test behavior of non-strict (= params) InputsParser."""
+ params = InputsParser({}, False)
+ self.assertEqual('', params.get_str('foo'))
+ params = InputsParser({}, False)
+ self.assertEqual('bar', params.get_str('foo', 'bar'))
+ params = InputsParser({'foo': []}, False)
+ self.assertEqual('bar', params.get_str('foo', 'bar'))
+ params = InputsParser({'foo': ['baz']}, False)
+ self.assertEqual('baz', params.get_str('foo', 'bar'))
+ params = InputsParser({}, False)
+ self.assertEqual(None, params.get_int_or_none('foo'))
+ params = InputsParser({'foo': []}, False)
+ self.assertEqual(None, params.get_int_or_none('foo'))
+ params = InputsParser({'foo': ['']}, False)
+ self.assertEqual(None, params.get_int_or_none('foo'))
+ params = InputsParser({'foo': ['0']}, False)
+ self.assertEqual(0, params.get_int_or_none('foo'))
+ with self.assertRaises(BadFormatException):
+ InputsParser({'foo': ['None']}, False).get_int_or_none('foo')
+ with self.assertRaises(BadFormatException):
+ InputsParser({'foo': ['0.1']}, False).get_int_or_none('foo')
+ params = InputsParser({'foo': ['23']}, False)
+ self.assertEqual(23, params.get_int_or_none('foo'))
+
+ def test_InputsParser_strict(self) -> None:
+ """Test behavior of strict (= postvars) InputsParser."""
+ self.assertEqual([],
+ InputsParser({}).get_all_str('foo'))
+ self.assertEqual([],
+ InputsParser({'foo': []}).get_all_str('foo'))
+ self.assertEqual(['bar'],
+ InputsParser({'foo': ['bar']}).get_all_str('foo'))
+ self.assertEqual(['bar', 'baz'],
+ InputsParser({'foo': ['bar', 'baz']}).
+ get_all_str('foo'))
+ self.assertEqual([],
+ InputsParser({}).get_all_int('foo'))
+ self.assertEqual([],
+ InputsParser({'foo': []}).get_all_int('foo'))
+ self.assertEqual([],
+ InputsParser({'foo': ['']}).get_all_int('foo'))
+ self.assertEqual([0],
+ InputsParser({'foo': ['0']}).get_all_int('foo'))
+ self.assertEqual([0, 17],
+ InputsParser({'foo': ['0', '17']}).
+ get_all_int('foo'))
+ with self.assertRaises(BadFormatException):
+ InputsParser({'foo': ['0.1', '17']}).get_all_int('foo')
+ with self.assertRaises(BadFormatException):
+ InputsParser({'foo': ['None', '17']}).get_all_int('foo')
+ with self.assertRaises(BadFormatException):
+ InputsParser({}).get_str('foo')
+ with self.assertRaises(BadFormatException):
+ InputsParser({'foo': []}).get_str('foo')
+ self.assertEqual('bar',
+ InputsParser({'foo': ['bar']}).get_str('foo'))
+ self.assertEqual('',
+ InputsParser({'foo': ['', 'baz']}).get_str('foo'))
+ with self.assertRaises(BadFormatException):
+ InputsParser({}).get_int('foo')
+ with self.assertRaises(BadFormatException):
+ InputsParser({'foo': []}).get_int('foo')
+ with self.assertRaises(BadFormatException):
+ InputsParser({'foo': ['']}).get_int('foo')
+ with self.assertRaises(BadFormatException):
+ InputsParser({'foo': ['bar']}).get_int('foo')
+ with self.assertRaises(BadFormatException):
+ InputsParser({'foo': ['0.1']}).get_int('foo')
+ self.assertEqual(0,
+ InputsParser({'foo': ['0']}).get_int('foo'))
+ self.assertEqual(17,
+ InputsParser({'foo': ['17', '23']}).get_int('foo'))
+ with self.assertRaises(BadFormatException):
+ InputsParser({}).get_float('foo')
+ with self.assertRaises(BadFormatException):
+ InputsParser({'foo': []}).get_float('foo')
+ with self.assertRaises(BadFormatException):
+ InputsParser({'foo': ['']}).get_float('foo')
+ with self.assertRaises(BadFormatException):
+ InputsParser({'foo': ['bar']}).get_float('foo')
+ self.assertEqual(0,
+ InputsParser({'foo': ['0']}).get_float('foo'))
+ self.assertEqual(0.1,
+ InputsParser({'foo': ['0.1']}).get_float('foo'))
+ self.assertEqual(1.23,
+ InputsParser({'foo': ['1.23', '456']}).
+ get_float('foo'))
class TestsWithServer(TestCaseWithServer):