package org.jsondoc.springmvc.scanner;
import org.jsondoc.core.pojo.ApiDoc;
import org.jsondoc.core.pojo.ApiMethodDoc;
import org.jsondoc.core.pojo.ApiVerb;
import org.jsondoc.core.pojo.JSONDoc.MethodDisplay;
import org.jsondoc.core.scanner.JSONDocScanner;
import org.junit.Assert;
import org.junit.Test;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.google.common.collect.Sets;
public class SpringApiVerbDocTest {
private JSONDocScanner jsondocScanner = new Spring3JSONDocScanner();
@Controller
@RequestMapping(value = "/api-verb")
public class SpringApiVerbController {
@RequestMapping(value = "/spring-api-verb-controller-method-one")
public void apiVerbOne() {
}
@RequestMapping(value = "/spring-api-verb-controller-method-two", method = { RequestMethod.POST, RequestMethod.GET })
public void apiVerbTwo() {
}
}
@Controller
@RequestMapping(value = "/api-verb-2", method = { RequestMethod.POST, RequestMethod.PUT })
public class SpringApiVerbController2 {
@RequestMapping(value = "/spring-api-verb-controller-method-one")
public void apiVerbOne() {
}
}
@Test
public void testApiVerb() {
ApiDoc apiDoc = jsondocScanner.getApiDocs(Sets.<Class<?>> newHashSet(SpringApiVerbController.class), MethodDisplay.URI).iterator().next();
Assert.assertEquals("SpringApiVerbController", apiDoc.getName());
Assert.assertEquals(2, apiDoc.getMethods().size());
for (ApiMethodDoc apiMethodDoc : apiDoc.getMethods()) {
if (apiMethodDoc.getPath().contains("/api-verb/spring-api-verb-controller-method-one")) {
Assert.assertEquals(1, apiMethodDoc.getVerb().size());
Assert.assertEquals(ApiVerb.GET, apiMethodDoc.getVerb().iterator().next());
}
if (apiMethodDoc.getPath().contains("/api-verb/spring-api-verb-controller-method-two")) {
Assert.assertEquals(2, apiMethodDoc.getVerb().size());
}
}
apiDoc = jsondocScanner.getApiDocs(Sets.<Class<?>> newHashSet(SpringApiVerbController2.class), MethodDisplay.URI).iterator().next();
Assert.assertEquals("SpringApiVerbController2", apiDoc.getName());
Assert.assertEquals(1, apiDoc.getMethods().size());
for (ApiMethodDoc apiMethodDoc : apiDoc.getMethods()) {
if (apiMethodDoc.getPath().contains("/api-verb-2/spring-api-verb-controller-method-one")) {
Assert.assertEquals(2, apiMethodDoc.getVerb().size());
}
}
}
}