package io.swagger.jackson; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; import io.swagger.converter.ModelConverterContextImpl; import io.swagger.models.Model; import io.swagger.models.properties.ArrayProperty; import io.swagger.models.properties.MapProperty; import io.swagger.models.properties.Property; import org.testng.annotations.Test; import java.util.Map; public class ContainerTest extends SwaggerTestBase { @Test public void testArray() throws Exception { final ModelResolver modelResolver = new ModelResolver(mapper()); final ModelConverterContextImpl context = new ModelConverterContextImpl(modelResolver); final Model model = context .resolve(ArrayBean.class); final Map<String, Property> props = model.getProperties(); assertEquals(1, props.size()); final Property prop = props.get("a"); assertNotNull(prop); assertEquals(prop.getType(), "array"); final Property items = ((ArrayProperty) prop).getItems(); assertNotNull(items); assertEquals(items.getType(), "integer"); } @Test public void testMap() throws Exception { final ModelResolver modelResolver = new ModelResolver(mapper()); final ModelConverterContextImpl context = new ModelConverterContextImpl(modelResolver); final Model model = context .resolve(MapBean.class); final Map<String, Property> props = model.getProperties(); assertEquals(1, props.size()); final Property prop = props.get("stuff"); assertNotNull(prop); assertEquals(prop.getType(), "object"); final Property items = ((MapProperty) prop).getAdditionalProperties(); assertNotNull(items); assertEquals(items.getType(), "string"); assertEquals(items.getFormat(), "date-time"); } @Test public void testComplexMap() throws Exception { ModelResolver resolver = new ModelResolver(mapper()); final ModelConverterContextImpl context = new ModelConverterContextImpl(resolver); context.resolve(WrapperType.class); final Map<String, Model> models = context.getDefinedModels(); final Model innerType = models.get("InnerType"); assertNotNull(innerType); final Map<String, Property> innerProps = innerType.getProperties(); assertEquals(innerProps.size(), 2); final Property foo = innerProps.get("foo"); assertEquals(foo.getType(), "integer"); assertEquals(foo.getFormat(), "int32"); final Property name = innerProps.get("name"); assertEquals(name.getType(), "string"); final Model wrapperType = models.get("WrapperType"); assertNotNull(wrapperType); assertEquals(wrapperType.getProperties().get("innerType").getType(), "object"); } static class ArrayBean { public int[] a; } static class MapBean { public Map<Short, java.util.Calendar> stuff; } static class WrapperType { public Map<String, InnerType> innerType; } }