未验证 提交 a3b67b55 编写于 作者: B Bogdan Kobylynskyi 提交者: GitHub

Code coverage for MappingConfig (#17)

* Introduce model annotations (for Lombok) #10

* Unit tests for MappingConfig

* Remove unused import in MappingConfig

* Remove code related to modelAnnotations
上级 8e332ed9
......@@ -32,7 +32,6 @@ public class InputDefinitionToDataModelMapper {
dataModel.put(FIELDS, InputValueDefinitionToParameterMapper.map(mappingConfig, typeDefinition.getInputValueDefinitions(), typeDefinition.getName()));
dataModel.put(EQUALS_AND_HASH_CODE, mappingConfig.getGenerateEqualsAndHashCode());
dataModel.put(TO_STRING, mappingConfig.getGenerateToString());
return dataModel;
}
......
......@@ -33,16 +33,16 @@ public class TypeDefinitionToDataModelMapper {
dataModel.put(PACKAGE, packageName);
dataModel.put(IMPORTS, MapperUtils.getImports(mappingConfig, packageName));
dataModel.put(CLASS_NAME, MapperUtils.getClassNameWithPrefixAndSuffix(mappingConfig, typeDefinition));
Set<String> allInterfaces = new LinkedHashSet<>();
allInterfaces.addAll(MapperUtils.getUnionsHavingType(mappingConfig, typeDefinition, document));
Set<String> allInterfaces = new LinkedHashSet<>(
MapperUtils.getUnionsHavingType(mappingConfig, typeDefinition, document));
typeDefinition.getImplements().stream()
.map(anImplement -> GraphqlTypeToJavaTypeMapper.getJavaType(mappingConfig, anImplement))
.forEach(allInterfaces::add);
dataModel.put(IMPLEMENTS, allInterfaces);
Set<ParameterDefinition> allParameters = new LinkedHashSet<>();
// Merge attributes from the type and attributes from the interface
allParameters.addAll(FieldDefinitionToParameterMapper.map(mappingConfig, typeDefinition.getFieldDefinitions(), typeDefinition.getName()));
Set<ParameterDefinition> allParameters = new LinkedHashSet<>(FieldDefinitionToParameterMapper
.map(mappingConfig, typeDefinition.getFieldDefinitions(), typeDefinition.getName()));
List<InterfaceTypeDefinition> interfaces = getInterfacesOfType(mappingConfig, typeDefinition, document);
interfaces.stream()
.map(i -> FieldDefinitionToParameterMapper.map(mappingConfig, i.getFieldDefinitions(), i.getName()))
......@@ -51,7 +51,6 @@ public class TypeDefinitionToDataModelMapper {
dataModel.put(EQUALS_AND_HASH_CODE, mappingConfig.getGenerateEqualsAndHashCode());
dataModel.put(TO_STRING, mappingConfig.getGenerateToString());
return dataModel;
}
......
package com.kobylynskyi.graphql.codegen.model;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import lombok.Data;
......@@ -53,30 +55,29 @@ public class MappingConfig implements Combinable<MappingConfig> {
}
}
@Override
public void combine(MappingConfig source) {
if (source != null) {
if (this.customTypesMapping != null && source.customTypesMapping != null) {
this.customTypesMapping.putAll(source.customTypesMapping);
} else if (this.customTypesMapping == null && source.customTypesMapping != null) {
this.customTypesMapping = source.customTypesMapping;
}
if (this.customAnnotationsMapping != null && source.customAnnotationsMapping != null) {
this.customAnnotationsMapping.putAll(source.customAnnotationsMapping);
} else if (this.customAnnotationsMapping == null && source.customAnnotationsMapping != null) {
this.customAnnotationsMapping = source.customAnnotationsMapping;
}
this.generateApis = source.generateApis != null ? source.generateApis : this.generateApis;
this.packageName = source.packageName != null ? source.packageName : this.packageName;
this.apiPackageName = source.apiPackageName != null ? source.apiPackageName : this.apiPackageName;
this.modelPackageName = source.modelPackageName != null ? source.modelPackageName : this.modelPackageName;
this.modelNamePrefix = source.modelNamePrefix != null ? source.modelNamePrefix : this.modelNamePrefix;
this.modelNameSuffix = source.modelNameSuffix != null ? source.modelNameSuffix : this.modelNameSuffix;
this.modelValidationAnnotation = source.modelValidationAnnotation != null ? source.modelValidationAnnotation : this.modelValidationAnnotation;
this.generateEqualsAndHashCode = source.generateEqualsAndHashCode != null ? source.generateEqualsAndHashCode : this.generateEqualsAndHashCode;
this.generateToString = source.generateToString != null ? source.generateToString : this.generateToString;
if (source == null) {
return;
}
if (this.customTypesMapping != null && source.customTypesMapping != null) {
this.customTypesMapping.putAll(source.customTypesMapping);
} else if (this.customTypesMapping == null) {
this.customTypesMapping = source.customTypesMapping;
}
if (this.customAnnotationsMapping != null && source.customAnnotationsMapping != null) {
this.customAnnotationsMapping.putAll(source.customAnnotationsMapping);
} else if (this.customAnnotationsMapping == null) {
this.customAnnotationsMapping = source.customAnnotationsMapping;
}
this.generateApis = source.generateApis != null ? source.generateApis : this.generateApis;
this.packageName = source.packageName != null ? source.packageName : this.packageName;
this.apiPackageName = source.apiPackageName != null ? source.apiPackageName : this.apiPackageName;
this.modelPackageName = source.modelPackageName != null ? source.modelPackageName : this.modelPackageName;
this.modelNamePrefix = source.modelNamePrefix != null ? source.modelNamePrefix : this.modelNamePrefix;
this.modelNameSuffix = source.modelNameSuffix != null ? source.modelNameSuffix : this.modelNameSuffix;
this.modelValidationAnnotation = source.modelValidationAnnotation != null ? source.modelValidationAnnotation : this.modelValidationAnnotation;
this.generateEqualsAndHashCode = source.generateEqualsAndHashCode != null ? source.generateEqualsAndHashCode : this.generateEqualsAndHashCode;
this.generateToString = source.generateToString != null ? source.generateToString : this.generateToString;
}
}
package com.kobylynskyi.graphql.codegen.model;
import static java.util.Arrays.asList;
import static java.util.Collections.singletonMap;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.AbstractMap;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.stream.Collectors;
import org.junit.jupiter.api.Test;
@SuppressWarnings("unchecked")
class MappingConfigTest {
@Test
public void combineDefaultWithNull() {
MappingConfig mappingConfig = buildEmptyMappingConfig();
mappingConfig.combine(null);
assertEquals(buildEmptyMappingConfig(), mappingConfig);
}
@Test
void combineDefaultWithDefault() {
MappingConfig mappingConfig = buildEmptyMappingConfig();
mappingConfig.combine(buildEmptyMappingConfig());
assertEquals(buildEmptyMappingConfig(), mappingConfig);
}
@Test
void combineDefaultWithCustom() {
MappingConfig mappingConfig = buildEmptyMappingConfig();
mappingConfig.combine(buildMappingConfig());
assertEquals(singletonMap("1", "2"), mappingConfig.getCustomTypesMapping());
assertEquals(singletonMap("3", "4"), mappingConfig.getCustomAnnotationsMapping());
assertEquals("ApiPackageName", mappingConfig.getApiPackageName());
assertTrue(mappingConfig.getGenerateApis());
assertTrue(mappingConfig.getGenerateEqualsAndHashCode());
assertTrue(mappingConfig.getGenerateToString());
assertEquals("ModelNamePrefix", mappingConfig.getModelNamePrefix());
assertEquals("ModelNameSuffix", mappingConfig.getModelNameSuffix());
assertEquals("ModelPackageName", mappingConfig.getModelPackageName());
assertEquals("ModelValidationAnnotation", mappingConfig.getModelValidationAnnotation());
assertEquals("PackageName", mappingConfig.getPackageName());
}
@Test
void combineCustomWithDefault() {
MappingConfig mappingConfig = buildMappingConfig();
mappingConfig.combine(buildEmptyMappingConfig());
assertEquals(singletonMap("1", "2"), mappingConfig.getCustomTypesMapping());
assertEquals(singletonMap("3", "4"), mappingConfig.getCustomAnnotationsMapping());
assertEquals("ApiPackageName", mappingConfig.getApiPackageName());
assertTrue(mappingConfig.getGenerateApis());
assertTrue(mappingConfig.getGenerateEqualsAndHashCode());
assertTrue(mappingConfig.getGenerateToString());
assertEquals("ModelNamePrefix", mappingConfig.getModelNamePrefix());
assertEquals("ModelNameSuffix", mappingConfig.getModelNameSuffix());
assertEquals("ModelPackageName", mappingConfig.getModelPackageName());
assertEquals("ModelValidationAnnotation", mappingConfig.getModelValidationAnnotation());
assertEquals("PackageName", mappingConfig.getPackageName());
}
@Test
void combineCustomWithCustom() {
MappingConfig mappingConfig = buildMappingConfig();
mappingConfig.combine(buildMappingConfig2());
assertEquals(hashMap(new HashMap.SimpleEntry<>("1", "2"), new HashMap.SimpleEntry<>("11", "22")),
mappingConfig.getCustomTypesMapping());
assertEquals(hashMap(new HashMap.SimpleEntry<>("3", "4"), new HashMap.SimpleEntry<>("33", "44")),
mappingConfig.getCustomAnnotationsMapping());
assertEquals("ApiPackageName2", mappingConfig.getApiPackageName());
assertFalse(mappingConfig.getGenerateApis());
assertFalse(mappingConfig.getGenerateEqualsAndHashCode());
assertFalse(mappingConfig.getGenerateToString());
assertEquals("ModelNamePrefix2", mappingConfig.getModelNamePrefix());
assertEquals("ModelNameSuffix2", mappingConfig.getModelNameSuffix());
assertEquals("ModelPackageName2", mappingConfig.getModelPackageName());
assertEquals("ModelValidationAnnotation2", mappingConfig.getModelValidationAnnotation());
assertEquals("PackageName2", mappingConfig.getPackageName());
}
private static Map<String, String> hashMap(AbstractMap.SimpleEntry<String, String>... entries) {
return Arrays.stream(entries).collect(
Collectors.toMap(AbstractMap.SimpleEntry::getKey, AbstractMap.SimpleEntry::getValue, (a, b) -> b));
}
private static MappingConfig buildMappingConfig() {
MappingConfig config = new MappingConfig();
config.setCustomTypesMapping(new HashMap<>(singletonMap("1", "2")));
config.setCustomAnnotationsMapping(new HashMap<>(singletonMap("3", "4")));
config.setApiPackageName("ApiPackageName");
config.setGenerateApis(true);
config.setGenerateEqualsAndHashCode(true);
config.setGenerateToString(true);
config.setModelNamePrefix("ModelNamePrefix");
config.setModelNameSuffix("ModelNameSuffix");
config.setModelPackageName("ModelPackageName");
config.setModelValidationAnnotation("ModelValidationAnnotation");
config.setPackageName("PackageName");
return config;
}
private static MappingConfig buildMappingConfig2() {
MappingConfig config = new MappingConfig();
config.setCustomTypesMapping(new HashMap<>(singletonMap("11", "22")));
config.setCustomAnnotationsMapping(new HashMap<>(singletonMap("33", "44")));
config.setApiPackageName("ApiPackageName2");
config.setGenerateApis(false);
config.setGenerateEqualsAndHashCode(false);
config.setGenerateToString(false);
config.setModelNamePrefix("ModelNamePrefix2");
config.setModelNameSuffix("ModelNameSuffix2");
config.setModelPackageName("ModelPackageName2");
config.setModelValidationAnnotation("ModelValidationAnnotation2");
config.setPackageName("PackageName2");
return config;
}
private static MappingConfig buildEmptyMappingConfig() {
MappingConfig mappingConfig = new MappingConfig();
mappingConfig.setCustomTypesMapping(null);
mappingConfig.setCustomAnnotationsMapping(null);
return mappingConfig;
}
}
\ No newline at end of file
package com.kobylynskyi.graphql.test1;
import java.util.*;
@lombok.Builder
@lombok.Data
public class Event {
private String id;
private String categoryId;
private Collection<EventProperty> properties;
private EventStatus status;
private String createdBy;
private String createdDateTime;
private Boolean active;
private Integer rating;
public Event() {
}
public Event(String id, String categoryId, Collection<EventProperty> properties, EventStatus status, String createdBy, String createdDateTime, Boolean active, Integer rating) {
this.id = id;
this.categoryId = categoryId;
this.properties = properties;
this.status = status;
this.createdBy = createdBy;
this.createdDateTime = createdDateTime;
this.active = active;
this.rating = rating;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getCategoryId() {
return categoryId;
}
public void setCategoryId(String categoryId) {
this.categoryId = categoryId;
}
public Collection<EventProperty> getProperties() {
return properties;
}
public void setProperties(Collection<EventProperty> properties) {
this.properties = properties;
}
public EventStatus getStatus() {
return status;
}
public void setStatus(EventStatus status) {
this.status = status;
}
public String getCreatedBy() {
return createdBy;
}
public void setCreatedBy(String createdBy) {
this.createdBy = createdBy;
}
public String getCreatedDateTime() {
return createdDateTime;
}
public void setCreatedDateTime(String createdDateTime) {
this.createdDateTime = createdDateTime;
}
public Boolean getActive() {
return active;
}
public void setActive(Boolean active) {
this.active = active;
}
public Integer getRating() {
return rating;
}
public void setRating(Integer rating) {
this.rating = rating;
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册