import pytest from app.core.process_steps import StepName from app.domains.rendering.workflow_node_registry import ( get_node_definition, list_node_definitions, ) def test_node_registry_covers_all_step_names(): registered_steps = {definition.step for definition in list_node_definitions()} expected_steps = {step.value for step in StepName} assert registered_steps == expected_steps def test_turntable_node_definition_exposes_expected_schema(): definition = get_node_definition(StepName.BLENDER_TURNTABLE) assert definition is not None assert definition.node_type == "renderFramesNode" assert definition.defaults["fps"] == 24 assert definition.defaults["duration_s"] == 5 assert {field.key for field in definition.fields} >= { "render_engine", "samples", "width", "height", "fps", "duration_s", "rotation_z", } @pytest.mark.asyncio async def test_node_definitions_endpoint_returns_registry(client, auth_headers): response = await client.get("/api/workflows/node-definitions", headers=auth_headers) assert response.status_code == 200 body = response.json() assert len(body["definitions"]) == len(StepName) blender_still = next( definition for definition in body["definitions"] if definition["step"] == StepName.BLENDER_STILL.value ) assert blender_still["node_type"] == "renderNode" assert blender_still["defaults"]["render_engine"] == "cycles"