Skip to content

Commit dceda9d

Browse files
committed
Tests enhanced
1 parent effd301 commit dceda9d

File tree

5 files changed

+96
-52
lines changed

5 files changed

+96
-52
lines changed

src/main/java/de/kreth/property2java/Generator.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,18 @@ public class Generator {
3131
private final Template template;
3232

3333
public Generator(Configuration config) {
34+
this(config, createTemplate(config));
35+
}
36+
37+
public Generator(Configuration config, Template template) {
38+
super();
3439
this.config = config;
40+
this.template = template;
41+
}
42+
43+
private static Template createTemplate(Configuration config) {
3544
try {
36-
template = FreemarkerConfig.INSTANCE.getTemplate(config.getFormat());
45+
return FreemarkerConfig.INSTANCE.getTemplate(config.getFormat());
3746
} catch (IOException e) {
3847
throw new IllegalStateException("Unable to load freemarker template", e);
3948
}

src/test/java/de/kreth/property2java/ConfigurationTest.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,16 @@
1010
import java.io.IOException;
1111
import java.io.Writer;
1212

13-
import org.junit.jupiter.api.BeforeEach;
1413
import org.junit.jupiter.api.Test;
15-
import org.mockito.Mockito;
14+
import org.junit.jupiter.api.extension.ExtendWith;
15+
import org.mockito.Mock;
16+
import org.mockito.junit.jupiter.MockitoExtension;
1617

18+
@ExtendWith(MockitoExtension.class)
1719
class ConfigurationTest {
1820

19-
private TestImplConfig config;
20-
21-
@BeforeEach
22-
void initConfig() {
23-
config = Mockito.spy(TestImplConfig.class);
24-
}
21+
@Mock
22+
private Configuration config;
2523

2624
@Test
2725
void defaultWriterIsFileWriter() throws IOException {

src/test/java/de/kreth/property2java/GeneratorTests.java

Lines changed: 67 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package de.kreth.property2java;
22

33
import static de.kreth.property2java.TestPropertiesSource.testProperties;
4+
import static org.assertj.core.api.Assertions.assertThat;
45
import static org.hamcrest.MatcherAssert.assertThat;
6+
import static org.junit.Assert.assertFalse;
57
import static org.junit.jupiter.api.Assertions.assertEquals;
68
import static org.junit.jupiter.api.Assertions.assertNotNull;
79
import static org.junit.jupiter.api.Assertions.assertTrue;
10+
import static org.mockito.ArgumentMatchers.any;
811
import static org.mockito.ArgumentMatchers.anyString;
912
import static org.mockito.Mockito.mock;
1013
import static org.mockito.Mockito.never;
@@ -17,6 +20,7 @@
1720
import java.io.StringWriter;
1821
import java.io.Writer;
1922
import java.util.Arrays;
23+
import java.util.EnumSet;
2024
import java.util.HashMap;
2125
import java.util.List;
2226
import java.util.Map;
@@ -27,35 +31,89 @@
2731
import org.hamcrest.Matchers;
2832
import org.junit.jupiter.api.BeforeEach;
2933
import org.junit.jupiter.api.Test;
30-
import org.mockito.Mockito;
31-
34+
import org.junit.jupiter.api.extension.ExtendWith;
35+
import org.mockito.ArgumentCaptor;
36+
import org.mockito.Mock;
37+
import org.mockito.junit.jupiter.MockitoExtension;
38+
import org.mockito.junit.jupiter.MockitoSettings;
39+
import org.mockito.quality.Strictness;
40+
41+
import freemarker.template.Template;
42+
import freemarker.template.TemplateException;
43+
44+
@ExtendWith(MockitoExtension.class)
45+
@MockitoSettings(strictness = Strictness.LENIENT)
3246
class GeneratorTests {
3347

3448
private String path = "application.properties";
3549

50+
@Mock
3651
private Configuration config;
3752

38-
private Generator generator;
39-
4053
@BeforeEach
4154
void setUp() throws Exception {
4255
Map<String, Reader> input = new HashMap<>();
4356
input.put(path, testProperties());
4457

45-
config = Mockito.spy(TestImplConfig.class);
46-
4758
when(config.getRootPath()).thenReturn(new File(".").toPath());
4859
when(config.getFormat()).thenReturn(Format.WithUnaryOperatorParameter);
4960
when(config.getInput()).thenReturn(input);
5061
when(config.mapFilenameToClassName(anyString())).thenCallRealMethod();
5162
when(config.outputCharset()).thenCallRealMethod();
63+
when(config.getOptions()).thenReturn(EnumSet.noneOf(GeneratorOptions.class));
64+
65+
}
66+
67+
@Test
68+
void testAllOptionsConfiguration() throws IOException, GeneratorException, TemplateException {
69+
70+
Template template = mock(Template.class);
71+
Generator generator = new Generator(config, template);
72+
when(config.getOptions()).thenReturn(EnumSet.allOf(GeneratorOptions.class));
73+
74+
StringWriter out = new StringWriter();
75+
when(config.outWriter(anyString())).thenReturn(out);
5276

53-
generator = new Generator(config);
77+
@SuppressWarnings("unchecked")
78+
ArgumentCaptor<Map<String, Object>> rootCaptior = ArgumentCaptor.forClass(Map.class);
79+
generator.start();
80+
verify(template).process(rootCaptior.capture(), any(Writer.class));
81+
Map<String, Object> root = rootCaptior.getValue();
82+
@SuppressWarnings("unchecked")
83+
EnumSet<GeneratorOptions> options = (EnumSet<GeneratorOptions>) root.get("options");
84+
assertThat(options).contains(GeneratorOptions.WithMessageFormatter, GeneratorOptions.WithSubstitutors);
85+
86+
@SuppressWarnings("unchecked")
87+
List<String> imports = (List<String>) root.get("imports");
88+
assertThat(imports).contains("java.text.MessageFormat");
5489
}
5590

91+
@Test
92+
void testWithSubstitutorsNoImportsConfiguration() throws IOException, GeneratorException, TemplateException {
93+
94+
Template template = mock(Template.class);
95+
Generator generator = new Generator(config, template);
96+
when(config.getOptions()).thenReturn(EnumSet.of(GeneratorOptions.WithSubstitutors));
97+
98+
StringWriter out = new StringWriter();
99+
when(config.outWriter(anyString())).thenReturn(out);
100+
101+
@SuppressWarnings("unchecked")
102+
ArgumentCaptor<Map<String, Object>> rootCaptior = ArgumentCaptor.forClass(Map.class);
103+
generator.start();
104+
verify(template).process(rootCaptior.capture(), any(Writer.class));
105+
Map<String, Object> root = rootCaptior.getValue();
106+
@SuppressWarnings("unchecked")
107+
EnumSet<GeneratorOptions> options = (EnumSet<GeneratorOptions>) root.get("options");
108+
assertThat(options).contains(GeneratorOptions.WithSubstitutors);
109+
110+
assertFalse(root.containsKey("imports"));
111+
}
112+
56113
@Test
57114
void testClassDefinition() throws IOException, GeneratorException {
58115

116+
Generator generator = new Generator(config);
59117
when(config.getPackage()).thenReturn("de.kreth.property2java");
60118
when(config.mapFilenameToClassName(anyString())).thenCallRealMethod();
61119

@@ -102,6 +160,7 @@ void testClassDefinition() throws IOException, GeneratorException {
102160
@Test
103161
void testOneInputGeneratesOneOutput() throws IOException, GeneratorException {
104162

163+
Generator generator = new Generator(config);
105164
Writer out = mock(Writer.class);
106165
Writer nonOut = mock(Writer.class);
107166
when(config.outWriter(anyString())).thenReturn(out, nonOut);
@@ -114,6 +173,7 @@ void testOneInputGeneratesOneOutput() throws IOException, GeneratorException {
114173
@Test
115174
void testKeys() throws IOException, GeneratorException {
116175

176+
Generator generator = new Generator(config);
117177
StringWriter out = new StringWriter();
118178
when(config.outWriter(anyString())).thenReturn(out);
119179
generator.start();

src/test/java/de/kreth/property2java/GeneratorWithInnerPropertiesTest.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package de.kreth.property2java;
22

3+
import static de.kreth.property2java.TestPropertiesSource.testProperties;
34
import static org.hamcrest.MatcherAssert.assertThat;
45
import static org.junit.jupiter.api.Assertions.assertEquals;
56
import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -16,43 +17,46 @@
1617
import java.io.StringWriter;
1718
import java.io.Writer;
1819
import java.util.Arrays;
20+
import java.util.EnumSet;
1921
import java.util.HashMap;
2022
import java.util.List;
2123
import java.util.Map;
2224
import java.util.Optional;
23-
import java.util.Properties;
2425
import java.util.StringTokenizer;
2526
import java.util.stream.Collectors;
2627

27-
import static de.kreth.property2java.TestPropertiesSource.testProperties;
28-
2928
import org.hamcrest.Matchers;
3029
import org.junit.jupiter.api.BeforeEach;
3130
import org.junit.jupiter.api.Test;
32-
import org.mockito.Mockito;
33-
31+
import org.junit.jupiter.api.extension.ExtendWith;
32+
import org.mockito.Mock;
33+
import org.mockito.junit.jupiter.MockitoExtension;
34+
import org.mockito.junit.jupiter.MockitoSettings;
35+
import org.mockito.quality.Strictness;
36+
37+
@ExtendWith(MockitoExtension.class)
38+
@MockitoSettings(strictness = Strictness.LENIENT)
3439
public class GeneratorWithInnerPropertiesTest {
3540

3641
private String path = "application.properties";
3742

43+
@Mock
3844
private Configuration config;
39-
4045
private Generator generator;
4146

4247
@BeforeEach
4348
void setUp() throws Exception {
4449
Map<String, Reader> input = new HashMap<>();
4550
input.put(path, testProperties());
4651

47-
config = Mockito.spy(TestImplConfig.class);
48-
4952
when(config.getRootPath()).thenReturn(new File(".").toPath());
5053
when(config.getFormat()).thenReturn(Format.WithInnerPropertyLoader);
5154
when(config.getInput()).thenReturn(input);
5255
when(config.mapFilenameToClassName(anyString())).thenCallRealMethod();
5356
when(config.outputCharset()).thenCallRealMethod();
57+
when(config.getOptions()).thenReturn(EnumSet.noneOf(GeneratorOptions.class));
5458

55-
generator = new Generator(config);
59+
this.generator = new Generator(config);
5660
}
5761

5862

src/test/java/de/kreth/property2java/TestImplConfig.java

Lines changed: 0 additions & 27 deletions
This file was deleted.

0 commit comments

Comments
 (0)