Skip to content

Commit ce227b2

Browse files
committedNov 13, 2013
Adding test for refreshing started modules when a new one is installed -
TRUNK-4134
1 parent 0d1b89a commit ce227b2

File tree

1 file changed

+51
-2
lines changed

1 file changed

+51
-2
lines changed
 

‎web/src/test/java/org/openmrs/web/test/WebModuleActivatorTest.java

+51-2
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,16 @@
1515

1616
import static org.junit.Assert.assertTrue;
1717

18+
import java.io.File;
19+
import java.net.URL;
20+
1821
import org.junit.Test;
1922
import org.openmrs.module.BaseModuleActivatorTest;
2023
import org.openmrs.module.Module;
2124
import org.openmrs.module.ModuleFactory;
2225
import org.openmrs.module.ModuleUtil;
2326
import org.openmrs.module.web.WebModuleUtil;
27+
import org.openmrs.util.OpenmrsClassLoader;
2428
import org.openmrs.web.Listener;
2529
import org.springframework.context.support.AbstractRefreshableApplicationContext;
2630
import org.springframework.test.annotation.NotTransactional;
@@ -96,7 +100,7 @@ public void shouldRefreshOtherModulesOnStartingStoppedModule() {
96100

97101
//When OpenMRS is running and you start a stopped module:
98102
// willRefreshContext() and contextRefreshed() methods get called for all started modules' activators (including the newly started module)
99-
// started() method gets called for ONLY the newly started module's activator
103+
// willStart() and started() methods get called for ONLY the newly started module's activator
100104

101105
//start module3 which was previously stopped
102106
ModuleFactory.startModule(module);
@@ -113,7 +117,10 @@ public void shouldRefreshOtherModulesOnStartingStoppedModule() {
113117
assertTrue(moduleTestData.getContextRefreshedCallCount(MODULE2_ID) == 1);
114118
assertTrue(moduleTestData.getContextRefreshedCallCount(MODULE3_ID) == 1);
115119

116-
//started() method gets called for ONLY the newly started module's activator
120+
//willStart() and started() methods get called for ONLY the newly started module's activator
121+
assertTrue(moduleTestData.getWillStartCallCount(MODULE1_ID) == 0);
122+
assertTrue(moduleTestData.getWillStartCallCount(MODULE2_ID) == 0);
123+
assertTrue(moduleTestData.getWillStartCallCount(MODULE3_ID) == 1);
117124
assertTrue(moduleTestData.getStartedCallCount(MODULE1_ID) == 0);
118125
assertTrue(moduleTestData.getStartedCallCount(MODULE2_ID) == 0);
119126
assertTrue(moduleTestData.getStartedCallCount(MODULE3_ID) == 1);
@@ -143,4 +150,46 @@ public void shouldRefreshContextForAllStartedModulesOnWebStartup() throws Throwa
143150
assertTrue(moduleTestData.getStartedCallCount(MODULE2_ID) == 1);
144151
assertTrue(moduleTestData.getStartedCallCount(MODULE3_ID) == 1);
145152
}
153+
154+
@Test
155+
@NotTransactional
156+
public void shouldRefreshOtherModulesOnInstallingNewModule() throws Exception {
157+
//first completely remove module3
158+
Module module = ModuleFactory.getModuleById(MODULE3_ID);
159+
ModuleFactory.stopModule(module);
160+
WebModuleUtil.stopModule(module, ((XmlWebApplicationContext) applicationContext).getServletContext());
161+
ModuleFactory.unloadModule(module);
162+
163+
init(); //to initialize for the condition below:
164+
165+
//When OpenMRS is running and you install a new module:
166+
// willRefreshContext() and contextRefreshed() methods get called for all started modules' activators (including the newly installed module)
167+
// willStart() and started() methods get called for ONLY the newly installed module's activator
168+
169+
//install a new module3
170+
URL url = OpenmrsClassLoader.getInstance().getResource("org/openmrs/module/include/test3-1.0-SNAPSHOT.omod");
171+
File file = new File(url.getFile());
172+
module = ModuleFactory.loadModule(file);
173+
ModuleFactory.startModule(module);
174+
WebModuleUtil.startModule(module, ((XmlWebApplicationContext) applicationContext).getServletContext(), false);
175+
176+
assertTrue(module.isStarted());
177+
assertTrue(ModuleFactory.isModuleStarted(module));
178+
179+
//module1, module2 and module3 should refresh
180+
assertTrue(moduleTestData.getWillRefreshContextCallCount(MODULE1_ID) == 1);
181+
assertTrue(moduleTestData.getWillRefreshContextCallCount(MODULE2_ID) == 1);
182+
assertTrue(moduleTestData.getWillRefreshContextCallCount(MODULE3_ID) == 1);
183+
assertTrue(moduleTestData.getContextRefreshedCallCount(MODULE1_ID) == 1);
184+
assertTrue(moduleTestData.getContextRefreshedCallCount(MODULE2_ID) == 1);
185+
assertTrue(moduleTestData.getContextRefreshedCallCount(MODULE3_ID) == 1);
186+
187+
//willStart() and started() methods get called for ONLY the newly installed module's activator
188+
assertTrue(moduleTestData.getWillStartCallCount(MODULE1_ID) == 0);
189+
assertTrue(moduleTestData.getWillStartCallCount(MODULE2_ID) == 0);
190+
assertTrue(moduleTestData.getWillStartCallCount(MODULE3_ID) == 1);
191+
assertTrue(moduleTestData.getStartedCallCount(MODULE1_ID) == 0);
192+
assertTrue(moduleTestData.getStartedCallCount(MODULE2_ID) == 0);
193+
assertTrue(moduleTestData.getStartedCallCount(MODULE3_ID) == 1);
194+
}
146195
}

0 commit comments

Comments
 (0)
Please sign in to comment.