forked from loafle/openapi-generator-original
fixed InlineModelResolver to support Title as model name for any inline
object InlineModels defined within MapProerty and ArrayProerty were not using "title". Added Unit Tests
This commit is contained in:
parent
0547f0d6d8
commit
fe5c235727
@ -167,7 +167,7 @@ public class InlineModelResolver {
|
||||
if (inner instanceof ObjectProperty) {
|
||||
ObjectProperty op = (ObjectProperty) inner;
|
||||
if (op.getProperties() != null && op.getProperties().size() > 0) {
|
||||
String innerModelName = uniqueName(modelName + "_inner");
|
||||
String innerModelName = resolveModelName(op.getTitle(),modelName + "_inner");
|
||||
Model innerModel = modelFromProperty(op, innerModelName);
|
||||
String existing = matchGenerated(innerModel);
|
||||
if (existing == null) {
|
||||
@ -238,9 +238,10 @@ public class InlineModelResolver {
|
||||
if (property instanceof ObjectProperty &&
|
||||
((ObjectProperty)property).getProperties() != null &&
|
||||
((ObjectProperty)property).getProperties().size() > 0) {
|
||||
String modelName = uniqueName(path + "_" + key);
|
||||
|
||||
ObjectProperty op = (ObjectProperty) property;
|
||||
|
||||
String modelName = resolveModelName(op.getTitle(), path + "_" + key);
|
||||
Model model = modelFromProperty(op, modelName);
|
||||
|
||||
String existing = matchGenerated(model);
|
||||
@ -261,7 +262,7 @@ public class InlineModelResolver {
|
||||
ObjectProperty op = (ObjectProperty) inner;
|
||||
if (op.getProperties() != null && op.getProperties().size() > 0) {
|
||||
flattenProperties(op.getProperties(), path);
|
||||
String modelName = uniqueName(path + "_" + key);
|
||||
String modelName = resolveModelName(op.getTitle(),path + "_" + key);
|
||||
Model innerModel = modelFromProperty(op, modelName);
|
||||
String existing = matchGenerated(innerModel);
|
||||
if (existing != null) {
|
||||
@ -281,7 +282,7 @@ public class InlineModelResolver {
|
||||
ObjectProperty op = (ObjectProperty) inner;
|
||||
if (op.getProperties() != null && op.getProperties().size() > 0) {
|
||||
flattenProperties(op.getProperties(), path);
|
||||
String modelName = uniqueName(path + "_" + key);
|
||||
String modelName = resolveModelName(op.getTitle(), path + "_" + key);
|
||||
Model innerModel = modelFromProperty(op, modelName);
|
||||
String existing = matchGenerated(innerModel);
|
||||
if (existing != null) {
|
||||
|
@ -15,7 +15,7 @@ import static org.testng.AssertJUnit.*;
|
||||
@SuppressWarnings("static-method")
|
||||
public class InlineModelResolverTest {
|
||||
@Test
|
||||
public void resolveInlineModelTest() throws Exception {
|
||||
public void resolveInlineModelTestWithoutTitle() throws Exception {
|
||||
Swagger swagger = new Swagger();
|
||||
|
||||
swagger.addDefinition("User", new ModelImpl()
|
||||
@ -23,7 +23,6 @@ public class InlineModelResolverTest {
|
||||
.description("a common user")
|
||||
.property("name", new StringProperty())
|
||||
.property("address", new ObjectProperty()
|
||||
.title("title")
|
||||
._default("default")
|
||||
.access("access")
|
||||
.readOnly(false)
|
||||
@ -46,6 +45,143 @@ public class InlineModelResolverTest {
|
||||
assertNotNull(address.getProperties().get("street"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void resolveInlineModelTestWithTitle() throws Exception {
|
||||
Swagger swagger = new Swagger();
|
||||
|
||||
swagger.addDefinition("User", new ModelImpl()
|
||||
.name("user")
|
||||
.description("a common user")
|
||||
.property("name", new StringProperty())
|
||||
.property("address", new ObjectProperty()
|
||||
.title("UserAddressTitle")
|
||||
._default("default")
|
||||
.access("access")
|
||||
.readOnly(false)
|
||||
.required(true)
|
||||
.description("description")
|
||||
.name("name")
|
||||
.property("street", new StringProperty())
|
||||
.property("city", new StringProperty())));
|
||||
|
||||
new InlineModelResolver().flatten(swagger);
|
||||
|
||||
ModelImpl user = (ModelImpl)swagger.getDefinitions().get("User");
|
||||
|
||||
assertNotNull(user);
|
||||
assertTrue(user.getProperties().get("address") instanceof RefProperty);
|
||||
|
||||
ModelImpl address = (ModelImpl)swagger.getDefinitions().get("UserAddressTitle");
|
||||
assertNotNull(address);
|
||||
assertNotNull(address.getProperties().get("city"));
|
||||
assertNotNull(address.getProperties().get("street"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void resolveInlineModel2EqualInnerModels() throws Exception {
|
||||
Swagger swagger = new Swagger();
|
||||
|
||||
swagger.addDefinition("User", new ModelImpl()
|
||||
.name("user")
|
||||
.description("a common user")
|
||||
.property("name", new StringProperty())
|
||||
.property("address", new ObjectProperty()
|
||||
.title("UserAddressTitle")
|
||||
._default("default")
|
||||
.access("access")
|
||||
.readOnly(false)
|
||||
.required(true)
|
||||
.description("description")
|
||||
.name("name")
|
||||
.property("street", new StringProperty())
|
||||
.property("city", new StringProperty())));
|
||||
|
||||
swagger.addDefinition("AnotherUser", new ModelImpl()
|
||||
.name("user")
|
||||
.description("a common user")
|
||||
.property("name", new StringProperty())
|
||||
.property("lastName", new StringProperty())
|
||||
.property("address", new ObjectProperty()
|
||||
.title("UserAddressTitle")
|
||||
._default("default")
|
||||
.access("access")
|
||||
.readOnly(false)
|
||||
.required(true)
|
||||
.description("description")
|
||||
.name("name")
|
||||
.property("street", new StringProperty())
|
||||
.property("city", new StringProperty())));
|
||||
|
||||
new InlineModelResolver().flatten(swagger);
|
||||
|
||||
ModelImpl user = (ModelImpl)swagger.getDefinitions().get("User");
|
||||
|
||||
assertNotNull(user);
|
||||
assertTrue(user.getProperties().get("address") instanceof RefProperty);
|
||||
|
||||
ModelImpl address = (ModelImpl)swagger.getDefinitions().get("UserAddressTitle");
|
||||
assertNotNull(address);
|
||||
assertNotNull(address.getProperties().get("city"));
|
||||
assertNotNull(address.getProperties().get("street"));
|
||||
ModelImpl duplicateAddress = (ModelImpl)swagger.getDefinitions().get("UserAddressTitle_0");
|
||||
assertNull(duplicateAddress);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void resolveInlineModel2DifferentInnerModelsWIthSameTitle() throws Exception {
|
||||
Swagger swagger = new Swagger();
|
||||
|
||||
swagger.addDefinition("User", new ModelImpl()
|
||||
.name("user")
|
||||
.description("a common user")
|
||||
.property("name", new StringProperty())
|
||||
.property("address", new ObjectProperty()
|
||||
.title("UserAddressTitle")
|
||||
._default("default")
|
||||
.access("access")
|
||||
.readOnly(false)
|
||||
.required(true)
|
||||
.description("description")
|
||||
.name("name")
|
||||
.property("street", new StringProperty())
|
||||
.property("city", new StringProperty())));
|
||||
|
||||
swagger.addDefinition("AnotherUser", new ModelImpl()
|
||||
.name("AnotherUser")
|
||||
.description("a common user")
|
||||
.property("name", new StringProperty())
|
||||
.property("lastName", new StringProperty())
|
||||
.property("address", new ObjectProperty()
|
||||
.title("UserAddressTitle")
|
||||
._default("default")
|
||||
.access("access")
|
||||
.readOnly(false)
|
||||
.required(true)
|
||||
.description("description")
|
||||
.name("name")
|
||||
.property("street", new StringProperty())
|
||||
.property("city", new StringProperty())
|
||||
.property("apartment", new StringProperty())));
|
||||
|
||||
new InlineModelResolver().flatten(swagger);
|
||||
|
||||
ModelImpl user = (ModelImpl)swagger.getDefinitions().get("User");
|
||||
|
||||
assertNotNull(user);
|
||||
assertTrue(user.getProperties().get("address") instanceof RefProperty);
|
||||
|
||||
ModelImpl address = (ModelImpl)swagger.getDefinitions().get("UserAddressTitle");
|
||||
assertNotNull(address);
|
||||
assertNotNull(address.getProperties().get("city"));
|
||||
assertNotNull(address.getProperties().get("street"));
|
||||
ModelImpl duplicateAddress = (ModelImpl)swagger.getDefinitions().get("UserAddressTitle_1");
|
||||
assertNotNull(duplicateAddress);
|
||||
assertNotNull(duplicateAddress.getProperties().get("city"));
|
||||
assertNotNull(duplicateAddress.getProperties().get("street"));
|
||||
assertNotNull(duplicateAddress.getProperties().get("apartment"));
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testInlineResponseModel() throws Exception {
|
||||
Swagger swagger = new Swagger();
|
||||
@ -112,12 +248,37 @@ public class InlineModelResolverTest {
|
||||
|
||||
|
||||
@Test
|
||||
public void resolveInlineArrayModel() throws Exception {
|
||||
public void resolveInlineArrayModelWithTitle() throws Exception {
|
||||
Swagger swagger = new Swagger();
|
||||
|
||||
swagger.addDefinition("User", new ArrayModel()
|
||||
.items(new ObjectProperty()
|
||||
.title("InnerUserTitle")
|
||||
._default("default")
|
||||
.access("access")
|
||||
.readOnly(false)
|
||||
.required(true)
|
||||
.description("description")
|
||||
.name("name")
|
||||
.property("street", new StringProperty())
|
||||
.property("city", new StringProperty())));
|
||||
|
||||
new InlineModelResolver().flatten(swagger);
|
||||
|
||||
Model model = swagger.getDefinitions().get("User");
|
||||
assertTrue(model instanceof ArrayModel);
|
||||
|
||||
Model user = swagger.getDefinitions().get("InnerUserTitle");
|
||||
assertNotNull(user);
|
||||
assertEquals("description", user.getDescription());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void resolveInlineArrayModelWithoutTitle() throws Exception {
|
||||
Swagger swagger = new Swagger();
|
||||
|
||||
swagger.addDefinition("User", new ArrayModel()
|
||||
.items(new ObjectProperty()
|
||||
.title("title")
|
||||
._default("default")
|
||||
.access("access")
|
||||
.readOnly(false)
|
||||
@ -135,7 +296,10 @@ public class InlineModelResolverTest {
|
||||
Model user = swagger.getDefinitions().get("User_inner");
|
||||
assertNotNull(user);
|
||||
assertEquals("description", user.getDescription());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Test
|
||||
public void resolveInlineBodyParameter() throws Exception {
|
||||
@ -710,12 +874,11 @@ public class InlineModelResolverTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testArbitraryObjectModelWithArrayInline() {
|
||||
public void testArbitraryObjectModelWithArrayInlineWithoutTitle() {
|
||||
Swagger swagger = new Swagger();
|
||||
|
||||
swagger.addDefinition("User", new ArrayModel()
|
||||
.items(new ObjectProperty()
|
||||
.title("title")
|
||||
._default("default")
|
||||
.access("access")
|
||||
.readOnly(false)
|
||||
@ -739,4 +902,35 @@ public class InlineModelResolverTest {
|
||||
ObjectProperty op = (ObjectProperty) inlineProp;
|
||||
assertNull(op.getProperties());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testArbitraryObjectModelWithArrayInlineWithTitle() {
|
||||
Swagger swagger = new Swagger();
|
||||
|
||||
swagger.addDefinition("User", new ArrayModel()
|
||||
.items(new ObjectProperty()
|
||||
.title("InnerUserTitle")
|
||||
._default("default")
|
||||
.access("access")
|
||||
.readOnly(false)
|
||||
.required(true)
|
||||
.description("description")
|
||||
.name("name")
|
||||
.property("arbitrary", new ObjectProperty())));
|
||||
|
||||
new InlineModelResolver().flatten(swagger);
|
||||
|
||||
Model model = swagger.getDefinitions().get("User");
|
||||
assertTrue(model instanceof ArrayModel);
|
||||
ArrayModel am = (ArrayModel) model;
|
||||
Property inner = am.getItems();
|
||||
assertTrue(inner instanceof RefProperty);
|
||||
|
||||
ModelImpl userInner = (ModelImpl)swagger.getDefinitions().get("InnerUserTitle");
|
||||
assertNotNull(userInner);
|
||||
Property inlineProp = userInner.getProperties().get("arbitrary");
|
||||
assertTrue(inlineProp instanceof ObjectProperty);
|
||||
ObjectProperty op = (ObjectProperty) inlineProp;
|
||||
assertNull(op.getProperties());
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user