chrono/tests/manager/test_partial_bookings.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

57 lines
1.7 KiB
Python
Raw Normal View History

import datetime
import pytest
from chrono.agendas.models import Agenda, Booking, Event
from tests.utils import login
pytestmark = pytest.mark.django_db
def test_manager_partial_bookings_add_agenda(app, admin_user, settings):
app = login(app)
resp = app.get('/manage/agendas/add/')
assert 'partial-bookings' not in resp.text
settings.PARTIAL_BOOKINGS_ENABLED = True
resp = app.get('/manage/agendas/add/')
resp.form['label'] = 'Foo bar'
resp.form['kind'] = 'partial-bookings'
resp = resp.form.submit().follow()
agenda = Agenda.objects.get(label='Foo bar')
assert agenda.kind == 'events'
assert agenda.partial_bookings is True
def test_manager_partial_bookings_add_event(app, admin_user):
agenda = Agenda.objects.create(label='Foo bar', kind='events', partial_bookings=True)
app = login(app)
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
resp = resp.click('New Event')
assert 'duration' not in resp.form.fields
resp.form['start_datetime_0'] = '2023-02-15'
resp.form['start_datetime_1'] = '08:00'
resp.form['end_time'] = '18:00'
resp.form['places'] = 10
resp = resp.form.submit().follow()
event = Event.objects.get()
assert event.end_time == datetime.time(18, 00)
assert event.duration is None
resp = app.get('/manage/agendas/%s/events/%s/edit' % (agenda.pk, event.pk))
assert 'duration' not in resp.form.fields
assert resp.form['end_time'].value == '18:00'
resp.form['end_time'] = '08:01'
resp = resp.form.submit().follow()
resp = app.get('/manage/agendas/%s/events/%s/edit' % (agenda.pk, event.pk))
resp.form['end_time'] = '07:59'
resp = resp.form.submit()
assert 'End time must be greater than start time.' in resp.text