import os import pytest import tempfile from unittest.mock import patch, MagicMock from pytestqt.qtbot import QtBot from PyQt6.QtCore import Qt from PyQt6.QtGui import QKeyEvent from buzz.widgets.presentation_window import PresentationWindow from buzz.settings.settings import Settings from buzz.locale import _ class TestPresentationWindow: def test_should_set_window_title(self, qtbot: QtBot): """Test that the window title is set correctly""" window = PresentationWindow() qtbot.add_widget(window) assert _("Live Transcript Presentation") in window.windowTitle() window.close() def test_should_have_window_flag(self, qtbot: QtBot): """Test that window has the Window flag set""" window = PresentationWindow() qtbot.add_widget(window) assert window.windowFlags() & Qt.WindowType.Window window.close() def test_should_have_transcript_display(self, qtbot: QtBot): """Test that the transcript display is created""" window = PresentationWindow() qtbot.add_widget(window) assert window.transcript_display is not None assert window.transcript_display.isReadOnly() window.close() def test_should_have_translation_display_hidden(self, qtbot: QtBot): """Test that the translation display is created but hidden initially""" window = PresentationWindow() qtbot.add_widget(window) assert window.translation_display is not None assert window.translation_display.isReadOnly() assert not window.translation_display.isVisible() window.close() def test_should_have_default_size(self, qtbot: QtBot): """Test that the window has default size""" window = PresentationWindow() qtbot.add_widget(window) assert window.width() == 800 assert window.height() == 600 window.close() class TestPresentationWindowUpdateTranscripts: def test_update_transcripts_with_text(self, qtbot: QtBot): """Test updating transcripts with text""" window = PresentationWindow() qtbot.add_widget(window) window.update_transcripts("Hello world") assert window._current_transcript == "Hello world" assert "Hello world" in window.transcript_display.toHtml() window.close() def test_update_transcripts_with_empty_text(self, qtbot: QtBot): """Test that empty text does not update the display""" window = PresentationWindow() qtbot.add_widget(window) window.update_transcripts("") assert window._current_transcript == "" window.close() def test_update_transcripts_escapes_html(self, qtbot: QtBot): """Test that special HTML characters are escaped""" window = PresentationWindow() qtbot.add_widget(window) window.update_transcripts("") html = window.transcript_display.toHtml() assert "