import uuid import pytest from pytestqt.qtbot import QtBot from buzz.db.entity.transcription import Transcription from buzz.db.entity.transcription_segment import TranscriptionSegment from buzz.model_loader import ModelType, WhisperModelSize from buzz.transcriber.transcriber import Task from buzz.widgets.transcription_viewer.transcription_segments_editor_widget import ( TranscriptionSegmentsEditorWidget, ) from buzz.widgets.transcription_viewer.transcription_viewer_widget import ( TranscriptionViewerWidget, ) from tests.audio import test_audio_path class TestTranscriptionViewerWidget: @pytest.fixture() def transcription( self, transcription_dao, transcription_segment_dao ) -> Transcription: id = uuid.uuid4() transcription_dao.insert( Transcription( id=str(id), status="completed", file=test_audio_path, task=Task.TRANSCRIBE.value, model_type=ModelType.WHISPER.value, whisper_model_size=WhisperModelSize.SMALL.value, ) ) transcription_segment_dao.insert(TranscriptionSegment(40, 299, "Bien", str(id))) transcription_segment_dao.insert( TranscriptionSegment(299, 329, "venue dans", str(id)) ) return transcription_dao.find_by_id(str(id)) def test_should_display_segments( self, qtbot: QtBot, transcription, transcription_service, shortcuts ): widget = TranscriptionViewerWidget( transcription, transcription_service, shortcuts ) qtbot.add_widget(widget) assert widget.windowTitle() == "whisper-french.mp3" editor = widget.findChild(TranscriptionSegmentsEditorWidget) assert isinstance(editor, TranscriptionSegmentsEditorWidget) assert editor.model().index(0, 1).data() == 299 assert editor.model().index(0, 2).data() == 40 assert editor.model().index(0, 3).data() == "Bien" def test_should_update_segment_text( self, qtbot, transcription, transcription_service, shortcuts ): widget = TranscriptionViewerWidget( transcription, transcription_service, shortcuts ) qtbot.add_widget(widget) editor = widget.findChild(TranscriptionSegmentsEditorWidget) assert isinstance(editor, TranscriptionSegmentsEditorWidget) editor.model().setData(editor.model().index(0, 3), "Biens")