chrono/tests/test_agendas.py

86 lines
2.6 KiB
Python

import pytest
import datetime
from django.utils.timezone import now
from chrono.agendas.models import Agenda, Event, Booking, MeetingType
pytestmark = pytest.mark.django_db
def test_slug():
agenda = Agenda(label=u'Foo bar')
agenda.save()
assert agenda.slug == 'foo-bar'
def test_existing_slug():
agenda = Agenda(label=u'Foo bar', slug='bar')
agenda.save()
assert agenda.slug == 'bar'
def test_duplicate_slugs():
agenda = Agenda(label=u'Foo baz')
agenda.save()
assert agenda.slug == 'foo-baz'
agenda = Agenda(label=u'Foo baz')
agenda.save()
assert agenda.slug == 'foo-baz-1'
agenda = Agenda(label=u'Foo baz')
agenda.save()
assert agenda.slug == 'foo-baz-2'
def test_event_manager():
agenda = Agenda(label=u'Foo baz')
agenda.save()
event = Event(start_datetime=now(), places=10, agenda=agenda)
event.save()
booking = Booking(event=event)
booking.save()
assert Event.objects.all()[0].booked_places == 1
booking.cancellation_datetime = now()
booking.save()
assert Event.objects.all()[0].booked_places == 0
def test_event_bookable_period():
agenda = Agenda(label=u'Foo bar')
agenda.save()
event = Event(start_datetime=now() + datetime.timedelta(days=10), places=10, agenda=agenda)
event.save()
assert event.in_bookable_period() is True
agenda.minimal_booking_delay = 20
assert event.in_bookable_period() is False
agenda.minimal_booking_delay = 1
agenda.maximal_booking_delay = 5
assert event.in_bookable_period() is False
agenda.maximal_booking_delay = 20
assert event.in_bookable_period() is True
# special case for events that happens today
agenda.minimal_booking_delay = 0
agenda.save()
event = Event(start_datetime=now() + datetime.timedelta(minutes=10), places=10, agenda=agenda)
event.save()
assert event.in_bookable_period() is True
event = Event(start_datetime=now() - datetime.timedelta(minutes=10), places=10, agenda=agenda)
event.save()
assert event.in_bookable_period() is False
def test_meeting_type_slugs():
agenda1 = Agenda(label=u'Foo bar')
agenda1.save()
agenda2 = Agenda(label=u'Foo bar second')
agenda2.save()
meeting_type1 = MeetingType(agenda=agenda1, label=u'Baz')
meeting_type1.save()
assert meeting_type1.slug == 'baz'
meeting_type2 = MeetingType(agenda=agenda1, label=u'Baz')
meeting_type2.save()
assert meeting_type2.slug == 'baz-1'
meeting_type3 = MeetingType(agenda=agenda2, label=u'Baz')
meeting_type3.save()
assert meeting_type3.slug == 'baz'