Spaces:
Runtime error
Runtime error
File size: 4,153 Bytes
05b45a5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
import gradio as gr
import pytest
from ui.lib.components.model import create_model_column
from ui.lib.components.output import create_output_column
from ui.lib.config import AUDIO_FORMATS
def test_create_model_column_structure():
"""Test that create_model_column returns the expected structure"""
voice_ids = ["voice1", "voice2"]
column, components = create_model_column(voice_ids)
# Test return types
assert isinstance(column, gr.Column)
assert isinstance(components, dict)
# Test expected components presence
expected_components = {"status_btn", "voice", "format", "speed"}
assert set(components.keys()) == expected_components
# Test component types
assert isinstance(components["status_btn"], gr.Button)
assert isinstance(components["voice"], gr.Dropdown)
assert isinstance(components["format"], gr.Dropdown)
assert isinstance(components["speed"], gr.Slider)
def test_model_column_default_values():
"""Test the default values of model column components"""
voice_ids = ["voice1", "voice2"]
_, components = create_model_column(voice_ids)
# Test voice dropdown
# Gradio Dropdown converts choices to (value, label) tuples
expected_choices = [(voice_id, voice_id) for voice_id in voice_ids]
assert components["voice"].choices == expected_choices
# Value is not converted to tuple format for the value property
assert components["voice"].value == [voice_ids[0]]
assert components["voice"].interactive is True
assert components["voice"].multiselect is True
assert components["voice"].label == "Voice(s)"
# Test format dropdown
# Gradio Dropdown converts choices to (value, label) tuples
expected_format_choices = [(fmt, fmt) for fmt in AUDIO_FORMATS]
assert components["format"].choices == expected_format_choices
assert components["format"].value == "mp3"
# Test speed slider
assert components["speed"].minimum == 0.5
assert components["speed"].maximum == 2.0
assert components["speed"].value == 1.0
assert components["speed"].step == 0.1
def test_model_column_no_voices():
"""Test model column creation with no voice IDs"""
_, components = create_model_column([])
assert components["voice"].choices == []
assert components["voice"].value is None
def test_create_output_column_structure():
"""Test that create_output_column returns the expected structure"""
column, components = create_output_column()
# Test return types
assert isinstance(column, gr.Column)
assert isinstance(components, dict)
# Test expected components presence
expected_components = {
"audio_output",
"output_files",
"play_btn",
"selected_audio",
"clear_outputs",
}
assert set(components.keys()) == expected_components
# Test component types
assert isinstance(components["audio_output"], gr.Audio)
assert isinstance(components["output_files"], gr.Dropdown)
assert isinstance(components["play_btn"], gr.Button)
assert isinstance(components["selected_audio"], gr.Audio)
assert isinstance(components["clear_outputs"], gr.Button)
def test_output_column_configuration():
"""Test the configuration of output column components"""
_, components = create_output_column()
# Test audio output configuration
assert components["audio_output"].label == "Generated Speech"
assert components["audio_output"].type == "filepath"
# Test output files dropdown
assert components["output_files"].label == "Previous Outputs"
assert components["output_files"].allow_custom_value is True
# Test play button
assert components["play_btn"].value == "▶️ Play Selected"
assert components["play_btn"].size == "sm"
# Test selected audio configuration
assert components["selected_audio"].label == "Selected Output"
assert components["selected_audio"].type == "filepath"
assert components["selected_audio"].visible is False
# Test clear outputs button
assert components["clear_outputs"].size == "sm"
assert components["clear_outputs"].variant == "secondary"
|