1   //
2   // Copyright (c) 2004, International Decision Systems
3   // all rights reserved
4   /*
5    * Copyright (c) 2005 Your Corporation. All Rights Reserved.
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(); // not used, but needed for constructor
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  }