Spaces:
Sleeping
Sleeping
| 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" | |