add new tests for naming model class

fix #2191
PR #2192
This commit is contained in:
Antonio Spinelli 2016-02-21 01:47:04 -03:00
parent 1446f4a13e
commit 43f917493d
2 changed files with 46 additions and 13 deletions

View File

@ -20,6 +20,7 @@ import io.swagger.models.properties.StringProperty;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import org.testng.Assert; import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test; import org.testng.annotations.Test;
import java.util.List; import java.util.List;
@ -456,4 +457,28 @@ public class JavaModelTest {
Assert.assertNull(cm.allowableValues); Assert.assertNull(cm.allowableValues);
} }
@DataProvider(name = "modelNames")
public static Object[][] primeNumbers() {
return new Object[][] {
{"sample", "Sample"},
{"sample_name", "SampleName"},
{"sample__name", "SampleName"},
{"/sample", "Sample"},
{"\\sample", "Sample"},
{"sample.name", "SampleName"},
{"_sample", "Sample"},
{"Sample", "Sample"},
};
}
@Test(dataProvider = "modelNames", description = "avoid inner class")
public void modelNameTest(String name, String expectedName) {
final Model model = new ModelImpl();
final DefaultCodegen codegen = new JavaClientCodegen();
final CodegenModel cm = codegen.fromModel(name, model);
Assert.assertEquals(cm.name, name);
Assert.assertEquals(cm.classname, expectedName);
}
} }

View File

@ -16,6 +16,7 @@ import io.swagger.models.properties.StringProperty;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import org.testng.Assert; import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test; import org.testng.annotations.Test;
@SuppressWarnings("static-method") @SuppressWarnings("static-method")
@ -242,19 +243,26 @@ public class PhpModelTest {
Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("Children")).size(), 1); Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("Children")).size(), 1);
} }
@Test(description = "avoid $ in class and file name, cased by two underscore in the model name.") @DataProvider(name = "modelNames")
public void ModelTest() { public static Object[][] primeNumbers() {
final Model model = new ModelImpl() return new Object[][] {
.description("a map model") {"sample", "Sample"},
.additionalProperties(new RefProperty("#/definitions/Children")); {"sample_name", "SampleName"},
final DefaultCodegen codegen = new PhpClientCodegen(); {"sample__name", "SampleName"},
final CodegenModel cm = codegen.fromModel("sample__model", model); {"/sample", "Sample"},
{"\\sample", "\\Sample"},
{"sample.name", "SampleName"},
{"_sample", "Sample"},
};
}
Assert.assertEquals(cm.name, "sample__model"); @Test(dataProvider = "modelNames", description = "avoid inner class")
Assert.assertEquals(cm.classname, "SampleModel"); public void modelNameTest(String name, String expectedName) {
Assert.assertEquals(cm.description, "a map model"); final Model model = new ModelImpl();
Assert.assertEquals(cm.vars.size(), 0); final DefaultCodegen codegen = new PhpClientCodegen();
Assert.assertEquals(cm.imports.size(), 2); final CodegenModel cm = codegen.fromModel(name, model);
Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("Children")).size(), 1);
Assert.assertEquals(cm.name, name);
Assert.assertEquals(cm.classname, expectedName);
} }
} }