File: test_managers_rule.py

package info (click to toggle)
django-recurrence 1.12.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,148 kB
  • sloc: python: 2,530; javascript: 2,502; makefile: 159; sh: 6
file content (99 lines) | stat: -rw-r--r-- 2,518 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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
from datetime import datetime

from dateutil import tz
from django.utils.timezone import make_aware
from recurrence import choices
from recurrence.models import Param, Recurrence, Rule
import pytest

import recurrence


@pytest.mark.django_db
def test_create_from_rule_object():
    limits = Recurrence.objects.create()
    rule = Rule.objects.create(
        recurrence=limits,
        mode=choices.INCLUSION,
        freq=recurrence.WEEKLY,
        until=make_aware(datetime(2014, 12, 31, 0, 0, 0), tz.UTC)
    )
    object = Rule.objects.create_from_rule_object(
        choices.EXCLUSION,
        rule,
        limits
    )

    assert rule.to_rule_object() == object.to_rule_object()
    assert rule.mode is True
    assert object.mode is False


@pytest.mark.django_db
def test_create_from_rule_object_byday():
    limits = Recurrence.objects.create()
    rule = Rule.objects.create(
        recurrence=limits,
        mode=choices.INCLUSION,
        freq=recurrence.WEEKLY,
        until=make_aware(datetime(2014, 12, 31, 0, 0, 0), tz.UTC)
    )
    Param.objects.create(
        rule=rule,
        param='byday',
        value=6,
        index=0
    )

    expected = 'RRULE:FREQ=WEEKLY;UNTIL=20141231T000000Z;BYDAY=SU'

    original = Rule.objects.to_rule_object(rule)
    serialized = recurrence.serialize(original)
    assert serialized == expected

    object = Rule.objects.create_from_rule_object(
        choices.INCLUSION,
        original,
        limits
    )

    serialized = recurrence.serialize(object.to_rule_object())
    assert serialized == expected


@pytest.mark.django_db
def test_create_from_rule_object_bymonth():
    limits = Recurrence.objects.create()
    rule = Rule.objects.create(
        recurrence=limits,
        mode=choices.INCLUSION,
        freq=recurrence.WEEKLY,
        until=make_aware(datetime(2014, 12, 31, 0, 0, 0), tz.UTC)
    )
    Param.objects.create(
        rule=rule,
        param='bymonth',
        value=6,
        index=0
    )
    Param.objects.create(
        rule=rule,
        param='bymonth',
        value=8,
        index=1
    )

    expected = 'RRULE:FREQ=WEEKLY;UNTIL=20141231T000000Z;BYMONTH=6,8'

    original = Rule.objects.to_rule_object(rule)
    serialized = recurrence.serialize(original)
    assert serialized == expected

    object = Rule.objects.create_from_rule_object(
        choices.INCLUSION,
        original,
        limits
    )

    serialized = recurrence.serialize(object.to_rule_object())
    assert serialized == expected