@@ -84,4 +84,37 @@ public void shouldRefreshOtherModulesOnStoppingModule() {
84
84
assertTrue (moduleTestData .getContextRefreshedCallCount (MODULE1_ID ) == 1 );
85
85
assertTrue (moduleTestData .getContextRefreshedCallCount (MODULE2_ID ) == 1 );
86
86
}
87
+
88
+ @ Test
89
+ @ NotTransactional
90
+ public void shouldRefreshOtherModulesOnStartingStoppedModule () {
91
+ Module module = ModuleFactory .getModuleById (MODULE3_ID );
92
+ ModuleFactory .stopModule (module );
93
+
Has conversations. Original line has conversations.
94
+ init (); //to initialize for the condition below:
95
+
96
+ //When OpenMRS is running and you start a stopped module:
97
+ // willRefreshContext() and contextRefreshed() methods get called for all started modules' activators (including the newly started module)
98
+ // started() method gets called for ONLY the newly started module's activator
99
+
100
+ //start module3 which was previously stopped
101
+ ModuleFactory .startModule (module );
102
+ WebModuleUtil .startModule (module , ((XmlWebApplicationContext ) applicationContext ).getServletContext (), false );
103
+
104
+ assertTrue (module .isStarted ());
105
+ assertTrue (ModuleFactory .isModuleStarted (module ));
106
+
107
+ //module1, module2 and module3 should refresh
108
+ assertTrue (moduleTestData .getWillRefreshContextCallCount (MODULE1_ID ) == 1 );
109
+ assertTrue (moduleTestData .getWillRefreshContextCallCount (MODULE2_ID ) == 1 );
110
+ assertTrue (moduleTestData .getWillRefreshContextCallCount (MODULE3_ID ) == 1 );
111
+ assertTrue (moduleTestData .getContextRefreshedCallCount (MODULE1_ID ) == 1 );
112
+ assertTrue (moduleTestData .getContextRefreshedCallCount (MODULE2_ID ) == 1 );
113
+ assertTrue (moduleTestData .getContextRefreshedCallCount (MODULE3_ID ) == 1 );
114
+
115
+ //started() method gets called for ONLY the newly started module's activator
116
+ assertTrue (moduleTestData .getStartedCallCount (MODULE1_ID ) == 0 );
117
+ assertTrue (moduleTestData .getStartedCallCount (MODULE2_ID ) == 0 );
118
+ assertTrue (moduleTestData .getStartedCallCount (MODULE3_ID ) == 1 );
119
+ }
87
120
}