48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
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"
|