Skip to content

Commit 06f2db2

Browse files
committed
Unit tests for MappingConfig
1 parent f2d5ab0 commit 06f2db2

File tree

2 files changed

+170
-26
lines changed

2 files changed

+170
-26
lines changed

src/main/java/com/kobylynskyi/graphql/codegen/model/MappingConfig.java

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.util.Map;
66
import java.util.Set;
77

8+
import freemarker.template.utility.CollectionUtils;
89
import lombok.Data;
910

1011
/**
@@ -60,34 +61,34 @@ public void putCustomTypeMappingIfAbsent(String from, String to) {
6061
}
6162
}
6263

63-
6464
@Override
6565
public void combine(MappingConfig source) {
66-
if (source != null) {
67-
if (this.customTypesMapping != null && source.customTypesMapping != null) {
68-
this.customTypesMapping.putAll(source.customTypesMapping);
69-
} else if (this.customTypesMapping == null && source.customTypesMapping != null) {
70-
this.customTypesMapping = source.customTypesMapping;
71-
}
72-
if (this.customAnnotationsMapping != null && source.customAnnotationsMapping != null) {
73-
this.customAnnotationsMapping.putAll(source.customAnnotationsMapping);
74-
} else if (this.customAnnotationsMapping == null && source.customAnnotationsMapping != null) {
75-
this.customAnnotationsMapping = source.customAnnotationsMapping;
76-
}
77-
if (this.modelAnnotations != null && source.modelAnnotations != null) {
78-
this.modelAnnotations.addAll(source.modelAnnotations);
79-
} else if (this.modelAnnotations == null && source.modelAnnotations != null) {
80-
this.modelAnnotations = source.modelAnnotations;
81-
}
82-
this.generateApis = source.generateApis != null ? source.generateApis : this.generateApis;
83-
this.packageName = source.packageName != null ? source.packageName : this.packageName;
84-
this.apiPackageName = source.apiPackageName != null ? source.apiPackageName : this.apiPackageName;
85-
this.modelPackageName = source.modelPackageName != null ? source.modelPackageName : this.modelPackageName;
86-
this.modelNamePrefix = source.modelNamePrefix != null ? source.modelNamePrefix : this.modelNamePrefix;
87-
this.modelNameSuffix = source.modelNameSuffix != null ? source.modelNameSuffix : this.modelNameSuffix;
88-
this.modelValidationAnnotation = source.modelValidationAnnotation != null ? source.modelValidationAnnotation : this.modelValidationAnnotation;
89-
this.generateEqualsAndHashCode = source.generateEqualsAndHashCode != null ? source.generateEqualsAndHashCode : this.generateEqualsAndHashCode;
90-
this.generateToString = source.generateToString != null ? source.generateToString : this.generateToString;
66+
if (source == null) {
67+
return;
68+
}
69+
if (this.customTypesMapping != null && source.customTypesMapping != null) {
70+
this.customTypesMapping.putAll(source.customTypesMapping);
71+
} else if (this.customTypesMapping == null) {
72+
this.customTypesMapping = source.customTypesMapping;
73+
}
74+
if (this.customAnnotationsMapping != null && source.customAnnotationsMapping != null) {
75+
this.customAnnotationsMapping.putAll(source.customAnnotationsMapping);
76+
} else if (this.customAnnotationsMapping == null) {
77+
this.customAnnotationsMapping = source.customAnnotationsMapping;
78+
}
79+
if (this.modelAnnotations != null && source.modelAnnotations != null) {
80+
this.modelAnnotations.addAll(source.modelAnnotations);
81+
} else if (this.modelAnnotations == null) {
82+
this.modelAnnotations = source.modelAnnotations;
9183
}
84+
this.generateApis = source.generateApis != null ? source.generateApis : this.generateApis;
85+
this.packageName = source.packageName != null ? source.packageName : this.packageName;
86+
this.apiPackageName = source.apiPackageName != null ? source.apiPackageName : this.apiPackageName;
87+
this.modelPackageName = source.modelPackageName != null ? source.modelPackageName : this.modelPackageName;
88+
this.modelNamePrefix = source.modelNamePrefix != null ? source.modelNamePrefix : this.modelNamePrefix;
89+
this.modelNameSuffix = source.modelNameSuffix != null ? source.modelNameSuffix : this.modelNameSuffix;
90+
this.modelValidationAnnotation = source.modelValidationAnnotation != null ? source.modelValidationAnnotation : this.modelValidationAnnotation;
91+
this.generateEqualsAndHashCode = source.generateEqualsAndHashCode != null ? source.generateEqualsAndHashCode : this.generateEqualsAndHashCode;
92+
this.generateToString = source.generateToString != null ? source.generateToString : this.generateToString;
9293
}
9394
}
Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
package com.kobylynskyi.graphql.codegen.model;
2+
3+
import static java.util.Arrays.asList;
4+
import static java.util.Collections.singletonMap;
5+
import static org.junit.jupiter.api.Assertions.assertEquals;
6+
import static org.junit.jupiter.api.Assertions.assertFalse;
7+
import static org.junit.jupiter.api.Assertions.assertTrue;
8+
9+
import java.util.AbstractMap;
10+
import java.util.Arrays;
11+
import java.util.HashMap;
12+
import java.util.HashSet;
13+
import java.util.Map;
14+
import java.util.stream.Collectors;
15+
16+
import org.junit.jupiter.api.Test;
17+
18+
@SuppressWarnings("unchecked")
19+
class MappingConfigTest {
20+
21+
@Test
22+
public void combineDefaultWithNull() {
23+
MappingConfig mappingConfig = buildEmptyMappingConfig();
24+
mappingConfig.combine(null);
25+
26+
assertEquals(buildEmptyMappingConfig(), mappingConfig);
27+
}
28+
29+
@Test
30+
void combineDefaultWithDefault() {
31+
MappingConfig mappingConfig = buildEmptyMappingConfig();
32+
mappingConfig.combine(buildEmptyMappingConfig());
33+
34+
assertEquals(buildEmptyMappingConfig(), mappingConfig);
35+
}
36+
37+
@Test
38+
void combineDefaultWithCustom() {
39+
MappingConfig mappingConfig = buildEmptyMappingConfig();
40+
mappingConfig.combine(buildMappingConfig());
41+
42+
assertEquals(singletonMap("1", "2"), mappingConfig.getCustomTypesMapping());
43+
assertEquals(singletonMap("3", "4"), mappingConfig.getCustomAnnotationsMapping());
44+
assertEquals(new HashSet<>(asList("5", "6")), mappingConfig.getModelAnnotations());
45+
assertEquals("ApiPackageName", mappingConfig.getApiPackageName());
46+
assertTrue(mappingConfig.getGenerateApis());
47+
assertTrue(mappingConfig.getGenerateEqualsAndHashCode());
48+
assertTrue(mappingConfig.getGenerateToString());
49+
assertEquals("ModelNamePrefix", mappingConfig.getModelNamePrefix());
50+
assertEquals("ModelNameSuffix", mappingConfig.getModelNameSuffix());
51+
assertEquals("ModelPackageName", mappingConfig.getModelPackageName());
52+
assertEquals("ModelValidationAnnotation", mappingConfig.getModelValidationAnnotation());
53+
assertEquals("PackageName", mappingConfig.getPackageName());
54+
}
55+
56+
@Test
57+
void combineCustomWithDefault() {
58+
MappingConfig mappingConfig = buildMappingConfig();
59+
mappingConfig.combine(buildEmptyMappingConfig());
60+
61+
assertEquals(singletonMap("1", "2"), mappingConfig.getCustomTypesMapping());
62+
assertEquals(singletonMap("3", "4"), mappingConfig.getCustomAnnotationsMapping());
63+
assertEquals(new HashSet<>(asList("5", "6")), mappingConfig.getModelAnnotations());
64+
assertEquals("ApiPackageName", mappingConfig.getApiPackageName());
65+
assertTrue(mappingConfig.getGenerateApis());
66+
assertTrue(mappingConfig.getGenerateEqualsAndHashCode());
67+
assertTrue(mappingConfig.getGenerateToString());
68+
assertEquals("ModelNamePrefix", mappingConfig.getModelNamePrefix());
69+
assertEquals("ModelNameSuffix", mappingConfig.getModelNameSuffix());
70+
assertEquals("ModelPackageName", mappingConfig.getModelPackageName());
71+
assertEquals("ModelValidationAnnotation", mappingConfig.getModelValidationAnnotation());
72+
assertEquals("PackageName", mappingConfig.getPackageName());
73+
}
74+
75+
@Test
76+
void combineCustomWithCustom() {
77+
MappingConfig mappingConfig = buildMappingConfig();
78+
mappingConfig.combine(buildMappingConfig2());
79+
80+
assertEquals(hashMap(new HashMap.SimpleEntry<>("1", "2"), new HashMap.SimpleEntry<>("11", "22")),
81+
mappingConfig.getCustomTypesMapping());
82+
assertEquals(hashMap(new HashMap.SimpleEntry<>("3", "4"), new HashMap.SimpleEntry<>("33", "44")),
83+
mappingConfig.getCustomAnnotationsMapping());
84+
assertEquals(new HashSet<>(asList("55", "5", "6", "66")), mappingConfig.getModelAnnotations());
85+
assertEquals("ApiPackageName2", mappingConfig.getApiPackageName());
86+
assertFalse(mappingConfig.getGenerateApis());
87+
assertFalse(mappingConfig.getGenerateEqualsAndHashCode());
88+
assertFalse(mappingConfig.getGenerateToString());
89+
assertEquals("ModelNamePrefix2", mappingConfig.getModelNamePrefix());
90+
assertEquals("ModelNameSuffix2", mappingConfig.getModelNameSuffix());
91+
assertEquals("ModelPackageName2", mappingConfig.getModelPackageName());
92+
assertEquals("ModelValidationAnnotation2", mappingConfig.getModelValidationAnnotation());
93+
assertEquals("PackageName2", mappingConfig.getPackageName());
94+
}
95+
96+
private static Map<String, String> hashMap(AbstractMap.SimpleEntry<String, String>... entries) {
97+
return Arrays.stream(entries).collect(
98+
Collectors.toMap(AbstractMap.SimpleEntry::getKey, AbstractMap.SimpleEntry::getValue, (a, b) -> b));
99+
}
100+
101+
private static MappingConfig buildMappingConfig() {
102+
MappingConfig config = new MappingConfig();
103+
config.setCustomTypesMapping(new HashMap<>(singletonMap("1", "2")));
104+
config.setCustomAnnotationsMapping(new HashMap<>(singletonMap("3", "4")));
105+
config.setModelAnnotations(new HashSet<>(asList("5", "6")));
106+
config.setApiPackageName("ApiPackageName");
107+
config.setGenerateApis(true);
108+
config.setGenerateEqualsAndHashCode(true);
109+
config.setGenerateToString(true);
110+
config.setModelNamePrefix("ModelNamePrefix");
111+
config.setModelNameSuffix("ModelNameSuffix");
112+
config.setModelPackageName("ModelPackageName");
113+
config.setModelValidationAnnotation("ModelValidationAnnotation");
114+
config.setPackageName("PackageName");
115+
return config;
116+
}
117+
118+
private static MappingConfig buildMappingConfig2() {
119+
MappingConfig config = new MappingConfig();
120+
config.setCustomTypesMapping(new HashMap<>(singletonMap("11", "22")));
121+
config.setCustomAnnotationsMapping(new HashMap<>(singletonMap("33", "44")));
122+
config.setModelAnnotations(new HashSet<>(asList("55", "66")));
123+
config.setApiPackageName("ApiPackageName2");
124+
config.setGenerateApis(false);
125+
config.setGenerateEqualsAndHashCode(false);
126+
config.setGenerateToString(false);
127+
config.setModelNamePrefix("ModelNamePrefix2");
128+
config.setModelNameSuffix("ModelNameSuffix2");
129+
config.setModelPackageName("ModelPackageName2");
130+
config.setModelValidationAnnotation("ModelValidationAnnotation2");
131+
config.setPackageName("PackageName2");
132+
return config;
133+
}
134+
135+
private static MappingConfig buildEmptyMappingConfig() {
136+
MappingConfig mappingConfig = new MappingConfig();
137+
mappingConfig.setModelAnnotations(null);
138+
mappingConfig.setCustomTypesMapping(null);
139+
mappingConfig.setCustomAnnotationsMapping(null);
140+
return mappingConfig;
141+
}
142+
143+
}

0 commit comments

Comments
 (0)