from datetime import datetime
from pathlib import Path
from unittest.mock import MagicMock, patch

from dateutil.tz import tzutc

from libretime_playout.player.events import EventKind, FileEvent
from libretime_playout.player.liquidsoap import Liquidsoap, create_liquidsoap_annotation


@patch("libretime_playout.player.events.CACHE_DIR", Path("/fake"))
def test_create_liquidsoap_annotation():
    file_event = FileEvent(
        type=EventKind.FILE,
        row_id=1,
        start=datetime(2022, 9, 5, 11, tzinfo=tzutc()),
        end=datetime(2022, 9, 5, 11, 5, 2, tzinfo=tzutc()),
        uri=None,
        id=2,
        show_name="Show 1",
        fade_in=500.0,
        fade_out=500.0,
        cue_in=13.7008,
        cue_out=315.845,
        track_title='My Friend the "Forest"',
        artist_name="Nils Frahm",
        mime="audio/flac",
        replay_gain=11.46,
        filesize=10000,
    )

    assert create_liquidsoap_annotation(file_event) == (
        "annotate:"
        'media_id="2",'
        'schedule_table_id="1",'
        'liq_start_next="0",'
        'liq_fade_in="0.5",'
        'liq_fade_out="0.5",'
        'liq_cue_in="13.7008",'
        'liq_cue_out="315.845",'
        'replay_gain="11.46 dB",'
        'artist="Nils Frahm",'
        'title="My Friend the \\"Forest\\""'
        ":/fake/2.flac"
    )


def test_liquidsoap():
    Liquidsoap(MagicMock())