From 065983607b995e1045346d80825db8afcb7e87ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micka=C3=ABl=20Schoentgen?= Date: Tue, 4 Feb 2025 18:28:12 +0100 Subject: [PATCH] fix: allow `string_content` to be a `str` --- icalevents/icaldownload.py | 3 ++- test/test_icalevents.py | 44 ++++++++++++++++++++++---------------- 2 files changed, 27 insertions(+), 20 deletions(-) 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"