from unittest.mock import MagicMock, patch

from lib.gui.skip_intro_window import SkipIntroWindow


@patch("lib.gui.skip_intro_window.Thread")
def test_on_init_starts_background_monitor_thread(mock_thread_cls):
    thread = MagicMock()
    mock_thread_cls.return_value = thread

    window = SkipIntroWindow("skip_intro.xml", "", segment_data={"end_sec": 30}, label="Skip Intro")
    window.setProperty = MagicMock()

    window.onInit()

    window.setProperty.assert_called_once_with("skip_label", "Skip Intro")
    mock_thread_cls.assert_called_once_with(target=window._background_monitor)
    assert window.monitor_thread is thread
    assert thread.daemon is True
    thread.start.assert_called_once_with()


def test_on_click_skip_seeks_to_segment_end():
    window = SkipIntroWindow("skip_intro.xml", "", segment_data={"end_sec": 42})
    window.player = MagicMock()
    window.player.isPlaying.return_value = True
    window.close = MagicMock()

    window.onClick(4001)

    assert window.action == "skip"
    window.player.seekTime.assert_called_once_with(42)
    window.close.assert_called_once_with()
