package io.swagger; import io.swagger.jaxrs.Reader; import io.swagger.models.Model; import io.swagger.models.Operation; import io.swagger.models.RefModel; import io.swagger.models.Swagger; import io.swagger.models.parameters.BodyParameter; import io.swagger.models.properties.Property; import io.swagger.models.properties.RefProperty; import io.swagger.resources.ResourceWithChildType; import org.testng.annotations.Test; import static org.testng.Assert.assertEquals; /** * This class test that refs are setup correctly when a child type is referenced. */ public class ChildTypeTest { private final Swagger swagger = new Reader(new Swagger()).read(ResourceWithChildType.class); private BodyParameter getBodyParameter(Operation op, int index) { return (BodyParameter) op.getParameters().get(index); } @Test(description = "Tests child type response schema ref is correctly set up") public void testChildTypeResponse() { Operation op = swagger.getPath("/childType/testChildTypeResponse").getGet(); Property schema = op.getResponses().get("200").getSchema(); assertEquals(schema.getClass().getName(), RefProperty.class.getName()); assertEquals(((RefProperty) schema).getSimpleRef(), "Sub1Bean"); } @Test(description = "Tests child type response schema ref is correctly set up when specified on the operation") public void testChildTypeResponseOnOperation() { Operation op = swagger.getPath("/childType/testChildTypeResponseOnOperation").getGet(); Property schema = op.getResponses().get("200").getSchema(); assertEquals(schema.getClass().getName(), RefProperty.class.getName()); assertEquals(((RefProperty) schema).getSimpleRef(), "Sub1Bean"); } @Test(description = "Tests schema ref is correctly set up for child type parameter") public void testChildTypeParameter() { Operation op = swagger.getPath("/childType/testChildTypeParameter").getPost(); BodyParameter parameter = getBodyParameter(op, 0); Model schema = parameter.getSchema(); assertEquals(schema.getClass().getName(), RefModel.class.getName()); assertEquals(((RefModel) schema).getSimpleRef(), "Sub1Bean"); } }