diff --git a/icalevents/icaldownload.py b/icalevents/icaldownload.py index d94f04a..6297662 100644 --- a/icalevents/icaldownload.py +++ b/icalevents/icaldownload.py @@ -100,7 +100,8 @@ def decode(content, encoding="utf-8", apple_fix=False): :param apple_fix: fix Apple txdata bug :return: decoded (and fixed) content """ - content = content.decode(encoding) + if isinstance(content, bytes): + content = content.decode(encoding) content = content.replace("\r", "") if apple_fix: diff --git a/test/test_icalevents.py b/test/test_icalevents.py index c1850aa..d3e7ab3 100644 --- a/test/test_icalevents.py +++ b/test/test_icalevents.py @@ -348,26 +348,32 @@ def test_request_data(self): def test_string_data(self): ical = "test/test_data/basic.ics" - with open(ical, mode="rb") as f: - string_content = f.read() - - start = date(2017, 5, 18) - end = date(2017, 5, 19) - key = "basic" - - icalevents.request_data( - key, - url=None, - file=None, - string_content=string_content, - start=start, - end=end, - fix_apple=False, - ) - - self.assertTrue(icalevents.all_done(key), "request is finished") - self.assertEqual(len(icalevents.latest_events(key)), 2, "two events are found") + raw_data = f.read() + + for stest, string_content in [ + ("as bytes", raw_data), + ("as str", raw_data.decode()), + ]: + with self.subTest(stest): + start = date(2017, 5, 18) + end = date(2017, 5, 19) + key = "basic" + + icalevents.request_data( + key, + url=None, + file=None, + string_content=string_content, + start=start, + end=end, + fix_apple=False, + ) + + self.assertTrue(icalevents.all_done(key), "request is finished") + self.assertEqual( + len(icalevents.latest_events(key)), 2, "two events are found" + ) def test_events_no_description(self): ical = "test/test_data/no_description.ics"