57 lines
1.7 KiB
Python
57 lines
1.7 KiB
Python
import datetime
|
|
|
|
from meal_manager.models import Event, Household, Subscription
|
|
from meal_manager.scripts import apply_subscriptions
|
|
|
|
|
|
def test_subscriptions(db_session):
|
|
now = datetime.datetime.now()
|
|
event1 = Event(
|
|
title="far future",
|
|
event_time=now + datetime.timedelta(days=8, hours=2),
|
|
registration_deadline=now + datetime.timedelta(days=3),
|
|
description="This event should not be proceesed.",
|
|
)
|
|
event2 = Event(
|
|
title="soon",
|
|
event_time=now + datetime.timedelta(days=7, hours=2),
|
|
registration_deadline=now + datetime.timedelta(days=2),
|
|
description="This event should be proceesed.",
|
|
)
|
|
ignore = Event(
|
|
title="ignore me",
|
|
event_time=now + datetime.timedelta(days=7, hours=2),
|
|
description=(
|
|
"This event should not be proceesed because it "
|
|
"has ignore_subscriptions set to True."
|
|
),
|
|
registration_deadline=now + datetime.timedelta(days=2, hours=2),
|
|
ignore_subscriptions=True,
|
|
)
|
|
db_session.add(event1)
|
|
db_session.add(event2)
|
|
db_session.add(ignore)
|
|
|
|
db_session.add(Household(name="Klaus", id=1))
|
|
db_session.add(
|
|
Subscription(
|
|
household_id=1,
|
|
num_adult_meals=2,
|
|
num_children_meals=1,
|
|
num_small_children_meals=0,
|
|
)
|
|
)
|
|
db_session.commit()
|
|
|
|
assert not event1.subscriptions_applied
|
|
assert not event2.subscriptions_applied
|
|
|
|
apply_subscriptions(db_session)
|
|
|
|
assert len(event1.registrations) == 0
|
|
assert len(event2.registrations) == 1
|
|
assert len(ignore.registrations) == 0
|
|
assert not event1.subscriptions_applied
|
|
assert not ignore.subscriptions_applied
|
|
assert event2.subscriptions_applied
|