dav_events: improved Iso8601Serializer and its tests
Run tests / Execute tox to run the test suite (push) Successful in 2m51s
Run tests / Execute tox to run the test suite (push) Successful in 2m51s
This commit is contained in:
@@ -27,7 +27,44 @@ class Iso8601SerializerTestCase(TestCase):
|
||||
obj = datetime.datetime.combine(date, time)
|
||||
yield (obj, text)
|
||||
|
||||
def test_serialize(self):
|
||||
def test_init_without_arg(self):
|
||||
with self.assertRaises(TypeError) as cm:
|
||||
_ = Iso8601Serializer()
|
||||
self.assertEqual(str(cm.exception), 'Iso8601Serializer.__init__()'
|
||||
' missing 1 required positional argument: \'value\'')
|
||||
|
||||
def test_init_with_date(self):
|
||||
date_obj = datetime.date(1976, 2, 1)
|
||||
serializer = Iso8601Serializer(date_obj)
|
||||
self.assertEqual(str(serializer), 'ISO8601:1976-02-01')
|
||||
|
||||
def test_init_with_datetime(self):
|
||||
datetime_obj = datetime.datetime(1976, 2, 1, 12, 34, 56)
|
||||
serializer = Iso8601Serializer(datetime_obj)
|
||||
self.assertEqual(str(serializer), 'ISO8601:1976-02-01T12:34:56')
|
||||
|
||||
def test_init_with_time(self):
|
||||
time_obj = datetime.time(12, 34, 56)
|
||||
serializer = Iso8601Serializer(time_obj)
|
||||
self.assertEqual(str(serializer), 'ISO8601:12:34:56')
|
||||
|
||||
def test_init_with_valid_text(self):
|
||||
text = 'ISO8601:1976-02-01'
|
||||
serializer = Iso8601Serializer(text)
|
||||
self.assertEqual(str(serializer), text)
|
||||
|
||||
def test_init_with_invalid_format(self):
|
||||
text = 'ISO8601:02.01.1976'
|
||||
with self.assertRaises(ValueError) as cm:
|
||||
_ = Iso8601Serializer(text)
|
||||
self.assertEqual(str(cm.exception), 'Format not recognized \'02.01.1976\'')
|
||||
|
||||
def test_init_with_invalid_string(self):
|
||||
text = '1976-02-01'
|
||||
with self.assertRaisesRegex(ValueError, 'String must begin with \'ISO8601:\''):
|
||||
_ = Iso8601Serializer(text)
|
||||
|
||||
def test_serialize_valid(self):
|
||||
test_data = []
|
||||
|
||||
# Check date objects
|
||||
@@ -43,10 +80,12 @@ class Iso8601SerializerTestCase(TestCase):
|
||||
serialized = Iso8601Serializer.serialize(obj)
|
||||
self.assertEqual(serialized, expected)
|
||||
|
||||
# Check invalid input
|
||||
def test_serialize_invalid(self):
|
||||
invalid_values = (
|
||||
None, True, False,
|
||||
'2019-03-01',
|
||||
None,
|
||||
True,
|
||||
False,
|
||||
'ISO8601:1976-02-01',
|
||||
)
|
||||
for value in invalid_values:
|
||||
emsg = ('Expected datetime.datetime, datetime.date or datetime.time,'
|
||||
@@ -56,7 +95,7 @@ class Iso8601SerializerTestCase(TestCase):
|
||||
serialized = Iso8601Serializer.serialize(value, ignore_unsupported_input=True)
|
||||
self.assertEqual(serialized, value)
|
||||
|
||||
def test_deserialize(self):
|
||||
def test_deserialize_valid(self):
|
||||
test_data = []
|
||||
|
||||
# Check '<YYYY>-<MM>-<DD>' format
|
||||
@@ -71,3 +110,18 @@ class Iso8601SerializerTestCase(TestCase):
|
||||
deserialized = Iso8601Serializer.deserialize(text)
|
||||
self.assertIsInstance(deserialized, obj.__class__)
|
||||
self.assertEqual(deserialized, obj)
|
||||
|
||||
def test_deserialize_invalid(self):
|
||||
invalid_data = (
|
||||
(None, TypeError, 'Expected string type, not NoneType'),
|
||||
(True, TypeError, 'Expected string type, not bool'),
|
||||
(False, TypeError, 'Expected string type, not bool'),
|
||||
('1976-02-01', ValueError, 'String must begin with \'ISO8601:\''),
|
||||
('ISO8601:02.01.1976', ValueError, 'Format not recognized \'02.01.1976\''),
|
||||
)
|
||||
for value, expected_exception, expected_msg in invalid_data:
|
||||
with self.assertRaisesRegex(expected_exception, expected_msg):
|
||||
Iso8601Serializer.deserialize(value)
|
||||
serialized = Iso8601Serializer.deserialize(value, ignore_unsupported_input=True)
|
||||
self.assertEqual(serialized, value)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user