From df39d43e1c3e160ded00473a228de74892ecedf1 Mon Sep 17 00:00:00 2001
From: Ernesto Rico Schmidt <ernesto@helsinki.at>
Date: Mon, 15 Jul 2024 12:58:44 -0400
Subject: [PATCH] test: update to the new route & fix playout tests

---
 program/tests/test_playout.py | 56 +++++++++++++++++++++++++----------
 1 file changed, 40 insertions(+), 16 deletions(-)

diff --git a/program/tests/test_playout.py b/program/tests/test_playout.py
index f1e6db06..7c4a751a 100644
--- a/program/tests/test_playout.py
+++ b/program/tests/test_playout.py
@@ -7,9 +7,9 @@ pytestmark = pytest.mark.django_db
 
 def url(include_virtual=False):
     if include_virtual:
-        return "/api/v1/playout/?include_virtual=true"
+        return "/api/v1/program/playout/?include_virtual=true"
 
-    return "/api/v1/playout/"
+    return "/api/v1/program/playout/"
 
 
 def create_daily_schedule(admin_api_client, daily_rrule, show) -> None:
@@ -33,18 +33,41 @@ def create_daily_schedule(admin_api_client, daily_rrule, show) -> None:
     admin_api_client.post("/api/v1/schedules/", data=data, format="json")
 
 
+def assert_entry(entry, show) -> None:
+    """asserts the playout entry corresponds to the given show."""
+
+    assert entry["episode"]
+    assert entry["schedule"]
+    assert entry["show"]
+    assert entry["timeslot"]
+    assert entry["timeslotId"]
+
+    assert entry["showId"] == entry["show"]["id"] == show.id
+    assert entry["show"]["name"] == show.name
+
+
+def assert_virtual_entry(entry, fallback_show) -> None:
+    """asserts the playout entry is virtual and corresponds to given fallback show."""
+
+    assert entry["show"]
+    assert not entry["episode"]
+    assert not entry["schedule"]
+    assert not entry["timeslot"]
+    assert not entry["timeslotId"]
+
+    assert entry["showId"] == entry["show"]["id"] == fallback_show.id
+    assert entry["show"]["name"] == fallback_show.name
+
+
 def test_playout(admin_api_client, api_client, daily_rrule, show):
     create_daily_schedule(admin_api_client, daily_rrule, show)
 
     response = api_client.get(url())
 
     assert response.status_code == 200
-    assert len(response.json()) == 7
+    assert len(response.json()) == 1
 
-    for entry in response.json():
-        assert not entry["timeslot"]["isVirtual"]
-        assert entry["show"]["id"] == show.id
-        assert entry["show"]["name"] == show.name
+    assert_entry(response.json()[0], show)
 
 
 def test_playout_include_virtual(
@@ -60,12 +83,13 @@ def test_playout_include_virtual(
     response = api_client.get(url(include_virtual=True))
 
     assert response.status_code == 200
-    assert len(response.json()) == 14 or 15
-
-    for entry in response.json():
-        if entry["timeslot"]["isVirtual"]:
-            assert entry["show"]["id"] == fallback_show.id
-            assert entry["show"]["name"] == fallback_show.name
-        else:
-            assert entry["show"]["id"] == show.id
-            assert entry["show"]["name"] == show.name
+    assert len(response.json()) == 3
+
+    virtual_entry1, entry, virtual_entry2 = response.json()
+
+    assert_virtual_entry(virtual_entry1, fallback_show)
+    assert_entry(entry, show)
+    assert_virtual_entry(virtual_entry2, fallback_show)
+
+    assert virtual_entry1["end"] == entry["start"]
+    assert entry["end"] == virtual_entry2["start"]
-- 
GitLab