File: test_issue_20_exdate_ignored.py

package info (click to toggle)
python-recurring-ical-events 3.3.3-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,128 kB
  • sloc: python: 2,896; sh: 15; makefile: 3
file content (73 lines) | stat: -rw-r--r-- 2,237 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
"""
This tests the issue 20. Exdates seem to be ignored.
https://github.com/niccokunzmann/python-recurring-ical-events/issues/20

Another issue of this calendar is that the UNTIL value ends one second
before the next event.
The event in February should be exluded therefore.
"""

import pytest


@pytest.mark.parametrize(
    "exdate",
    # exdates copied from the source
    "20191015T141500Z,20191022T141500Z,20191105T151500Z,20191119T151500Z,"
    "20191126T151500Z,20191203T151500Z,20191217T151500Z,20191224T151500Z,201912"
    "31T151500Z".split(","),
)
def test_exdates_do_not_show_up(exdate, calendars):
    """Test that certain exdates do not occur."""
    events = calendars.issue_20_exdate_ignored.at(exdate[:8])
    assert not events, f"{events[0].to_ical().decode()} should not occur at {exdate}."


expected_dates = [
    #    "20191015", # exdates are commented out
    #    "20191022",
    "20191029",
    #    "20191105",
    "20191112",
    #    "20191119",
    #    "20191126",
    #    "20191203",
    "20191210",
    #    "20191217",
    #    "20191224",
    #    "20191231",
    "20200107",
    "20200114",
    "20200121",
    "20200128",
]


@pytest.mark.parametrize("date", expected_dates)
def test_rrule_dates_show_up(date, calendars):
    """Test that the other events are present.

    The exdates are commented out.
    """
    events = calendars.issue_20_exdate_ignored.at(date)
    assert len(events) == 1, "There should be an event at.".format()


def test_there_are_n_events(calendars):
    """Test the total numer of events."""
    events = list(calendars.issue_20_exdate_ignored.all())
    for event, expected_date in zip(events, expected_dates):
        print("start: {} expected: {}".format(event["DTSTART"].dt, expected_date))
    for date in expected_dates[len(events) :]:
        print(f"expected: {date}")
    for event in events[len(expected_dates) :]:
        print("not expected: {}".format(event["DTSTART"].dt))
    assert len(events) == 7


def test_rdate_after_until_also_in_rrule(calendars):
    """Special test for pytz, if the event is included."""
    events = calendars.rdate_falls_on_rrule_until.at("20200204")
    for event in events:
        print(event)
    assert len(events) == 1