Skip to content

Commit 8a4473d

Browse files
beikovfrantuma
authored andcommitted
Test and fix #2083 properties in ComposedModel
1 parent dbdcc5c commit 8a4473d

File tree

2 files changed

+57
-3
lines changed

2 files changed

+57
-3
lines changed

modules/swagger-parser/src/main/java/io/swagger/parser/processors/ModelProcessor.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,13 @@ public void processModel(Model model) {
3737
} else if (model instanceof ComposedModel) {
3838
processComposedModel((ComposedModel) model);
3939
} else if (model instanceof ModelImpl) {
40-
processModelImpl((ModelImpl) model);
40+
processModelProperties( model);
4141
}
4242
}
4343

44-
private void processModelImpl(ModelImpl modelImpl) {
44+
private void processModelProperties(Model model) {
4545

46-
final Map<String, Property> properties = modelImpl.getProperties();
46+
final Map<String, Property> properties = model.getProperties();
4747

4848
if (properties == null) {
4949
return;
@@ -68,6 +68,7 @@ private void processComposedModel(ComposedModel composedModel) {
6868
}
6969
}
7070

71+
processModelProperties(composedModel);
7172
}
7273

7374
private void processArrayModel(ArrayModel arrayModel) {

modules/swagger-parser/src/test/java/io/swagger/parser/processors/ModelProcessorTest.java

+53
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import io.swagger.models.*;
44
import io.swagger.models.properties.Property;
5+
import io.swagger.models.properties.RefProperty;
56
import io.swagger.models.refs.RefFormat;
67
import io.swagger.parser.ResolverCache;
78
import mockit.*;
@@ -150,4 +151,56 @@ private void setupPropertyAndExternalRefProcessors() {
150151
result = externalRefProcessor;
151152
}};
152153
}
154+
155+
156+
@Test
157+
public void testProcessComposedModelWithProperties(@Injectable final Property property1) throws Exception {
158+
setupPropertyAndExternalRefProcessors();
159+
160+
final String ref1 = "http://my.company.com/path/to/file.json#/foo/bar";
161+
final String ref2 = "http://my.company.com/path/to/file.json#/this/that";
162+
final String ref3 = "http://my.company.com/path/to/file.json#/hello/world";
163+
final String ref4 = "http://my.company.com/path/to/file.json#/hello/ref";
164+
final Property property2 = new RefProperty(ref4);
165+
166+
ModelProcessor modelProcessor = new ModelProcessor(cache, swagger);
167+
168+
new Expectations() {{
169+
externalRefProcessor.processRefToExternalDefinition(ref1, RefFormat.URL);
170+
times = 1;
171+
result = "bar";
172+
externalRefProcessor.processRefToExternalDefinition(ref2, RefFormat.URL);
173+
times = 1;
174+
result = "that";
175+
externalRefProcessor.processRefToExternalDefinition(ref3, RefFormat.URL);
176+
times = 1;
177+
result = "world";
178+
propertyProcessor.processProperty(property1);
179+
times = 1;
180+
propertyProcessor.processProperty(property2);
181+
times = 1;
182+
}};
183+
184+
ComposedModel composedModel = new ComposedModel();
185+
composedModel.child(new RefModel(ref1));
186+
composedModel.parent(new RefModel(ref2));
187+
composedModel.interfaces(Arrays.asList(new RefModel(ref3)));
188+
composedModel.addProperty("foo", property1);
189+
composedModel.addProperty("bar", property2);
190+
191+
modelProcessor.processModel(composedModel);
192+
193+
new FullVerifications() {{
194+
externalRefProcessor.processRefToExternalDefinition(ref1, RefFormat.URL);
195+
times = 1;
196+
externalRefProcessor.processRefToExternalDefinition(ref2, RefFormat.URL);
197+
times = 1;
198+
externalRefProcessor.processRefToExternalDefinition(ref3, RefFormat.URL);
199+
times = 1;
200+
}};
201+
202+
assertEquals(((RefModel) composedModel.getChild()).get$ref(), "#/definitions/bar");
203+
assertEquals(((RefModel) composedModel.getParent()).get$ref(), "#/definitions/that");
204+
assertEquals((composedModel.getInterfaces().get(0)).get$ref(), "#/definitions/world");
205+
}
153206
}

0 commit comments

Comments
 (0)