Projet

Général

Profil

0001-api-don-t-list-cancelled-bookings-in-slot_bookings-a.patch

Lauréline Guérin, 18 juin 2020 09:26

Télécharger (3,47 ko)

Voir les différences:

Subject: [PATCH] api: don't list cancelled bookings in slot_bookings api
 (#44160)

 chrono/api/views.py |  4 +++-
 tests/test_api.py   | 30 +++++++++++++++++++++++-------
 2 files changed, 26 insertions(+), 8 deletions(-)
chrono/api/views.py
1294 1294
            return Response(response)
1295 1295
        event = self.get_object(agenda_identifier, event_identifier)
1296 1296
        booking_queryset = event.booking_set.filter(
1297
            user_external_id=request.GET['user_external_id'], primary_booking__isnull=True
1297
            user_external_id=request.GET['user_external_id'],
1298
            primary_booking__isnull=True,
1299
            cancellation_datetime__isnull=True,
1298 1300
        ).order_by('pk')
1299 1301
        response = {
1300 1302
            'err': 0,
tests/test_api.py
1693 1693
    resp = app.get('/api/agenda/%s/status/%s/' % (agenda_id, 'unknown'), status=404)
1694 1694

  
1695 1695

  
1696
def test_bookings(app, some_data, user):
1697
    agenda = Agenda.objects.filter(label=u'Foo bar')[0]
1698
    event = Event.objects.filter(agenda=agenda).exclude(start_datetime__lt=now())[0]
1699
    event.slug = 'event-slug'
1700
    event.places = 5
1701
    event.waiting_list_places = 5
1702
    event.save()
1696
def test_bookings(app, user):
1697
    agenda = Agenda.objects.create(label='Foo bar', kind='events', minimal_booking_delay=0)
1698
    event = Event.objects.create(
1699
        slug='event-slug',
1700
        start_datetime=(now() + datetime.timedelta(days=5)).replace(hour=10, minute=0),
1701
        places=5,
1702
        waiting_list_places=5,
1703
        agenda=agenda,
1704
    )
1703 1705

  
1704 1706
    # create a booking not on the waiting list
1705 1707
    primary1 = Booking.objects.create(event=event, in_waiting_list=False, user_external_id='42')
......
1724 1726
        '/api/agenda/%s/bookings/foobar/' % (agenda.slug), params={'user_external_id': '42'}, status=404
1725 1727
    )
1726 1728

  
1729
    # search for '42' external user
1727 1730
    resp = app.get(
1728 1731
        '/api/agenda/%s/bookings/%s/' % (agenda.slug, event.slug), params={'user_external_id': '42'}
1729 1732
    )
......
1732 1735
        {'booking_id': primary1.pk, 'in_waiting_list': False},
1733 1736
        {'booking_id': primary4.pk, 'in_waiting_list': True},
1734 1737
    ]
1738
    # primary1 is cancelled
1739
    primary1.cancel()
1740
    resp = app.get(
1741
        '/api/agenda/%s/bookings/%s/' % (agenda.slug, event.slug), params={'user_external_id': '42'}
1742
    )
1743
    assert resp.json['err'] == 0
1744
    assert resp.json['data'] == [
1745
        {'booking_id': primary4.pk, 'in_waiting_list': True},
1746
    ]
1747

  
1748
    # search for 'foobar' external user
1735 1749
    resp = app.get(
1736 1750
        '/api/agenda/%s/bookings/%s/' % (agenda.slug, event.slug), params={'user_external_id': 'foobar'}
1737 1751
    )
......
1739 1753
    assert resp.json['data'] == [
1740 1754
        {'booking_id': primary2.pk, 'in_waiting_list': False},
1741 1755
    ]
1756

  
1757
    # no bookings for this external user
1742 1758
    resp = app.get(
1743 1759
        '/api/agenda/%s/bookings/%s/' % (agenda.slug, event.slug), params={'user_external_id': '35'}
1744 1760
    )
1745
-