chrono/tests/manager/test_partial_bookings.py

57 lines
1.7 KiB
Python

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