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
|