package io.swagger;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
import io.swagger.converter.ModelConverters;
import io.swagger.matchers.SerializationMatchers;
import io.swagger.models.Model;
import io.swagger.models.ModelWithEnumField;
import io.swagger.models.ModelWithEnumProperty;
import io.swagger.models.properties.Property;
import io.swagger.models.properties.StringProperty;
import org.testng.annotations.Test;
import java.util.Arrays;
import java.util.Map;
public class EnumPropertyTest {
@Test(description = "it should read a model with an enum property")
public void testEnumProperty() {
final Map<String, Model> models = ModelConverters.getInstance().read(ModelWithEnumProperty.class);
final String json = "{" +
" \"ModelWithEnumProperty\":{" +
" \"type\":\"object\"," +
" \"properties\":{" +
" \"enumValue\":{" +
" \"type\":\"string\"," +
" \"enum\":[" +
" \"PRIVATE\"," +
" \"PUBLIC\"," +
" \"SYSTEM\"," +
" \"INVITE_ONLY\"" +
" ]" +
" }" +
" }" +
" }" +
"}";
SerializationMatchers.assertEqualsToJson(models, json);
}
@Test(description = "it should extract enum values from fields")
public void testExtractEnumFields() {
final Map<String, Model> models = ModelConverters.getInstance().read(ModelWithEnumField.class);
final Model model = models.get("ModelWithEnumField");
final Property enumProperty = model.getProperties().get("enumValue");
assertTrue(enumProperty instanceof StringProperty);
final StringProperty stringProperty = (StringProperty)enumProperty;
assertEquals(stringProperty.getEnum(), Arrays.asList("PRIVATE", "PUBLIC", "SYSTEM", "INVITE_ONLY"));
}
@Test(description = "it should extract enum values from method return types")
public void testExtractEnumReturnType() {
final Map<String, Model> models = ModelConverters.getInstance().read(ModelWithEnumProperty.class);
final Model model = models.get("ModelWithEnumProperty");
final Property enumProperty = model.getProperties().get("enumValue");
assertTrue(enumProperty instanceof StringProperty);
final StringProperty stringProperty = (StringProperty)enumProperty;
assertEquals(stringProperty.getEnum(), Arrays.asList("PRIVATE", "PUBLIC", "SYSTEM", "INVITE_ONLY"));
}
}