sunbird-pipeline / tests /test_ui_components.py
Ssemulif's picture
Restore original local project and remove template src artifacts
2e30c76
Raw
History Blame Contribute Delete
1.49 kB
"""Unit tests for `ui_components.py` helpers.
These tests avoid any network or Streamlit runtime dependencies.
"""
import base64
import io
from ui_components import (
detect_audio_media_type,
ext_for_media_type,
infer_download_filename,
format_result_for_display,
)
def _make_wav_bytes(sample_rate=8000, seconds=1):
import wave, struct
n = sample_rate * seconds
buf = io.BytesIO()
with wave.open(buf, "wb") as wf:
wf.setnchannels(1)
wf.setsampwidth(2)
wf.setframerate(sample_rate)
wf.writeframes(struct.pack(f"<{n}h", *([0] * n)))
return buf.getvalue()
def test_detect_wav():
wav = _make_wav_bytes()
assert detect_audio_media_type(wav) == "audio/wav"
def test_detect_ogg():
data = b"OggS" + b"\x00" * 16
assert detect_audio_media_type(data) == "audio/ogg"
def test_detect_mp3_by_id3():
data = b"ID3" + b"\x00" * 8
assert detect_audio_media_type(data) == "audio/mpeg"
def test_ext_mapping():
assert ext_for_media_type("audio/wav") == ".wav"
assert ext_for_media_type("audio/ogg") == ".ogg"
assert ext_for_media_type("audio/mpeg") == ".mp3"
def test_infer_filename():
assert infer_download_filename("req-123", "audio/wav") == "req-123.wav"
def test_format_result_for_display_minimal():
r = {"summary": "S", "word_count": 10}
out = format_result_for_display(r)
assert out["summary"] == "S"
assert out["word_count"] == 10
assert out["transcript"] == ""