package org.jsondoc.springmvc.scanner;
import java.util.Iterator;
import org.jsondoc.core.pojo.ApiDoc;
import org.jsondoc.core.pojo.ApiMethodDoc;
import org.jsondoc.core.pojo.JSONDoc.MethodDisplay;
import org.jsondoc.core.scanner.JSONDocScanner;
import org.junit.Assert;
import org.junit.Test;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.google.common.collect.Sets;
public class SpringConsumesBuilderTest {
private JSONDocScanner jsondocScanner = new Spring3JSONDocScanner();
@Controller
@RequestMapping
public class SpringController {
@RequestMapping(value = "/consumes-one", consumes = MediaType.APPLICATION_JSON_VALUE)
public void consumesOne() {
}
@RequestMapping(value = "/consumes-two", consumes = { MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE })
public void consumesTwo() {
}
@RequestMapping(value = "/consumes-three")
public void consumesThree() {
}
}
@Controller
@RequestMapping(consumes = MediaType.APPLICATION_JSON_VALUE)
public class SpringController2 {
@RequestMapping(value = "/consumes-one")
public void consumesOne() {
}
@RequestMapping(value = "/consumes-two", consumes = { MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE })
public void consumesTwo() {
}
@RequestMapping(value = "/consumes-three", consumes = MediaType.APPLICATION_XML_VALUE)
public void consumesThree() {
}
}
@Test
public void testApiVerb() {
ApiDoc apiDoc = jsondocScanner.getApiDocs(Sets.<Class<?>> newHashSet(SpringController.class), MethodDisplay.URI).iterator().next();
Assert.assertEquals("SpringController", apiDoc.getName());
Assert.assertEquals(3, apiDoc.getMethods().size());
for (ApiMethodDoc apiMethodDoc : apiDoc.getMethods()) {
if (apiMethodDoc.getPath().contains("/consumes-one")) {
Assert.assertEquals(1, apiMethodDoc.getConsumes().size());
Assert.assertEquals(MediaType.APPLICATION_JSON_VALUE, apiMethodDoc.getConsumes().iterator().next());
}
if (apiMethodDoc.getPath().contains("/consumes-two")) {
Assert.assertEquals(2, apiMethodDoc.getConsumes().size());
Iterator<String> iterator = apiMethodDoc.getConsumes().iterator();
Assert.assertEquals(MediaType.APPLICATION_JSON_VALUE, iterator.next());
Assert.assertEquals(MediaType.APPLICATION_XML_VALUE, iterator.next());
}
if (apiMethodDoc.getPath().contains("/consumes-three")) {
Assert.assertEquals(1, apiMethodDoc.getConsumes().size());
String consumes = apiMethodDoc.getConsumes().iterator().next();
Assert.assertEquals(MediaType.APPLICATION_JSON_VALUE, consumes);
}
}
apiDoc = jsondocScanner.getApiDocs(Sets.<Class<?>> newHashSet(SpringController2.class), MethodDisplay.URI).iterator().next();
Assert.assertEquals("SpringController2", apiDoc.getName());
Assert.assertEquals(3, apiDoc.getMethods().size());
for (ApiMethodDoc apiMethodDoc : apiDoc.getMethods()) {
if (apiMethodDoc.getPath().contains("/consumes-one")) {
Assert.assertEquals(1, apiMethodDoc.getConsumes().size());
Assert.assertEquals(MediaType.APPLICATION_JSON_VALUE, apiMethodDoc.getConsumes().iterator().next());
}
if (apiMethodDoc.getPath().contains("/consumes-two")) {
Assert.assertEquals(2, apiMethodDoc.getConsumes().size());
Iterator<String> iterator = apiMethodDoc.getConsumes().iterator();
Assert.assertEquals(MediaType.APPLICATION_JSON_VALUE, iterator.next());
Assert.assertEquals(MediaType.APPLICATION_XML_VALUE, iterator.next());
}
if (apiMethodDoc.getPath().contains("/consumes-three")) {
Assert.assertEquals(1, apiMethodDoc.getConsumes().size());
Assert.assertEquals(MediaType.APPLICATION_XML_VALUE, apiMethodDoc.getConsumes().iterator().next());
}
}
}
}