Skip to content

Commit

Permalink
refactor test_issue_237
Browse files Browse the repository at this point in the history
  • Loading branch information
jacadzaca committed Oct 7, 2022
1 parent 6e78ab6 commit d148cba
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 1 deletion.
11 changes: 11 additions & 0 deletions src/icalendar/tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,14 @@
import pytest
import icalendar

import datetime
import pytz
from dateutil import tz
try:
import zoneinfo
except ModuleNotFoundError:
from backports import zoneinfo

LOGGER = logging.getLogger(__name__)

class DataSource:
Expand Down Expand Up @@ -41,3 +49,6 @@ def timezones():
def events():
return DataSource(EVENTS_FOLDER, icalendar.Event.from_ical)

@pytest.fixture(params=[pytz.timezone, tz.gettz, zoneinfo.ZoneInfo])
def timezone(request):
return request.param
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
BEGIN:VEVENT
DTSTART;TZID="(UTC-03:00) Brasília":20170511T133000
DTEND;TZID="(UTC-03:00) Brasília":20170511T140000
END:VEVENT

25 changes: 24 additions & 1 deletion src/icalendar/tests/test_encoding.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import unittest

import pytest

import datetime
import icalendar
import os
import pytz


class TestEncoding(unittest.TestCase):

def test_create_from_ical(self):
Expand Down Expand Up @@ -88,3 +89,25 @@ def test_unicode_parameter_name(self):
+ b'\xc3\xa4\xc3\xb6\xc3\xbc\xc3\x9f\xc3\x84\xc3\x96\xc3\x9c\r\n'
+ b'END:VEVENT\r\nEND:VCALENDAR\r\n'
)

def test_parses_event_with_non_ascii_tzid_issue_237(events, timezone):
"""Issue #237 - Fail to parse timezone with non-ascii TZID
see https://github.com/collective/icalendar/issues/237
"""
start = events.issue_237_fail_to_parse_timezone_with_non_ascii_tzid.decoded('DTSTART')
expected = datetime.datetime(2017, 5, 11, 13, 30, tzinfo=timezone('America/Sao_Paulo'))
assert start == expected

def test_parses_timezone_with_non_ascii_tzid_issue_237(timezones):
"""Issue #237 - Fail to parse timezone with non-ascii TZID
see https://github.com/collective/icalendar/issues/237
"""
assert timezones.issue_237_brazilia_standard['tzid'] == '(UTC-03:00) Brasília'

@pytest.mark.parametrize('timezone_name', ['standard', 'daylight'])
def test_parses_timezone_with_non_ascii_tzname_issue_273(timezones, timezone_name):
"""Issue #237 - Fail to parse timezone with non-ascii TZID
see https://github.com/collective/icalendar/issues/237
"""
assert timezones.issue_237_brazilia_standard.walk(timezone_name)[0]['TZNAME'] == f'Brasília {timezone_name}'

17 changes: 17 additions & 0 deletions src/icalendar/tests/timezones/issue_237_brazilia_standard.ics
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
BEGIN:VTIMEZONE
TZID:(UTC-03:00) Brasília
BEGIN:STANDARD
TZNAME:Brasília standard
DTSTART:16010101T235959
TZOFFSETFROM:-0200
TZOFFSETTO:-0300
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=3SA;BYMONTH=2
END:STANDARD
BEGIN:DAYLIGHT
TZNAME:Brasília daylight
DTSTART:16010101T235959
TZOFFSETFROM:-0300
TZOFFSETTO:-0200
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SA;BYMONTH=10
END:DAYLIGHT
END:VTIMEZONE

0 comments on commit d148cba

Please sign in to comment.