From 530cfb264ef8206727da7379a8d36b2ff9d916fb Mon Sep 17 00:00:00 2001 From: David Trattnig <david@subsquare.at> Date: Fri, 15 Mar 2024 15:20:37 +0100 Subject: [PATCH] test: merge update --- tests/test_scheduling_timetable.py | 87 +++++++++++++++++++++++++++++- 1 file changed, 86 insertions(+), 1 deletion(-) diff --git a/tests/test_scheduling_timetable.py b/tests/test_scheduling_timetable.py index 7ab97059..8bee1984 100644 --- a/tests/test_scheduling_timetable.py +++ b/tests/test_scheduling_timetable.py @@ -23,7 +23,14 @@ import unittest from aura_engine.base.config import AuraConfig from aura_engine.base.lang import DotDict from aura_engine.base.utils import SimpleUtil as SU -from aura_engine.scheduling.domain import Playlist, PlaylistItem, PlaylistType, Timeslot +from aura_engine.scheduling.domain import ( + Episode, + Playlist, + PlaylistItem, + PlaylistType, + Show, + Timeslot, +) from aura_engine.scheduling.timetable import TimetableMerger, TimetableService @@ -600,6 +607,84 @@ class TestSchedulingTimetable(unittest.TestCase): final_timeslots = merger.merge(local_timeslots, remote_timeslots) self.assertEqual(5, len(final_timeslots)) + def test_merger_update_timeslot(self): + print(self._testMethodName) + + now = SU.timestamp() + ts1 = Timeslot( + id=1, repetition_id=None, start=now - 180, end=now - 120, show=None, episode=None + ) + ts2 = Timeslot( + id=2, repetition_id=None, start=now - 120, end=now + 120, show=None, episode=None + ) + ts3 = Timeslot( + id=3, repetition_id=None, start=now + 120, end=now + 180, show=None, episode=None + ) + ts4 = Timeslot( + id=4, repetition_id=None, start=now + 180, end=now + 360, show=None, episode=None + ) + + pl = Playlist("999", "Playlist X", False) + alpha = PlaylistItem("alpha.flac", 20, 100, None) + beta = PlaylistItem("beta.flac", 100, 100, None) + gamma = PlaylistItem("gamma.flac", 20, 100, None) + pl.add(alpha) + pl.add(beta) + pl.add(gamma) + + ts3.set_playlists(pl, None, None) + + # Create updated timeslot + show = Show(22, "Updated Show", "x", "x", "x", "x") + episode = Episode("Updated Episode", None, ["de", "en"], ["a", "b", "c"], "some host memo") + ts3_updated = Timeslot( + id=3, repetition_id=1234, start=now + 120, end=now + 180, show=show, episode=episode + ) + pl = Playlist("888", "Updated Playlist", False) + alpha = PlaylistItem("alpha_new.flac", 20, 100, None) + beta = PlaylistItem("beta_new.flac", 100, 100, None) + gamma = PlaylistItem("gamma_new.flac", 20, 100, None) + delta = PlaylistItem("delta_new.flac", 20, 100, None) + pl.add(alpha) + pl.add(beta) + pl.add(gamma) + pl.add(delta) + ts3_updated.set_playlists(pl, None, None) + + local_timeslots = [ts1, ts2, ts3, ts4] + remote_timeslots = [ts1, ts2, ts3_updated, ts4] + merger = TimetableMerger() + + # Check timeslot before merge + self.assertIsNone(ts3.get_show()) + self.assertIsNone(ts3.get_episode()) + self.assertEqual(None, ts3.get_repetition_id()) + current_pl = ts3.get_current_playlist() + self.assertEqual("Playlist X", current_pl.get_description()) + items: list[PlaylistItem] = current_pl.get_items() + self.assertEqual(3, len(items)) + self.assertEqual("alpha.flac", items[0].source) + self.assertEqual("beta.flac", items[1].source) + self.assertEqual("gamma.flac", items[2].source) + + final_timeslots = merger.merge(local_timeslots, remote_timeslots) + self.assertEqual(4, len(final_timeslots)) + + # Check timeslot after merge + self.assertIsNotNone(ts3.get_show()) + self.assertEqual("Updated Show", ts3.get_show().name) + self.assertIsNotNone(ts3.get_episode()) + self.assertEqual("Updated Episode", ts3.get_episode().title) + self.assertEqual(1234, ts3.get_repetition_id()) + current_pl = ts3.get_current_playlist() + self.assertEqual("Updated Playlist", current_pl.get_description()) + items: list[PlaylistItem] = current_pl.get_items() + self.assertEqual(4, len(items)) + self.assertEqual("alpha_new.flac", items[0].source) + self.assertEqual("beta_new.flac", items[1].source) + self.assertEqual("gamma_new.flac", items[2].source) + self.assertEqual("delta_new.flac", items[3].source) + if __name__ == "__main__": unittest.main() -- GitLab