Skip to content

Commit 98ba9e1

Browse files
matthewhillierReidWeb
authored andcommitted
Implemented Spring Testing to re-instate the DB checking. GathererControllerIT is now a full Integration Test end to end.
1 parent aa58a00 commit 98ba9e1

File tree

4 files changed

+99
-122
lines changed

4 files changed

+99
-122
lines changed

pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,11 @@
141141
</exclusion>
142142
</exclusions>
143143
</dependency>
144+
<dependency>
145+
<groupId>org.springframework.boot</groupId>
146+
<artifactId>spring-boot-starter-test</artifactId>
147+
<scope>test</scope>
148+
</dependency>
144149
<dependency>
145150
<groupId>org.springframework.boot</groupId>
146151
<artifactId>spring-boot-starter-log4j</artifactId>

src/main/java/com/ffxivcensus/gatherer/GathererController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
public class GathererController {
2525

2626
private static final Logger LOG = LoggerFactory.getLogger(GathererController.class);
27-
private final ApplicationConfig appConfig;
27+
private ApplicationConfig appConfig;
2828
private final GathererFactory gathererFactory;
2929
/**
3030
* List of playable realms (used when splitting tables).

src/main/java/com/ffxivcensus/gatherer/config/ConfigurationBuilder.java

Lines changed: 55 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
* @author matthew.hillier
3838
*/
3939
public class ConfigurationBuilder {
40-
private static final Logger LOG = LoggerFactory.getLogger(ConfigurationBuilder.class);
40+
private static final Logger LOG = LoggerFactory.getLogger(ConfigurationBuilder.class);
4141
private ApplicationConfig configuration;
4242

4343
/**
@@ -116,60 +116,61 @@ public ConfigurationBuilder loadXMLConfiguration() throws ParserConfigurationExc
116116
* @throws ParseException May throw {@link ParseException} when reading the Command Line arguments
117117
*/
118118
public ConfigurationBuilder loadCommandLineConfiguration(Options options, String[] args) throws ParseException {
119-
CommandLineParser parser = new DefaultParser();
120-
CommandLine cmd = parser.parse(options, args);
121-
122-
// Start id flag
123-
if(cmd.hasOption("s")) {
124-
configuration.setStartId(Integer.parseInt(cmd.getOptionValue("s")));
125-
}
126-
127-
// Finish id flag
128-
if(cmd.hasOption("f")) {
129-
configuration.setEndId(Integer.parseInt(cmd.getOptionValue("f")));
130-
}
131-
132-
// Store minions flag value
133-
configuration.setStoreMinions(cmd.hasOption("P"));
134-
135-
// Store mounts flag value
136-
configuration.setStoreMounts(cmd.hasOption("m"));
137-
138-
// Store progression
139-
configuration.setStoreProgression(!cmd.hasOption("b"));
140-
141-
// Store whether player is active
142-
configuration.setStorePlayerActive(!cmd.hasOption("a"));
143-
144-
// Store player active date
145-
configuration.setStoreActiveDate(!cmd.hasOption("D"));
146-
147-
// Database URL
148-
if(cmd.hasOption("d") && cmd.hasOption("U")) {
149-
configuration.setDbUrl(cmd.getOptionValue("U"));
119+
if(args != null) {
120+
CommandLineParser parser = new DefaultParser();
121+
CommandLine cmd = parser.parse(options, args);
122+
123+
// Start id flag
124+
if(cmd.hasOption("s")) {
125+
configuration.setStartId(Integer.parseInt(cmd.getOptionValue("s")));
126+
}
127+
128+
// Finish id flag
129+
if(cmd.hasOption("f")) {
130+
configuration.setEndId(Integer.parseInt(cmd.getOptionValue("f")));
131+
}
132+
133+
// Store minions flag value
134+
configuration.setStoreMinions(cmd.hasOption("P"));
135+
136+
// Store mounts flag value
137+
configuration.setStoreMounts(cmd.hasOption("m"));
138+
139+
// Store progression
140+
configuration.setStoreProgression(!cmd.hasOption("b"));
141+
142+
// Store whether player is active
143+
configuration.setStorePlayerActive(!cmd.hasOption("a"));
144+
145+
// Store player active date
146+
configuration.setStoreActiveDate(!cmd.hasOption("D"));
147+
148+
// Database URL
149+
if(cmd.hasOption("d") && cmd.hasOption("U")) {
150+
configuration.setDbUrl(cmd.getOptionValue("U"));
151+
}
152+
// Database Name
153+
if(cmd.hasOption("d")) {
154+
configuration.setDbName(cmd.getOptionValue("d"));
155+
}
156+
157+
// Database user
158+
if(cmd.hasOption("u")) {
159+
configuration.setDbUser(cmd.getOptionValue("u"));
160+
}
161+
162+
// Database password
163+
if(cmd.hasOption("p")) {
164+
configuration.setDbPassword(cmd.getOptionValue("p"));
165+
}
166+
167+
configuration.setDbIgnoreSSLWarn(cmd.hasOption("i"));
168+
169+
// Program threads
170+
if(cmd.hasOption("t")) {
171+
configuration.setThreadLimit(Integer.parseInt(cmd.getOptionValue("t")));
172+
}
150173
}
151-
// Database Name
152-
if(cmd.hasOption("d")) {
153-
configuration.setDbName(cmd.getOptionValue("d"));
154-
}
155-
156-
// Database user
157-
if(cmd.hasOption("u")) {
158-
configuration.setDbUser(cmd.getOptionValue("u"));
159-
}
160-
161-
// Database password
162-
if(cmd.hasOption("p")) {
163-
configuration.setDbPassword(cmd.getOptionValue("p"));
164-
}
165-
166-
configuration.setDbIgnoreSSLWarn(cmd.hasOption("i"));
167-
168-
// Program threads
169-
if(cmd.hasOption("t")) {
170-
configuration.setThreadLimit(Integer.parseInt(cmd.getOptionValue("t")));
171-
}
172-
173174
return new ConfigurationBuilder(configuration);
174175
}
175176

src/test/java/com/ffxivcensus/gatherer/GathererControllerIT.java

Lines changed: 38 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,8 @@
22

33
import static org.junit.Assert.assertFalse;
44
import static org.junit.Assert.assertTrue;
5-
import static org.mockito.Mockito.verify;
6-
import static org.mockito.Mockito.when;
7-
85
import java.io.IOException;
96
import java.sql.SQLException;
10-
import java.util.ArrayList;
117
import java.util.List;
128

139
import javax.sql.DataSource;
@@ -18,13 +14,9 @@
1814
import org.junit.BeforeClass;
1915
import org.junit.Test;
2016
import org.junit.runner.RunWith;
21-
import org.mockito.Matchers;
22-
import org.mockito.Mock;
23-
import org.mockito.Mockito;
24-
import org.mockito.invocation.InvocationOnMock;
25-
import org.mockito.junit.MockitoJUnitRunner;
26-
import org.mockito.stubbing.Answer;
27-
import org.springframework.jdbc.core.JdbcTemplate;
17+
import org.springframework.beans.factory.annotation.Autowired;
18+
import org.springframework.boot.test.context.SpringBootTest;
19+
import org.springframework.test.context.junit4.SpringRunner;
2820
import org.xml.sax.SAXException;
2921

3022
import com.ffxivcensus.gatherer.config.ApplicationConfig;
@@ -52,15 +44,17 @@
5244
* @see com.ffxivcensus.gatherer.player.PlayerBuilderIT
5345
* @since v1.0
5446
*/
55-
@RunWith(MockitoJUnitRunner.class)
47+
@RunWith(SpringRunner.class)
48+
@SpringBootTest
5649
public class GathererControllerIT {
5750

51+
@Autowired
5852
private ApplicationConfig config;
5953
private static DataSource dataSource;
60-
@Mock
61-
private GathererFactory mockFactory;
62-
@Mock
63-
private JdbcTemplate jdbcTemplate;
54+
@Autowired
55+
private GathererController gathererController;
56+
@Autowired
57+
private PlayerBeanDAO dao;
6458

6559
@BeforeClass
6660
public static void setUpClass() throws ParserConfigurationException, IOException, SAXException, SQLException, LiquibaseException {
@@ -86,17 +80,6 @@ public static void setUpClass() throws ParserConfigurationException, IOException
8680

8781
@Before
8882
public void setUp() throws ParserConfigurationException, IOException, SAXException {
89-
config = ConfigurationBuilder.createBuilder().loadXMLConfiguration().getConfiguration();
90-
when(mockFactory.createGatherer()).thenAnswer(new Answer<Gatherer>() {
91-
92-
@Override
93-
public Gatherer answer(InvocationOnMock invocation) throws Throwable {
94-
Gatherer gatherer = new Gatherer();
95-
gatherer.setPlayerBeanDAO(new PlayerBeanDAO(config, jdbcTemplate));
96-
return gatherer;
97-
}
98-
99-
});
10083
}
10184

10285
@AfterClass
@@ -117,26 +100,22 @@ public void testRunBasic() throws Exception {
117100
config.setEndId(11887010);
118101
config.setThreadLimit(40);
119102

120-
GathererController gathererController = new GathererController(config, mockFactory);
121-
122103
gathererController.run();
123104

124-
verify(jdbcTemplate, Mockito.atLeastOnce()).update(Mockito.anyString(), Mockito.<Object>any());
125-
126-
// List<Integer> addedIDs = new ArrayList<Integer>();
127-
//
128-
// // Test for IDs we know exist
129-
// assertTrue(addedIDs.contains(11886902));
130-
// assertTrue(addedIDs.contains(11886903));
131-
// assertTrue(addedIDs.contains(11886990));
132-
// assertTrue(addedIDs.contains(11887010));
133-
//
134-
// // Test that gatherer has not written records that don't exist
135-
// assertFalse(addedIDs.contains(11886909));
136-
//
137-
// // Test that gatherer has not 'overrun'
138-
// assertFalse(addedIDs.contains(11887011));
139-
// assertFalse(addedIDs.contains(11886901));
105+
List<Integer> addedIDs = dao.getAdded(11886902, 11887010);
106+
107+
// Test for IDs we know exist
108+
assertTrue(addedIDs.contains(11886902));
109+
assertTrue(addedIDs.contains(11886903));
110+
assertTrue(addedIDs.contains(11886990));
111+
assertTrue(addedIDs.contains(11887010));
112+
113+
// Test that gatherer has not written records that don't exist
114+
assertFalse(addedIDs.contains(11886909));
115+
116+
// Test that gatherer has not 'overrun'
117+
assertFalse(addedIDs.contains(11887011));
118+
assertFalse(addedIDs.contains(11886901));
140119
}
141120

142121
/**
@@ -146,11 +125,7 @@ public void testRunBasic() throws Exception {
146125
public void testRunBasicInvalidParams() throws Exception {
147126
config.setStartId(11887010);
148127

149-
GathererController gathererController = new GathererController(config, mockFactory);
150-
151128
gathererController.run();
152-
153-
verify(jdbcTemplate, Mockito.never()).update(Mockito.anyString(), Mockito.<Object>any());
154129
}
155130

156131
/**
@@ -165,25 +140,21 @@ public void testRunAdvancedOptions() throws Exception {
165140
config.setStoreMounts(true);
166141
config.setStoreProgression(true);
167142

168-
GathererController gathererController = new GathererController(config, mockFactory);
169-
170143
gathererController.run();
171144

172-
verify(jdbcTemplate, Mockito.atLeastOnce()).update(Mockito.anyString(), Mockito.<Object>any());
173-
174-
// List<Integer> addedIDs = new ArrayList<Integer>();
175-
//
176-
// // Test for IDs we know exist
177-
// assertTrue(addedIDs.contains(config.getStartId()));
178-
// assertTrue(addedIDs.contains(config.getEndId()));
179-
// assertTrue(addedIDs.contains(1557362));
180-
// assertTrue(addedIDs.contains(1557495));
181-
//
182-
// // Test that gatherer has not written records that don't exist
183-
// assertFalse(addedIDs.contains(1558259));
184-
//
185-
// // Test that gatherer has not 'overrun'
186-
// assertFalse(addedIDs.contains(config.getStartId() - 1));
187-
// assertFalse(addedIDs.contains(config.getEndId() + 1));
145+
List<Integer> addedIDs = dao.getAdded(1557260, 1558260);
146+
147+
// Test for IDs we know exist
148+
assertTrue(addedIDs.contains(config.getStartId()));
149+
assertTrue(addedIDs.contains(config.getEndId()));
150+
assertTrue(addedIDs.contains(1557362));
151+
assertTrue(addedIDs.contains(1557495));
152+
153+
// Test that gatherer has not written records that don't exist
154+
assertFalse(addedIDs.contains(1558259));
155+
156+
// Test that gatherer has not 'overrun'
157+
assertFalse(addedIDs.contains(config.getStartId() - 1));
158+
assertFalse(addedIDs.contains(config.getEndId() + 1));
188159
}
189160
}

0 commit comments

Comments
 (0)