import pytest

from openjiuwen_deepsearch.utils.constants_utils.node_constants import NodeId


class TestWorkflowRegistration:
    @pytest.mark.parametrize(
        ("agent_cls", "research_name", "builder_name"),
        [
            ("DeepresearchAgent", "research_workflow", "_build_research_workflow"),
            (
                "DeepresearchDependencyAgent",
                "research_workflow_dependency_driving",
                "_build_research_dependency_workflow",
            ),
        ],
    )
    def test_workflow_contains_user_feedback_processor_node(self, agent_cls, research_name, builder_name):
        from openjiuwen_deepsearch.framework.openjiuwen.agent import workflow

        agent_type = getattr(workflow, agent_cls)
        agent = agent_type.__new__(agent_type)
        agent.research_name = research_name
        agent.version = "1"
        agent.startnode_input_schema = {}
        flow = getattr(agent, builder_name)()
        node_ids = list(flow._internal._graph.nodes)
        assert NodeId.USER_FEEDBACK_PROCESSOR.value in node_ids