Jellyfin(8096), OrbStack(8097) 포트 충돌으로 변경. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
112 lines
3.2 KiB
Python
112 lines
3.2 KiB
Python
"""This tests the RDATE property.
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
from datetime import date, datetime
|
|
from pprint import pprint
|
|
from typing import Union
|
|
|
|
import pytest
|
|
|
|
from icalendar import (
|
|
Calendar,
|
|
Event,
|
|
Journal,
|
|
TimezoneDaylight,
|
|
TimezoneStandard,
|
|
Todo,
|
|
)
|
|
|
|
C_RDATE = Union[Event, Todo, Journal, TimezoneDaylight, TimezoneStandard]
|
|
|
|
@pytest.fixture(params = [Event, Todo, Journal, TimezoneDaylight, TimezoneStandard])
|
|
def c_rdate(request) -> C_RDATE:
|
|
"""Return a component that uses RDATE."""
|
|
return request.param()
|
|
|
|
|
|
@pytest.fixture(
|
|
params=[
|
|
lambda _tzp: date(2019, 10, 11),
|
|
lambda _tzp: datetime(2000, 1, 13, 12, 1),
|
|
lambda tzp: tzp.localize_utc(datetime(2031, 12, 1, 23, 59)),
|
|
lambda tzp: tzp.localize(datetime(1984, 1, 13, 13, 1), "Europe/Athens"),
|
|
lambda _tzp: ((datetime(2000, 1, 13, 12, 1), datetime(2000, 1, 13, 12, 2))),
|
|
lambda tzp: ((tzp.localize_utc(datetime(2001, 1, 13, 12, 1)), tzp.localize_utc(datetime(2001, 1, 13, 12, 2)))),
|
|
]
|
|
)
|
|
def rdate(request, tzp):
|
|
"""Possible values for an rdate."""
|
|
return request.param(tzp)
|
|
|
|
def test_no_rdates_by_default(c_rdate):
|
|
"""We expect no rdate by default."""
|
|
assert c_rdate.rdates == []
|
|
|
|
|
|
def test_set_and_retrieve_rdate(rdate, c_rdate):
|
|
"""Set the attribute and get the value."""
|
|
c_rdate.add("RDATE", [rdate])
|
|
result = [rdate if isinstance(rdate, tuple) else (rdate, None)]
|
|
assert c_rdate.rdates == result
|
|
|
|
|
|
def test_get_example_0(calendars):
|
|
"""Test an example rdate."""
|
|
cal : Calendar = calendars.rfc_5545_RDATE_example
|
|
event = cal.events[0]
|
|
assert event.rdates == [(datetime(1997, 7, 14, 12, 30), None)]
|
|
|
|
|
|
def test_get_example_1(calendars, tzp):
|
|
"""Test an example rdate."""
|
|
cal : Calendar = calendars.rfc_5545_RDATE_example
|
|
event = cal.events[1]
|
|
assert event.rdates == [(tzp.localize_utc(datetime(1997, 7, 14, 12, 30)), None)]
|
|
|
|
def test_get_example_2(calendars, tzp):
|
|
"""Test an example rdate."""
|
|
cal : Calendar = calendars.rfc_5545_RDATE_example
|
|
event = cal.events[2]
|
|
assert event.rdates == [(tzp.localize(datetime(1997, 7, 14, 8, 30), "America/New_York"),None)]
|
|
|
|
def test_get_example_3(calendars, tzp):
|
|
"""Test an example rdate."""
|
|
cal : Calendar = calendars.rfc_5545_RDATE_example
|
|
event = cal.events[3]
|
|
rdates_3 = [
|
|
(tzp.localize_utc(datetime(1996, 4, 3, 2)), tzp.localize_utc(datetime(1996, 4, 3, 4))),
|
|
(tzp.localize_utc(datetime(1996, 4, 4, 1)), tzp.localize_utc(datetime(1996, 4, 4, 4))),
|
|
]
|
|
pprint(event.rdates)
|
|
pprint(rdates_3)
|
|
assert event.rdates == rdates_3
|
|
|
|
def d(i:int) -> tuple[date, None]:
|
|
s = str(i)
|
|
return (date(int(s[:4]), int(s[4:6].lstrip("0")), int(s[6:].lstrip("0"))), None)
|
|
|
|
|
|
RDATES_4 = list(map(d, (
|
|
19970101,
|
|
19970120,
|
|
19970217,
|
|
19970421,
|
|
19970526,
|
|
19970704,
|
|
19970901,
|
|
19971014,
|
|
19971128,
|
|
19971129,
|
|
19971225,
|
|
)))
|
|
|
|
|
|
def test_get_example_4(calendars, tzp):
|
|
"""Test an example rdate."""
|
|
cal : Calendar = calendars.rfc_5545_RDATE_example
|
|
event = cal.events[4]
|
|
pprint(event.rdates)
|
|
pprint(RDATES_4)
|
|
assert event.rdates == RDATES_4
|