package org.jsondoc.springmvc.controller.object;
import com.google.common.collect.Lists;
import org.jsondoc.core.pojo.ApiObjectDoc;
import org.jsondoc.core.pojo.JSONDoc;
import org.jsondoc.core.pojo.JSONDoc.MethodDisplay;
import org.jsondoc.core.scanner.JSONDocScanner;
import org.jsondoc.springmvc.scanner.Spring3JSONDocScanner;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.util.Map;
import java.util.Set;
import static org.junit.Assert.fail;
public class Spring3JSONDocObjectScannerTest {
private String version = "1.0";
private String basePath = "http://localhost:8080/api";
private static Logger log = LoggerFactory.getLogger(Spring3JSONDocObjectScannerTest.class);
@Test
public void getJSONDoc() throws IOException {
JSONDocScanner jsondocScanner = new Spring3JSONDocScanner();
JSONDoc jsondoc = jsondocScanner.getJSONDoc(version, basePath, Lists.newArrayList("org.jsondoc.springmvc.controller"), true, MethodDisplay.URI);
Map<String, Set<ApiObjectDoc>> objects = jsondoc.getObjects();
for (Set<ApiObjectDoc> values : objects.values()) {
for (ApiObjectDoc apiObjectDoc : values) {
System.out.println(apiObjectDoc.getName());
}
}
}
@Test
public void findsNestedObject() throws Exception {
JSONDocScanner jsondocScanner = new Spring3JSONDocScanner();
JSONDoc jsondoc = jsondocScanner.getJSONDoc(version, basePath, Lists.newArrayList("org.jsondoc.springmvc.controller"), true, MethodDisplay.URI);
Map<String, Set<ApiObjectDoc>> objects = jsondoc.getObjects();
for (Set<ApiObjectDoc> values : objects.values()) {
assertContainsDoc(values, "NestedObject1");
}
}
@Test
public void findsDeeplyNestedObjects() throws Exception {
JSONDocScanner jsondocScanner = new Spring3JSONDocScanner();
JSONDoc jsondoc = jsondocScanner.getJSONDoc(version, basePath, Lists.newArrayList("org.jsondoc.springmvc.controller"), true, MethodDisplay.URI);
Map<String, Set<ApiObjectDoc>> objects = jsondoc.getObjects();
for (Set<ApiObjectDoc> values : objects.values()) {
assertContainsDoc(values, "NestedObject2");
assertContainsDoc(values, "NestedObject3");
}
}
public void assertContainsDoc(Set<ApiObjectDoc> values, String name) {
for (ApiObjectDoc apiObjectDoc : values) {
if(apiObjectDoc.getName().equals(name)) {
return;
}
}
fail("Could not find ApiObjectDoc with name " + name);
}
}