package tech.easyflow.ai.node;

import com.easyagents.flow.core.chain.Parameter;
import org.junit.Assert;
import org.junit.Test;

import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Map;

/**
 * {@link DocNode} 单元测试。
 */
public class DocNodeTest {

    /**
     * 历史工作流若改过输出名，仍应按固定输出槽位顺序映射运行态结果键。
     *
     * @throws Exception 反射调用失败
     */
    @Test
    public void shouldResolveOutputKeyMappingByOutputOrder() throws Exception {
        DocNode node = new DocNode();
        node.setOutputDefs(Arrays.asList(
                parameter("documentItems")
        ));

        Method method = DocNode.class.getDeclaredMethod("resolveOutputKeyMapping");
        method.setAccessible(true);
        Map<String, String> mapping = (Map<String, String>) method.invoke(node);

        Assert.assertEquals("documentItems", mapping.get("documents"));
    }

    private static Parameter parameter(String name) {
        Parameter parameter = new Parameter();
        parameter.setName(name);
        return parameter;
    }
}
