45 lines
1.3 KiB
Python
45 lines
1.3 KiB
Python
"""Tests for the config endpoint and stage palette."""
|
|
|
|
from core.detect.stages import list_stages, get_palette
|
|
|
|
|
|
def test_stage_palette_has_config_fields():
|
|
"""Every stage with config fields should be servable by the endpoint."""
|
|
stages = list_stages()
|
|
stages_with_config = [s for s in stages if s.config_fields]
|
|
|
|
assert len(stages_with_config) > 0
|
|
|
|
for stage in stages_with_config:
|
|
for field in stage.config_fields:
|
|
assert field.name
|
|
assert field.type
|
|
assert field.default is not None or field.type == "bool"
|
|
|
|
|
|
def test_palette_categories():
|
|
palette = get_palette()
|
|
|
|
expected_categories = {"preprocessing", "detection", "resolution", "escalation", "output"}
|
|
actual_categories = set(palette.keys())
|
|
|
|
assert actual_categories == expected_categories
|
|
|
|
|
|
def test_stage_config_serializable():
|
|
"""Config fields should be JSON-serializable for the API response."""
|
|
import json
|
|
|
|
stages = list_stages()
|
|
for stage in stages:
|
|
data = {
|
|
"name": stage.name,
|
|
"label": stage.label,
|
|
"config_fields": [
|
|
{"name": f.name, "type": f.type, "default": f.default}
|
|
for f in stage.config_fields
|
|
],
|
|
}
|
|
json_str = json.dumps(data)
|
|
assert len(json_str) > 0
|