buzz/tests/widgets/export_transcription_menu_test.py
2025-11-06 11:51:01 +00:00

73 lines
2.2 KiB
Python

import pathlib
import uuid
import pytest
from PyQt6.QtCore import QObject, pyqtSignal
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.export_transcription_menu import (
ExportTranscriptionMenu,
)
from tests.audio import test_audio_path
class TranslationSignal(QObject):
translation = pyqtSignal(str, int)
class TestExportTranscriptionMenu:
@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.TINY.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_export_segments(
self,
tmp_path: pathlib.Path,
qtbot: QtBot,
transcription,
transcription_service,
shortcuts,
mocker,
):
output_file_path = tmp_path / "whisper.txt"
mocker.patch(
"PyQt6.QtWidgets.QFileDialog.getSaveFileName",
return_value=(str(output_file_path), ""),
)
translation_signal = TranslationSignal()
widget = ExportTranscriptionMenu(
transcription,
transcription_service,
False,
translation_signal.translation
)
qtbot.add_widget(widget)
widget.actions()[0].trigger()
with open(output_file_path, encoding="utf-8") as output_file:
assert "Bien venue dans" in output_file.read()