1
2
3
4
5
6
7 package net.sourceforge.addam.ddlrun.runners;
8
9 import junit.framework.TestCase;
10
11 import java.util.Arrays;
12 import java.util.HashMap;
13 import java.util.List;
14 import java.util.Map;
15
16 import net.sourceforge.addam.ddlrun.filters.DifferenceFilter;
17 import net.sourceforge.addam.ddlrun.filters.Filter;
18 import net.sourceforge.addam.ddlrun.filters.SelectAllFilter;
19 import net.sourceforge.addam.ddlrun.filters.StartPointFilter;
20 import net.sourceforge.addam.ddlrun.runners.DeploymentRunner;
21 import net.sourceforge.addam.ddlrun.utils.MockReaderFactory;
22 import net.sourceforge.addam.ddlrun.utils.MockRunLogger;
23
24 public class DeploymentRunnerUTEST extends TestCase {
25
26 public void testInstallHappyPath() throws Exception {
27 Map contentMap = new HashMap();
28 contentMap.put("upgrade.drv", "group1\n--comment\ngroup2\ngroup3\n--comment");
29 contentMap.put("group1/master.drv", "--general comment\nscript11.sql\nscript12.sql");
30 contentMap.put("group2/master.drv", "script21.sql\nscript22.sql");
31 contentMap.put("group3/master.drv", "script31.sql\nscript32.sql");
32 MockReaderFactory readerFactory = new MockReaderFactory(contentMap);
33 Filter groupFilter = new SelectAllFilter();
34 Filter scriptFilter = new SelectAllFilter();
35 HashMap scriptRunnerMap = new HashMap();
36 MockRunner scriptRunner = new MockRunner();
37 MockRunLogger runLogger = new MockRunLogger();
38 scriptRunnerMap.put("sql", scriptRunner);
39 DeploymentRunner deploymentRunner = new DeploymentRunner(readerFactory, groupFilter, scriptFilter, scriptRunnerMap, null);
40 deploymentRunner.addRunLogger(runLogger);
41 deploymentRunner.run("upgrade.drv");
42 List logs = runLogger.getSuccessLogs();
43 assertEquals(6, logs.size());
44 assertEquals("script11.sql", logs.get(0));
45 assertEquals("script12.sql", logs.get(1));
46 assertEquals("script21.sql", logs.get(2));
47 assertEquals("script22.sql", logs.get(3));
48 assertEquals("script31.sql", logs.get(4));
49 assertEquals("script32.sql", logs.get(5));
50 }
51
52 public void testUpgradeHappyPath() throws Exception {
53 Map contentMap = new HashMap();
54 contentMap.put("upgrade.drv", "group1\ngroup2\ngroup3");
55 contentMap.put("group1/master.drv", "--general comment\nscript11.sql\nscript12.sql");
56 contentMap.put("group2/master.drv", "script21.sql\nscript22.sql");
57 contentMap.put("group3/master.drv", "script31.sql\nscript32.sql");
58 MockReaderFactory readerFactory = new MockReaderFactory(contentMap);
59 Filter groupFilter = new StartPointFilter("group2");
60 List scriptsAlreadyRun = Arrays.asList(new String[]{
61 "script21.sql",
62 });
63 Filter scriptFilter = new DifferenceFilter(scriptsAlreadyRun, true);
64 HashMap scriptRunnerMap = new HashMap();
65 MockRunner scriptRunner = new MockRunner();
66 MockRunLogger runLogger = new MockRunLogger();
67 scriptRunnerMap.put("sql", scriptRunner);
68 DeploymentRunner deploymentRunner = new DeploymentRunner(readerFactory, groupFilter, scriptFilter, scriptRunnerMap, null);
69 deploymentRunner.addRunLogger(runLogger);
70 deploymentRunner.run("upgrade.drv");
71 List logs = runLogger.getSuccessLogs();
72 assertEquals(3, logs.size());
73 assertEquals("script22.sql", logs.get(0));
74 assertEquals("script31.sql", logs.get(1));
75 assertEquals("script32.sql", logs.get(2));
76 }
77
78 }