forked from loafle/openapi-generator-original
[GO] Add support for model name mapping for go (#17023)
* Add support for model name mapping for go Signed-off-by: Aidan Jensen <aidan@artificial.com> * Add model name and filename tests Signed-off-by: Aidan <aidan@artificial.com> * Use File.separator to make the test platform agnostic Signed-off-by: Aidan <aidan@artificial.com> --------- Signed-off-by: Aidan Jensen <aidan@artificial.com> Signed-off-by: Aidan <aidan@artificial.com>
This commit is contained in:
parent
92daacd6a2
commit
c48cddd640
@ -280,6 +280,10 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toModelFilename(String name) {
|
public String toModelFilename(String name) {
|
||||||
|
// Obtain the model name from modelNameMapping directly if provided
|
||||||
|
if (modelNameMapping.containsKey(name)) {
|
||||||
|
name = modelNameMapping.get(name);
|
||||||
|
}
|
||||||
name = toModel("model_" + name);
|
name = toModel("model_" + name);
|
||||||
|
|
||||||
if (isReservedFilename(name)) {
|
if (isReservedFilename(name)) {
|
||||||
@ -295,6 +299,11 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String toModel(String name, boolean doUnderscore) {
|
public String toModel(String name, boolean doUnderscore) {
|
||||||
|
// obtain the name from modelNameMapping directly if provided
|
||||||
|
if (modelNameMapping.containsKey(name)) {
|
||||||
|
return modelNameMapping.get(name);
|
||||||
|
}
|
||||||
|
|
||||||
if (!StringUtils.isEmpty(modelNamePrefix)) {
|
if (!StringUtils.isEmpty(modelNamePrefix)) {
|
||||||
name = modelNamePrefix + "_" + name;
|
name = modelNamePrefix + "_" + name;
|
||||||
}
|
}
|
||||||
|
@ -30,6 +30,8 @@ import org.testng.Assert;
|
|||||||
import org.testng.annotations.DataProvider;
|
import org.testng.annotations.DataProvider;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
@SuppressWarnings("static-method")
|
@SuppressWarnings("static-method")
|
||||||
public class GoModelTest {
|
public class GoModelTest {
|
||||||
|
|
||||||
@ -298,4 +300,28 @@ public class GoModelTest {
|
|||||||
Assert.assertEquals(cm.name, name);
|
Assert.assertEquals(cm.name, name);
|
||||||
Assert.assertEquals(cm.classname, expectedName);
|
Assert.assertEquals(cm.classname, expectedName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DataProvider(name = "modelMappedNames")
|
||||||
|
public static Object[][] mappedNames() {
|
||||||
|
return new Object[][] {
|
||||||
|
{"mapped", "Remapped", "model_remapped.go"},
|
||||||
|
{"mapped_underscore", "RemappedUnderscore", "model_remapped_underscore.go"},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(dataProvider = "modelMappedNames", description = "map model names")
|
||||||
|
public void modelNameMappingsTest(String name, String expectedName, String expectedFilename) {
|
||||||
|
final Schema model = new Schema();
|
||||||
|
final DefaultCodegen codegen = new GoClientCodegen();
|
||||||
|
codegen.modelNameMapping().put(name, expectedName);
|
||||||
|
OpenAPI openAPI = TestUtils.createOpenAPIWithOneSchema(name, model);
|
||||||
|
codegen.setOpenAPI(openAPI);
|
||||||
|
final CodegenModel cm = codegen.fromModel(name, model);
|
||||||
|
|
||||||
|
final String fn = codegen.modelFilename("model.mustache", name, "");
|
||||||
|
Assert.assertEquals(fn, File.separator + expectedFilename);
|
||||||
|
|
||||||
|
Assert.assertEquals(cm.name, name);
|
||||||
|
Assert.assertEquals(cm.classname, expectedName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user