From 57e0c2cc1bb4f8d2032444f8dd24fb5b1d28ed22 Mon Sep 17 00:00:00 2001 From: Jens Kleineheismann Date: Mon, 15 Jun 2026 13:57:36 +0200 Subject: [PATCH] dav_events: improved tests for Iso8601Serializer --- dav_events/converters.py | 2 +- dav_events/tests/test_converters.py | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/dav_events/converters.py b/dav_events/converters.py index 26b015a..d6a8cea 100644 --- a/dav_events/converters.py +++ b/dav_events/converters.py @@ -91,7 +91,7 @@ class Iso8601Serializer: value -= offset elif gd['offdir'] == '-': value += offset - else: + else: # pragma no cover raise ValueError('Offset format not recognized \'{str}\''.format(str=gd['offset'])) value = value.replace(tzinfo=pytz.UTC) diff --git a/dav_events/tests/test_converters.py b/dav_events/tests/test_converters.py index 23c4da4..48a50ec 100644 --- a/dav_events/tests/test_converters.py +++ b/dav_events/tests/test_converters.py @@ -111,6 +111,31 @@ class Iso8601SerializerTestCase(TestCase): self.assertIsInstance(deserialized, obj.__class__) self.assertEqual(deserialized, obj) + def test_deserialize_with_valid_offset(self): + test_data = ( + ('1976-02-01T12:34:56+02', '1976-02-01 10:34:56+00:00'), + ('1976-02-01T12:34:56+10:04', '1976-02-01 02:30:56+00:00'), + ('1976-02-01T12:34:56-02', '1976-02-01 14:34:56+00:00'), + ('1976-02-01T12:34:56-12:14', '1976-02-02 00:48:56+00:00'), + ) + for input_text, dt_str in test_data: + text = 'ISO8601:{}'.format(input_text) + deserialized = Iso8601Serializer.deserialize(text) + self.assertEqual(str(deserialized), dt_str) + + def test_deserialize_with_invalid_offset(self): + invalid_data = ( + '1976-02-01T12:34:56+2', + '1976-02-01T12:34:56+02:02:02', + '1976-02-01T12:34:56+-02', + '1976-02-01T12:34:56=02', + '1976-02-01T12:34:56+CEST', + ) + for input_text in invalid_data: + text = 'ISO8601:{}'.format(input_text) + with self.assertRaisesRegex(ValueError, 'Format not recognized \'.*\''): + Iso8601Serializer.deserialize(text) + def test_deserialize_invalid(self): invalid_data = ( (None, TypeError, 'Expected string type, not NoneType'),