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