Files
vidconf/backend/tests/test_summarizer_transcript.py

49 lines
2.0 KiB
Python

"""Тесты чистой функции `build_transcript` (сборка строк-фраз для суммаризации)."""
from workers.summarizer.transcript import TranscriptLine, build_transcript
def test_empty_lines_produce_empty_transcript() -> None:
"""Пустой список фраз → пустая строка."""
assert build_transcript([]) == ""
def test_single_line_mm_ss_format_under_one_hour() -> None:
"""Смещение меньше часа форматируется как `MM:SS`."""
lines = [TranscriptLine(speaker="Аня", offset_s=65.0, text="привет всем")]
assert build_transcript(lines) == "[Аня 01:05] привет всем"
def test_offset_at_or_above_one_hour_uses_hh_mm_ss_format() -> None:
"""Смещение от часа и больше форматируется как `ЧЧ:MM:SS`."""
lines = [TranscriptLine(speaker="Боря", offset_s=3725.0, text="подведём итоги")]
assert build_transcript(lines) == "[Боря 1:02:05] подведём итоги"
def test_lines_are_sorted_by_offset_regardless_of_input_order() -> None:
"""Строки транскрипта сортируются по `offset_s`, даже если поданы вразнобой."""
lines = [
TranscriptLine(speaker="Боря", offset_s=10.0, text="второй"),
TranscriptLine(speaker="Аня", offset_s=0.0, text="первый"),
TranscriptLine(speaker="Боря", offset_s=20.0, text="третий"),
]
result = build_transcript(lines)
assert result == "\n".join(
[
"[Аня 00:00] первый",
"[Боря 00:10] второй",
"[Боря 00:20] третий",
]
)
def test_zero_offset_formats_as_zero_minutes_zero_seconds() -> None:
"""Нулевое смещение → `00:00`."""
lines = [TranscriptLine(speaker="Аня", offset_s=0.0, text="начало")]
assert build_transcript(lines) == "[Аня 00:00] начало"