from libretime_playout.schedule import get_schedule class ApiClientServicesMock: @staticmethod def schedule_url(_post_data=None, params=None, **kwargs): return [ { "item_url": "http://192.168.10.100:8081/api/v2/schedule/17/", "id": 17, "starts": "2022-03-04T15:30:00Z", "ends": "2022-03-04T15:33:50.674340Z", "file": "http://192.168.10.100:8081/api/v2/files/1/", "file_id": 1, "stream": None, "clip_length": "00:03:50.674340", "fade_in": "00:00:00.500000", "fade_out": "00:00:00.500000", "cue_in": "00:00:01.310660", "cue_out": "00:03:51.985000", "media_item_played": False, "instance": "http://192.168.10.100:8081/api/v2/show-instances/3/", "instance_id": 3, "playout_status": 1, "broadcasted": 0, "position": 0, }, { "item_url": "http://192.168.10.100:8081/api/v2/schedule/18/", "id": 18, "starts": "2022-03-04T15:33:50.674340Z", "ends": "2022-03-04T16:03:50.674340Z", "file": None, "stream": "http://192.168.10.100:8081/api/v2/webstreams/1/", "stream_id": 1, "clip_length": "00:30:00", "fade_in": "00:00:00.500000", "fade_out": "00:00:00.500000", "cue_in": "00:00:00", "cue_out": "00:30:00", "media_item_played": False, "instance": "http://192.168.10.100:8081/api/v2/show-instances/3/", "instance_id": 3, "playout_status": 1, "broadcasted": 0, "position": 1, }, ] @staticmethod def show_instance_url(_post_data=None, params=None, **kwargs): return { "item_url": "http://192.168.10.100:8081/api/v2/show-instances/3/", "id": 3, "description": "", "starts": "2022-03-04T15:30:00Z", "ends": "2022-03-04T16:30:00Z", "record": 0, "rebroadcast": 0, "time_filled": "00:33:50.674340", "created": "2022-03-04T15:05:36Z", "last_scheduled": "2022-03-04T15:05:46Z", "modified_instance": False, "autoplaylist_built": False, "show": "http://192.168.10.100:8081/api/v2/shows/3/", "show_id": 3, "instance": None, "file": None, } @staticmethod def show_url(_post_data=None, params=None, **kwargs): return { "item_url": "http://192.168.10.100:8081/api/v2/shows/3/", "id": 3, "name": "Test", "url": "", "genre": "", "description": "", "color": "", "background_color": "", "linked": False, "is_linkable": True, "image_path": "", "has_autoplaylist": False, "autoplaylist_repeat": False, "autoplaylist": None, } @staticmethod def file_url(_post_data=None, params=None, **kwargs): return { "id": 1, "url": None, "replay_gain": "-8.77", "size": 9505222, "artist_name": "Bag Raiders", "track_title": "Shooting Stars", "mime": "audio/mp3", } @staticmethod def webstream_url(_post_data=None, params=None, **kwargs): return { "item_url": "http://192.168.10.100:8081/api/v2/webstreams/1/", "id": 1, "name": "Test", "description": "", "url": "http://some-other-radio:8800/main.ogg", "length": "00:30:00", "creator_id": 1, "mtime": "2022-03-04T13:11:20Z", "utime": "2022-03-04T13:11:20Z", "lptime": None, "mime": "application/ogg", } class ApiClientMock: services = ApiClientServicesMock() def test_get_schedule(): api_client = ApiClientMock() assert get_schedule(api_client) == { "media": { "2022-03-04-15-30-00": { "type": "file", "independent_event": False, "row_id": 17, "start": "2022-03-04-15-30-00", "end": "2022-03-04-15-33-50", # NOTE: The legacy schedule generator creates an url, # but playout download the file using the file id, so # we can safely ignore it here. "uri": None, "id": 1, "show_name": "Test", "fade_in": 500.0, "fade_out": 500.0, "cue_in": 1.31066, "cue_out": 231.985, "metadata": { "artist_name": "Bag Raiders", "track_title": "Shooting Stars", "mime": "audio/mp3", }, "replay_gain": "-8.77", "filesize": 9505222, }, "2022-03-04-15-33-50": { "type": "stream_buffer_start", "independent_event": True, "row_id": 18, "start": "2022-03-04-15-33-45", "end": "2022-03-04-15-33-45", "uri": "http://some-other-radio:8800/main.ogg", "id": 1, }, "2022-03-04-15-33-50_0": { "type": "stream_output_start", "independent_event": True, "row_id": 18, "start": "2022-03-04-15-33-50", "end": "2022-03-04-16-03-50", "uri": "http://some-other-radio:8800/main.ogg", "id": 1, "show_name": "Test", }, "2022-03-04-16-03-50": { "type": "stream_buffer_end", "independent_event": True, "row_id": 18, "start": "2022-03-04-16-03-50", "end": "2022-03-04-16-03-50", "uri": "http://some-other-radio:8800/main.ogg", "id": 1, }, "2022-03-04-16-03-50_0": { "type": "stream_output_end", "independent_event": True, "row_id": 18, "start": "2022-03-04-16-03-50", "end": "2022-03-04-16-03-50", "uri": "http://some-other-radio:8800/main.ogg", "id": 1, }, } }