[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:
Aidan 2023-11-11 00:10:42 -08:00 committed by GitHub
parent 92daacd6a2
commit c48cddd640
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 35 additions and 0 deletions

View File

@ -280,6 +280,10 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege
@Override
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);
if (isReservedFilename(name)) {
@ -295,6 +299,11 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege
}
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)) {
name = modelNamePrefix + "_" + name;
}

View File

@ -30,6 +30,8 @@ import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.io.File;
@SuppressWarnings("static-method")
public class GoModelTest {
@ -298,4 +300,28 @@ public class GoModelTest {
Assert.assertEquals(cm.name, name);
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);
}
}