forked from loafle/openapi-generator-original
issue #1875 fixing -Dapis= work for -l html, provding test.
This commit is contained in:
parent
41c0034794
commit
49f56c9e23
@ -101,20 +101,4 @@ public class StaticHtmlGenerator extends DefaultCodegen implements CodegenConfig
|
||||
}
|
||||
return objs;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addOperationToGroup(String tag, String resourcePath, Operation operation, CodegenOperation co, Map<String, List<CodegenOperation>> operations) {
|
||||
List<CodegenOperation> opList = operations.get(ALL_OPERATIONS);
|
||||
if (opList == null) {
|
||||
opList = new ArrayList<CodegenOperation>();
|
||||
operations.put(ALL_OPERATIONS, opList);
|
||||
}
|
||||
for (CodegenOperation addedOperation : opList) {
|
||||
if (addedOperation.operationId.equals(co.operationId) && addedOperation.path.equals(co.path) && addedOperation.httpMethod.equals(co.httpMethod)) {
|
||||
addedOperation.tags.addAll(co.tags);
|
||||
return;
|
||||
}
|
||||
}
|
||||
opList.add(co);
|
||||
}
|
||||
}
|
@ -0,0 +1,132 @@
|
||||
package io.swagger.codegen.statichtml;
|
||||
|
||||
import static org.testng.Assert.assertEquals;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.junit.rules.TemporaryFolder;
|
||||
import org.testng.annotations.AfterMethod;
|
||||
import org.testng.annotations.BeforeMethod;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import io.swagger.codegen.ClientOptInput;
|
||||
import io.swagger.codegen.ClientOpts;
|
||||
import io.swagger.codegen.CodegenConfig;
|
||||
import io.swagger.codegen.DefaultGenerator;
|
||||
import io.swagger.codegen.languages.StaticHtmlGenerator;
|
||||
import io.swagger.models.Operation;
|
||||
import io.swagger.models.Path;
|
||||
import io.swagger.models.Swagger;
|
||||
import io.swagger.parser.SwaggerParser;
|
||||
|
||||
public class StaticHtmlTagsTest {
|
||||
|
||||
public TemporaryFolder folder = new TemporaryFolder();
|
||||
|
||||
@BeforeMethod
|
||||
public void setUp() throws Exception {
|
||||
folder.create();
|
||||
}
|
||||
|
||||
@AfterMethod
|
||||
public void tearDown() throws Exception {
|
||||
folder.delete();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testApiTags() throws Exception {
|
||||
final Swagger swagger = new SwaggerParser().read("src/test/resources/2_0/petstore.json");
|
||||
|
||||
final int maxTagsToTest = 2; // how to flip it randomly from 2 to 1, and shuffle ops?
|
||||
// if an op has a few tags it will be duplicated here, but it's exactly what we expect in doc
|
||||
final List<Operation> expectedOperations = new ArrayList<Operation>();
|
||||
|
||||
final String capitalCommatizedTags = pickupFewTagsAndOps(swagger,
|
||||
maxTagsToTest, expectedOperations);
|
||||
|
||||
final Collection<Object> seenOperations = new ArrayList<Object>();
|
||||
CodegenConfig codegenConfig = new StaticHtmlGenerator(){ // new StaticDocCodegen(){
|
||||
public Map<String, Object> postProcessSupportingFileData(Map<String, Object> objs) {
|
||||
//System.out.println(getOperations(objs));
|
||||
final Collection<?> actualOperations = getOperations(objs);
|
||||
seenOperations.addAll(actualOperations);
|
||||
assertEquals(actualOperations.size(), expectedOperations.size(),
|
||||
"Expectig the same size of ops for -Dapis="+capitalCommatizedTags +
|
||||
" in fact, actual "+actualOperations+" doesn't seem like expecting "
|
||||
+ expectedOperations);
|
||||
return objs;
|
||||
}
|
||||
};
|
||||
codegenConfig.setOutputDir(folder.getRoot().getAbsolutePath());
|
||||
|
||||
ClientOptInput clientOptInput = new ClientOptInput().opts(new ClientOpts()).swagger(swagger)
|
||||
.config(codegenConfig);
|
||||
|
||||
final String apisBackup = System.setProperty("apis", capitalCommatizedTags);
|
||||
try {
|
||||
DefaultGenerator gen = new DefaultGenerator();
|
||||
gen.opts(clientOptInput);
|
||||
gen.generate();
|
||||
assertEquals(seenOperations.isEmpty(), false,
|
||||
"something has been changed in code and now code bypass the mock above...");
|
||||
} finally {
|
||||
if (apisBackup!=null) {
|
||||
System.setProperty("apis", apisBackup);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected String pickupFewTagsAndOps(final Swagger swagger,
|
||||
final int maxTagsToTest, final Collection<Operation> expectedOperations) {
|
||||
Set<String> expectedTags = new HashSet<String>();
|
||||
for ( Path path:swagger.getPaths().values() ) {
|
||||
for ( Operation op : path.getOperations() ) {
|
||||
for ( String tag : op.getTags() ) {
|
||||
if (expectedTags.size() < maxTagsToTest) {
|
||||
expectedTags.add(tag);
|
||||
expectedOperations.add(op);
|
||||
} else {
|
||||
if ( expectedTags.contains(tag) ) {
|
||||
expectedOperations.add(op);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final String capitalCommatizedTags = StringUtils.join(
|
||||
Lists.transform(Lists.newArrayList(expectedTags),
|
||||
new Function<String, String>() {
|
||||
@Nullable
|
||||
@Override
|
||||
public String apply(final String input) {
|
||||
return StringUtils.capitalize(input);
|
||||
}
|
||||
}), ",");
|
||||
return capitalCommatizedTags;
|
||||
}
|
||||
|
||||
@SuppressWarnings({ "rawtypes", "unchecked" })
|
||||
protected static Collection getOperations(Map<String, Object> objs) {
|
||||
final ArrayList rez = new ArrayList();
|
||||
final Map apiInfo = (Map)objs.get("apiInfo");
|
||||
for(Object apiElem : ((List)apiInfo.get("apis"))){
|
||||
Map<String, Object> api = (Map<String, Object>) apiElem;
|
||||
rez.addAll( (Collection) // what if the same op goes on two tags??
|
||||
((Map)api.get("operations")).get("operation"));
|
||||
}
|
||||
return rez;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user