From 3541fc6115cdcf86cf9864f4ff61c030d18f9cb4 Mon Sep 17 00:00:00 2001 From: Ernesto Rico Schmidt <ernesto@helsinki.at> Date: Mon, 15 Jul 2024 18:27:42 -0400 Subject: [PATCH] test: add playout tests for one week --- program/tests/test_playout.py | 62 ++++++++++++++++++++++++++++++++--- 1 file changed, 58 insertions(+), 4 deletions(-) diff --git a/program/tests/test_playout.py b/program/tests/test_playout.py index 932d8d2c..acf2c217 100644 --- a/program/tests/test_playout.py +++ b/program/tests/test_playout.py @@ -1,3 +1,6 @@ +from datetime import datetime, timedelta +from itertools import pairwise + import pytest from conftest import create_daily_schedule @@ -5,11 +8,15 @@ from conftest import create_daily_schedule pytestmark = pytest.mark.django_db -def url(include_virtual=False): - if include_virtual: +def url(include_virtual=False, start=None, end=None): + if include_virtual and start and end: + return f"/api/v1/program/playout/?include_virtual=true&start={start}&end={end}" + elif start and end: + return f"/api/v1/program/playout/?start={start}&end={end}" + elif include_virtual: return "/api/v1/program/playout/?include_virtual=true" - - return "/api/v1/program/playout/" + else: + return "/api/v1/program/playout/" def assert_entry(entry, show) -> None: @@ -49,6 +56,21 @@ def test_playout(admin_api_client, api_client, daily_rrule, show): assert_entry(response.json()[0], show) +def test_playout_one_week(admin_api_client, api_client, daily_rrule, show): + create_daily_schedule(admin_api_client, daily_rrule, show) + + now = datetime.now() + in_one_week = now + timedelta(days=7) + + response = api_client.get(url(start=now.isoformat(), end=in_one_week.isoformat())) + + assert response.status_code == 200 + assert len(response.json()) == 6 or 7 # I’m not sure why, but this changes around midnight. + + for entry in response.json(): + assert_entry(entry, show) + + def test_playout_include_virtual( admin_api_client, api_client, @@ -72,3 +94,35 @@ def test_playout_include_virtual( assert virtual_entry1["end"] == entry["start"] assert entry["end"] == virtual_entry2["start"] + + +def test_playout_one_week_include_virtual( + admin_api_client, + api_client, + daily_rrule, + show, + fallback_show, + radio_settings, +): + create_daily_schedule(admin_api_client, daily_rrule, show) + + now = datetime.now() + in_one_week = now + timedelta(days=7) + + response = api_client.get( + url(include_virtual=True, start=now.isoformat(), end=in_one_week.isoformat()) + ) + + assert response.status_code == 200 + assert len(response.json()) == 13 or 15 # I’m not sure why, but this changes around midnight. + + entries = response.json() + + for virtual_entry in entries[0::2]: + assert_virtual_entry(virtual_entry, fallback_show) + + for entry in entries[1::2]: + assert_entry(entry, show) + + for entry1, entry2 in pairwise(entries): + assert entry1["end"] == entry2["start"] -- GitLab