1935 |
1935 |
assert Booking.objects.count() == 6
|
1936 |
1936 |
|
1937 |
1937 |
|
|
1938 |
def test_bookings_api(app, user):
|
|
1939 |
events_agenda = Agenda.objects.create(kind='events')
|
|
1940 |
events_event = Event.objects.create(agenda=events_agenda, start_datetime=now(), places=10)
|
|
1941 |
events_booking1 = Booking.objects.create(event=events_event, user_external_id='enfant-1234')
|
|
1942 |
events_booking2 = Booking.objects.create(event=events_event, user_external_id='enfant-1234')
|
|
1943 |
Booking.objects.create(event=events_event, user_external_id='foobar')
|
|
1944 |
Booking.objects.create(event=events_event)
|
|
1945 |
|
|
1946 |
meetings_agenda = Agenda.objects.create(kind='meetings')
|
|
1947 |
meetings_event = Event.objects.create(agenda=meetings_agenda, start_datetime=now(), places=1)
|
|
1948 |
meetings_booking1 = Booking.objects.create(event=meetings_event, user_external_id='enfant-1234')
|
|
1949 |
Booking.objects.create(event=meetings_event, user_external_id='baz')
|
|
1950 |
Booking.objects.create(event=meetings_event, user_external_id='baz')
|
|
1951 |
Booking.objects.create(event=meetings_event)
|
|
1952 |
|
|
1953 |
app.authorization = ('Basic', ('john.doe', 'password'))
|
|
1954 |
resp = app.get('/api/bookings/')
|
|
1955 |
assert resp.json['err'] == 1
|
|
1956 |
assert resp.json['err_class'] == 'missing param user_external_id'
|
|
1957 |
assert resp.json['err_desc'] == 'missing param user_external_id'
|
|
1958 |
|
|
1959 |
resp = app.get('/api/bookings/', params={'user_external_id': ''})
|
|
1960 |
assert resp.json['err'] == 1
|
|
1961 |
assert resp.json['err_class'] == 'missing param user_external_id'
|
|
1962 |
assert resp.json['err_desc'] == 'missing param user_external_id'
|
|
1963 |
|
|
1964 |
resp = app.get('/api/bookings/', params={'user_external_id': 'enfant-1234'})
|
|
1965 |
assert resp.json['err'] == 0
|
|
1966 |
assert resp.json['data'] == [
|
|
1967 |
{
|
|
1968 |
'id': events_booking1.pk,
|
|
1969 |
'in_waiting_list': False,
|
|
1970 |
'user_was_present': None,
|
|
1971 |
'user_absence_reason': '',
|
|
1972 |
},
|
|
1973 |
{
|
|
1974 |
'id': events_booking2.pk,
|
|
1975 |
'in_waiting_list': False,
|
|
1976 |
'user_was_present': None,
|
|
1977 |
'user_absence_reason': '',
|
|
1978 |
},
|
|
1979 |
{
|
|
1980 |
'id': meetings_booking1.pk,
|
|
1981 |
'in_waiting_list': False,
|
|
1982 |
'user_was_present': None,
|
|
1983 |
'user_absence_reason': '',
|
|
1984 |
},
|
|
1985 |
]
|
|
1986 |
|
|
1987 |
|
|
1988 |
def test_bookings_api_filter_agenda(app, user):
|
|
1989 |
bookings = []
|
|
1990 |
for label in ['foobar', 'foobaz']:
|
|
1991 |
agenda = Agenda.objects.create(label='foobar')
|
|
1992 |
event = Event.objects.create(agenda=agenda, start_datetime=now(), places=10)
|
|
1993 |
bookings.append(Booking.objects.create(event=event, user_external_id='42'))
|
|
1994 |
|
|
1995 |
app.authorization = ('Basic', ('john.doe', 'password'))
|
|
1996 |
resp = app.get('/api/bookings/', params={'user_external_id': '42', 'agenda': 'foo'})
|
|
1997 |
assert resp.json['err'] == 0
|
|
1998 |
assert [b['id'] for b in resp.json['data']] == []
|
|
1999 |
|
|
2000 |
resp = app.get('/api/bookings/', params={'user_external_id': '42', 'agenda': 'foobar'})
|
|
2001 |
assert [b['id'] for b in resp.json['data']] == [bookings[0].pk]
|
|
2002 |
|
|
2003 |
|
|
2004 |
def test_bookings_api_filter_category(app, user):
|
|
2005 |
bookings = []
|
|
2006 |
for label in ['foobar', 'foobaz']:
|
|
2007 |
category = Category.objects.create(label=label)
|
|
2008 |
agenda = Agenda.objects.create(category=category)
|
|
2009 |
event = Event.objects.create(agenda=agenda, start_datetime=now(), places=10)
|
|
2010 |
bookings.append(Booking.objects.create(event=event, user_external_id='42'))
|
|
2011 |
|
|
2012 |
app.authorization = ('Basic', ('john.doe', 'password'))
|
|
2013 |
resp = app.get('/api/bookings/', params={'user_external_id': '42', 'category': 'foo'})
|
|
2014 |
assert resp.json['err'] == 0
|
|
2015 |
assert [b['id'] for b in resp.json['data']] == []
|
|
2016 |
|
|
2017 |
resp = app.get('/api/bookings/', params={'user_external_id': '42', 'category': 'foobar'})
|
|
2018 |
assert [b['id'] for b in resp.json['data']] == [bookings[0].pk]
|
|
2019 |
|
|
2020 |
|
|
2021 |
def test_bookings_api_filter_date_start(app, user):
|
|
2022 |
agenda = Agenda.objects.create()
|
|
2023 |
event = Event.objects.create(
|
|
2024 |
agenda=agenda, start_datetime=make_aware(datetime.datetime(2017, 5, 22, 0, 0)), places=10
|
|
2025 |
)
|
|
2026 |
booking = Booking.objects.create(event=event, user_external_id='42')
|
|
2027 |
|
|
2028 |
app.authorization = ('Basic', ('john.doe', 'password'))
|
|
2029 |
resp = app.get('/api/bookings/', params={'user_external_id': '42', 'date_start': 'foo'}, status=400)
|
|
2030 |
assert resp.json['err'] == 1
|
|
2031 |
assert resp.json['err_class'] == "invalid payload"
|
|
2032 |
assert resp.json['err_desc'] == "invalid payload"
|
|
2033 |
|
|
2034 |
resp = app.get('/api/bookings/', params={'user_external_id': '42', 'date_start': '2017-05-21'})
|
|
2035 |
assert resp.json['err'] == 0
|
|
2036 |
assert [b['id'] for b in resp.json['data']] == [booking.pk]
|
|
2037 |
resp = app.get('/api/bookings/', params={'user_external_id': '42', 'date_start': '2017-05-22'})
|
|
2038 |
assert resp.json['err'] == 0
|
|
2039 |
assert [b['id'] for b in resp.json['data']] == [booking.pk]
|
|
2040 |
resp = app.get('/api/bookings/', params={'user_external_id': '42', 'date_start': '2017-05-23'})
|
|
2041 |
assert resp.json['err'] == 0
|
|
2042 |
assert [b['id'] for b in resp.json['data']] == []
|
|
2043 |
|
|
2044 |
event.start_datetime = make_aware(datetime.datetime(2017, 5, 22, 23, 59))
|
|
2045 |
event.save()
|
|
2046 |
resp = app.get('/api/bookings/', params={'user_external_id': '42', 'date_start': '2017-05-21'})
|
|
2047 |
assert resp.json['err'] == 0
|
|
2048 |
assert [b['id'] for b in resp.json['data']] == [booking.pk]
|
|
2049 |
resp = app.get('/api/bookings/', params={'user_external_id': '42', 'date_start': '2017-05-22'})
|
|
2050 |
assert resp.json['err'] == 0
|
|
2051 |
assert [b['id'] for b in resp.json['data']] == [booking.pk]
|
|
2052 |
resp = app.get('/api/bookings/', params={'user_external_id': '42', 'date_start': '2017-05-23'})
|
|
2053 |
assert resp.json['err'] == 0
|
|
2054 |
assert [b['id'] for b in resp.json['data']] == []
|
|
2055 |
|
|
2056 |
|
|
2057 |
def test_bookings_api_filter_date_end(app, user):
|
|
2058 |
agenda = Agenda.objects.create()
|
|
2059 |
event = Event.objects.create(
|
|
2060 |
agenda=agenda, start_datetime=make_aware(datetime.datetime(2017, 5, 22, 0, 0)), places=10
|
|
2061 |
)
|
|
2062 |
booking = Booking.objects.create(event=event, user_external_id='42')
|
|
2063 |
|
|
2064 |
app.authorization = ('Basic', ('john.doe', 'password'))
|
|
2065 |
resp = app.get('/api/bookings/', params={'user_external_id': '42', 'date_end': 'foo'}, status=400)
|
|
2066 |
assert resp.json['err'] == 1
|
|
2067 |
assert resp.json['err_class'] == "invalid payload"
|
|
2068 |
assert resp.json['err_desc'] == "invalid payload"
|
|
2069 |
|
|
2070 |
resp = app.get('/api/bookings/', params={'user_external_id': '42', 'date_end': '2017-05-21'})
|
|
2071 |
assert resp.json['err'] == 0
|
|
2072 |
assert [b['id'] for b in resp.json['data']] == []
|
|
2073 |
resp = app.get('/api/bookings/', params={'user_external_id': '42', 'date_end': '2017-05-22'})
|
|
2074 |
assert resp.json['err'] == 0
|
|
2075 |
assert [b['id'] for b in resp.json['data']] == [booking.pk]
|
|
2076 |
resp = app.get('/api/bookings/', params={'user_external_id': '42', 'date_end': '2017-05-23'})
|
|
2077 |
assert resp.json['err'] == 0
|
|
2078 |
assert [b['id'] for b in resp.json['data']] == [booking.pk]
|
|
2079 |
|
|
2080 |
event.start_datetime = make_aware(datetime.datetime(2017, 5, 22, 23, 59))
|
|
2081 |
event.save()
|
|
2082 |
resp = app.get('/api/bookings/', params={'user_external_id': '42', 'date_end': '2017-05-21'})
|
|
2083 |
assert resp.json['err'] == 0
|
|
2084 |
assert [b['id'] for b in resp.json['data']] == []
|
|
2085 |
resp = app.get('/api/bookings/', params={'user_external_id': '42', 'date_end': '2017-05-22'})
|
|
2086 |
assert resp.json['err'] == 0
|
|
2087 |
assert [b['id'] for b in resp.json['data']] == [booking.pk]
|
|
2088 |
resp = app.get('/api/bookings/', params={'user_external_id': '42', 'date_end': '2017-05-23'})
|
|
2089 |
assert resp.json['err'] == 0
|
|
2090 |
assert [b['id'] for b in resp.json['data']] == [booking.pk]
|
|
2091 |
|
|
2092 |
|
|
2093 |
def test_bookings_api_filter_user_was_present(app, user):
|
|
2094 |
agenda = Agenda.objects.create()
|
|
2095 |
event = Event.objects.create(
|
|
2096 |
agenda=agenda, start_datetime=make_aware(datetime.datetime(2017, 5, 22, 0, 0)), places=10
|
|
2097 |
)
|
|
2098 |
Booking.objects.create(event=event, user_external_id='42')
|
|
2099 |
booking2 = Booking.objects.create(event=event, user_external_id='42', user_was_present=True)
|
|
2100 |
booking3 = Booking.objects.create(event=event, user_external_id='42', user_was_present=False)
|
|
2101 |
|
|
2102 |
app.authorization = ('Basic', ('john.doe', 'password'))
|
|
2103 |
resp = app.get('/api/bookings/', params={'user_external_id': '42', 'user_was_present': True})
|
|
2104 |
assert resp.json['err'] == 0
|
|
2105 |
assert [b['id'] for b in resp.json['data']] == [booking2.pk]
|
|
2106 |
resp = app.get('/api/bookings/', params={'user_external_id': '42', 'user_was_present': False})
|
|
2107 |
assert resp.json['err'] == 0
|
|
2108 |
assert [b['id'] for b in resp.json['data']] == [booking3.pk]
|
|
2109 |
|
|
2110 |
|
|
2111 |
def test_bookings_api_filter_user_absence_reason(app, user):
|
|
2112 |
agenda = Agenda.objects.create()
|
|
2113 |
event = Event.objects.create(
|
|
2114 |
agenda=agenda, start_datetime=make_aware(datetime.datetime(2017, 5, 22, 0, 0)), places=10
|
|
2115 |
)
|
|
2116 |
Booking.objects.create(event=event, user_external_id='42')
|
|
2117 |
booking2 = Booking.objects.create(event=event, user_external_id='42', user_absence_reason='foo-bar')
|
|
2118 |
|
|
2119 |
app.authorization = ('Basic', ('john.doe', 'password'))
|
|
2120 |
resp = app.get('/api/bookings/', params={'user_external_id': '42', 'user_absence_reason': 'foo'})
|
|
2121 |
assert resp.json['err'] == 0
|
|
2122 |
assert [b['id'] for b in resp.json['data']] == []
|
|
2123 |
resp = app.get('/api/bookings/', params={'user_external_id': '42', 'user_absence_reason': 'foo-bar'})
|
|
2124 |
assert resp.json['err'] == 0
|
|
2125 |
assert [b['id'] for b in resp.json['data']] == [booking2.pk]
|
|
2126 |
|
|
2127 |
|
1938 |
2128 |
@pytest.mark.parametrize('flag', [True, False, None])
|
1939 |
2129 |
def test_booking_api_present(app, user, flag):
|
1940 |
2130 |
agenda = Agenda.objects.create(kind='events')
|
1941 |
|
-
|