package org.jsondoc.core.doc;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.jsondoc.core.annotation.flow.ApiFlow;
import org.jsondoc.core.annotation.flow.ApiFlowSet;
import org.jsondoc.core.annotation.flow.ApiFlowStep;
import org.jsondoc.core.pojo.ApiMethodDoc;
import org.jsondoc.core.pojo.flow.ApiFlowDoc;
import org.jsondoc.core.scanner.DefaultJSONDocScanner;
import org.jsondoc.core.scanner.JSONDocScanner;
import org.junit.Assert;
import org.junit.Test;
public class ApiFlowDocTest {
private JSONDocScanner jsondocScanner = new DefaultJSONDocScanner();
@ApiFlowSet
private class TestFlow {
@ApiFlow(
name = "flow",
description = "A test flow",
steps = {
@ApiFlowStep(apimethodid = "F1"),
@ApiFlowStep(apimethodid = "F2"),
@ApiFlowStep(apimethodid = "F3")
},
group = "Flows A"
)
public void flow() {
}
@ApiFlow(
name = "flow2",
description = "A test flow 2",
steps = {
@ApiFlowStep(apimethodid = "F4"),
@ApiFlowStep(apimethodid = "F5"),
@ApiFlowStep(apimethodid = "F6")
},
group = "Flows B"
)
public void flow2() {
}
}
@Test
public void testApiDoc() {
Set<Class<?>> classes = new HashSet<Class<?>>();
classes.add(TestFlow.class);
List<ApiMethodDoc> apiMethodDocs = new ArrayList<ApiMethodDoc>();
ApiMethodDoc apiMethodDoc = new ApiMethodDoc();
apiMethodDoc.setId("F1");
apiMethodDocs.add(apiMethodDoc);
Set<ApiFlowDoc> apiFlowDocs = jsondocScanner.getApiFlowDocs(classes, apiMethodDocs);
for (ApiFlowDoc apiFlowDoc : apiFlowDocs) {
if(apiFlowDoc.getName().equals("flow")) {
Assert.assertEquals("A test flow", apiFlowDoc.getDescription());
Assert.assertEquals(3, apiFlowDoc.getSteps().size());
Assert.assertEquals("F1", apiFlowDoc.getSteps().get(0).getApimethodid());
Assert.assertEquals("F2", apiFlowDoc.getSteps().get(1).getApimethodid());
Assert.assertEquals("Flows A", apiFlowDoc.getGroup());
Assert.assertNotNull(apiFlowDoc.getSteps().get(0).getApimethoddoc());
Assert.assertEquals("F1", apiFlowDoc.getSteps().get(0).getApimethoddoc().getId());
}
if(apiFlowDoc.getName().equals("flow2")) {
Assert.assertEquals("A test flow 2", apiFlowDoc.getDescription());
Assert.assertEquals(3, apiFlowDoc.getSteps().size());
Assert.assertEquals("F4", apiFlowDoc.getSteps().get(0).getApimethodid());
Assert.assertEquals("F5", apiFlowDoc.getSteps().get(1).getApimethodid());
Assert.assertEquals("Flows B", apiFlowDoc.getGroup());
}
}
}
}