gradio-forge / tests /unit /test_validator.py
Sokheng's picture
init
3f47273
Raw
History Blame Contribute Delete
3.08 kB
import pytest
from core.validator import FALLBACK_SPEC, validate
def test_validate_slider_passes(sample_slider_spec):
ok, spec = validate(sample_slider_spec)
assert ok is True
assert spec["component"] == "Slider"
def test_validate_textbox_passes(sample_textbox_spec):
ok, spec = validate(sample_textbox_spec)
assert ok is True
assert spec["component"] == "Textbox"
def test_validate_image_passes(sample_image_spec):
ok, spec = validate(sample_image_spec)
assert ok is True
assert spec["component"] == "Image"
def test_validate_dropdown_passes(sample_dropdown_spec):
ok, spec = validate(sample_dropdown_spec)
assert ok is True
assert spec["component"] == "Dropdown"
def test_validate_checkbox_passes(sample_checkbox_spec):
ok, spec = validate(sample_checkbox_spec)
assert ok is True
assert spec["component"] == "Checkbox"
def test_validate_button_passes(sample_button_spec):
ok, spec = validate(sample_button_spec)
assert ok is True
assert spec["component"] == "Button"
def test_validate_audio_passes(sample_audio_spec):
ok, spec = validate(sample_audio_spec)
assert ok is True
assert spec["component"] == "Audio"
def test_validate_file_passes(sample_file_spec):
ok, spec = validate(sample_file_spec)
assert ok is True
assert spec["component"] == "File"
def test_validate_plot_passes(sample_plot_spec):
ok, spec = validate(sample_plot_spec)
assert ok is True
assert spec["component"] == "Plot"
def test_validate_dataframe_passes(sample_dataframe_spec):
ok, spec = validate(sample_dataframe_spec)
assert ok is True
assert spec["component"] == "Dataframe"
def test_validate_unknown_component_returns_fallback():
spec = {"component": "ColorPicker", "props": {}}
ok, result = validate(spec)
assert ok is False
assert result["component"] == FALLBACK_SPEC["component"]
def test_validate_missing_props_returns_fallback():
spec = {"component": "Slider"}
ok, result = validate(spec)
assert ok is False
assert result["component"] == FALLBACK_SPEC["component"]
def test_validate_not_a_dict_returns_fallback():
ok, result = validate("not a dict") # type: ignore[arg-type]
assert ok is False
assert result["component"] == FALLBACK_SPEC["component"]
def test_validate_extra_props_stripped_silently():
spec = {
"component": "Slider",
"props": {"label": "X", "minimum": 0, "maximum": 10, "unknown_prop": "bad"},
"layout": "vertical",
"connected_output": None,
}
ok, result = validate(spec)
assert ok is True
assert "unknown_prop" not in result["props"]
assert "label" in result["props"]
def test_validate_preserves_layout_and_connected_output(sample_slider_spec):
sample_slider_spec["layout"] = "horizontal"
sample_slider_spec["connected_output"] = "image"
ok, spec = validate(sample_slider_spec)
assert ok is True
assert spec["layout"] == "horizontal"
assert spec["connected_output"] == "image"