1792 |
1792 |
|
1793 |
1793 |
@pytest.mark.freeze_time('2021-05-06 14:00')
|
1794 |
1794 |
def test_datetimes_multiple_agendas_sort(app):
|
1795 |
|
first_agenda = Agenda.objects.create(label='First agenda', kind='events')
|
|
1795 |
category = Category.objects.create(label='Category A')
|
|
1796 |
first_agenda = Agenda.objects.create(label='First agenda', kind='events', category=category)
|
1796 |
1797 |
Desk.objects.create(agenda=first_agenda, slug='_exceptions_holder')
|
1797 |
1798 |
Event.objects.create(label='10-05', start_datetime=now().replace(day=10), places=5, agenda=first_agenda)
|
1798 |
|
second_agenda = Agenda.objects.create(label='Second agenda', kind='events')
|
|
1799 |
second_agenda = Agenda.objects.create(label='Second agenda', kind='events', category=category)
|
1799 |
1800 |
Desk.objects.create(agenda=second_agenda, slug='_exceptions_holder')
|
1800 |
1801 |
Event.objects.create(label='09-05', start_datetime=now().replace(day=9), places=5, agenda=second_agenda)
|
1801 |
1802 |
Event.objects.create(label='04-05', start_datetime=now().replace(day=4), places=5, agenda=second_agenda)
|
1802 |
|
third_agenda = Agenda.objects.create(label='Third agenda', kind='events')
|
|
1803 |
category = Category.objects.create(label='Category B')
|
|
1804 |
third_agenda = Agenda.objects.create(label='Third agenda', kind='events', category=category)
|
1803 |
1805 |
Desk.objects.create(agenda=third_agenda, slug='_exceptions_holder')
|
1804 |
1806 |
Event.objects.create(label='09-05', start_datetime=now().replace(day=9), places=5, agenda=third_agenda)
|
1805 |
1807 |
Event.objects.create(label='04-05', start_datetime=now().replace(day=4), places=5, agenda=third_agenda)
|
|
1808 |
for agenda in Agenda.objects.all():
|
|
1809 |
Subscription.objects.create(
|
|
1810 |
agenda=agenda,
|
|
1811 |
user_external_id='xxx',
|
|
1812 |
date_start=now(),
|
|
1813 |
date_end=now() + datetime.timedelta(days=30),
|
|
1814 |
)
|
1806 |
1815 |
|
1807 |
1816 |
# check events are ordered by start_datetime and then by agenda order in querystring
|
1808 |
1817 |
agenda_slugs = ','.join((first_agenda.slug, third_agenda.slug, second_agenda.slug))
|
... | ... | |
1820 |
1829 |
assert resp.json['data'][3]['id'] == 'second-agenda@09-05'
|
1821 |
1830 |
assert resp.json['data'][4]['id'] == 'first-agenda@10-05'
|
1822 |
1831 |
|
|
1832 |
# check events are ordered by start_datetime and then by category order in querystring
|
|
1833 |
resp = app.get(
|
|
1834 |
'/api/agendas/datetimes/', params={'subscribed': 'category-b,category-a', 'user_external_id': 'xxx'}
|
|
1835 |
)
|
|
1836 |
assert len(resp.json['data']) == 3
|
|
1837 |
assert resp.json['data'][0]['id'] == 'third-agenda@09-05'
|
|
1838 |
assert resp.json['data'][1]['id'] == 'second-agenda@09-05'
|
|
1839 |
assert resp.json['data'][2]['id'] == 'first-agenda@10-05'
|
|
1840 |
|
|
1841 |
# order is stable if same date events are in the same category
|
|
1842 |
Event.objects.create(label='09-05', start_datetime=now().replace(day=9), places=5, agenda=first_agenda)
|
|
1843 |
resp = app.get(
|
|
1844 |
'/api/agendas/datetimes/', params={'subscribed': 'category-b,category-a', 'user_external_id': 'xxx'}
|
|
1845 |
)
|
|
1846 |
assert len(resp.json['data']) == 4
|
|
1847 |
assert resp.json['data'][0]['id'] == 'third-agenda@09-05'
|
|
1848 |
assert resp.json['data'][1]['id'] == 'first-agenda@09-05'
|
|
1849 |
assert resp.json['data'][2]['id'] == 'second-agenda@09-05'
|
|
1850 |
assert resp.json['data'][3]['id'] == 'first-agenda@10-05'
|
|
1851 |
|
1823 |
1852 |
|
1824 |
1853 |
@pytest.mark.freeze_time('2021-05-06 14:00')
|
1825 |
1854 |
def test_datetimes_multiple_agendas_queries(app):
|
|
1855 |
category = Category.objects.create(label='Category A')
|
1826 |
1856 |
for i in range(10):
|
1827 |
|
agenda = Agenda.objects.create(label=str(i), kind='events')
|
|
1857 |
agenda = Agenda.objects.create(label=str(i), kind='events', category=category)
|
1828 |
1858 |
Subscription.objects.create(
|
1829 |
1859 |
agenda=agenda,
|
1830 |
1860 |
user_external_id='xxx',
|
... | ... | |
1852 |
1882 |
assert len(resp.json['data']) == 30
|
1853 |
1883 |
assert len(ctx.captured_queries) == 7
|
1854 |
1884 |
|
|
1885 |
with CaptureQueriesContext(connection) as ctx:
|
|
1886 |
resp = app.get(
|
|
1887 |
'/api/agendas/datetimes/',
|
|
1888 |
params={'subscribed': 'category-a', 'user_external_id': 'xxx', 'show_past_events': True},
|
|
1889 |
)
|
|
1890 |
assert len(resp.json['data']) == 30
|
|
1891 |
assert len(ctx.captured_queries) == 7
|
|
1892 |
|
1855 |
1893 |
|
1856 |
1894 |
@pytest.mark.freeze_time('2021-05-06 14:00')
|
1857 |
1895 |
def test_datetimes_multiple_agendas_subscribed(app):
|
1858 |
|
-
|