View Javadoc

1   /*
2    * Copyright 2005-2008 The Kuali Foundation
3    * 
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    * 
8    * http://www.opensource.org/licenses/ecl2.php
9    * 
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.rice.kns.service;
17  
18  import org.junit.Test;
19  import org.kuali.rice.kns.rule.event.ApproveDocumentEvent;
20  import org.kuali.test.KNSTestCase;
21  
22  /**
23   * This class tests the KualiRuleService.
24   * <p>
25   * Testing applyRules( event ) has proven to be too strongly dependent on an actual document type, and business rule, and XML
26   * document which binds them together, to be really useful. Instead, we'll test each of the applyRules( rule, event ) methods which
27   * are called by applyRules( event ), since they do the actual work involved in applying a rule.
28   */
29  public class KualiRuleServiceTest extends KNSTestCase {
30      private static boolean entriesAdded = false;
31      private static KualiRuleService kualiRuleService;
32  
33      @Override
34      public void setUp() throws Exception {
35          super.setUp();
36  
37          if (!entriesAdded) {
38              entriesAdded = true;
39              kualiRuleService = KNSServiceLocator.getKualiRuleService();
40          }
41      }
42  
43      @Test public void testApplyRules_approveDocument_nullEvent() {
44          boolean failedAsExpected = false;
45  
46          ApproveDocumentEvent event = null;
47          try {
48              kualiRuleService.applyRules(event);
49          }
50          catch (IllegalArgumentException e) {
51              failedAsExpected = true;
52          }
53  
54          assertTrue(failedAsExpected);
55      }
56  
57      @Test public void testApplyRules_approveDocument_nullDocument() {
58          boolean failedAsExpected = false;
59  
60          try {
61              ApproveDocumentEvent event = new ApproveDocumentEvent(null);
62  
63              kualiRuleService.applyRules(event);
64          }
65          catch (RuntimeException e) {
66              failedAsExpected = true;
67          }
68  
69          assertTrue(failedAsExpected);
70      }
71  
72  //    private static final String NONE = "none";
73  //    private static final String ROUTE_DOCUMENT = "routeDoc";
74  //    private static final String APPROVE_DOCUMENT = "approveDoc";
75  //    private static final String SAVE_DOCUMENT = "saveDoc";
76  //    private static final String ADD_LINE = "addLine";
77  //    private static final String DELETE_LINE = "deleteLine";
78  //    private static final String UPDATE_LINE = "updateLine";
79  //    private static final String REVIEW_LINE = "reviewLine";
80  //
81  //    @Test public void testApplyRules_approveDocument_validRule_validDocument() {
82  //        RuleMockDocument d = new RuleMockDocument();
83  //        ApproveDocumentEvent event = new ApproveDocumentEvent(d);
84  //
85  //
86  //        assertFalse(d.isProcessed());
87  //        assertEquals(NONE, d.getEventType());
88  //
89  //        boolean success = kualiRuleService.applyRules(event);
90  //        assertTrue(success);
91  //
92  //        assertTrue(d.isProcessed());
93  //        assertEquals(ROUTE_DOCUMENT, d.getPrevEventType());
94  //        assertEquals(APPROVE_DOCUMENT, d.getEventType());
95  //    }
96  //
97  //    @Test public void testApplyRules_approveDocument_validRule_validTransactionalDocument_noAccountingLines() {
98  //        RuleMockDocument t = new RuleMockDocument();
99  //        ApproveDocumentEvent event = new ApproveDocumentEvent(t);
100 //
101 //
102 //        assertFalse(t.isProcessed());
103 //        assertEquals(NONE, t.getEventType());
104 //
105 //        boolean success = kualiRuleService.applyRules(event);
106 //        assertTrue(success);
107 //
108 //        assertTrue(t.isProcessed());
109 //        assertEquals(ROUTE_DOCUMENT, t.getPrevEventType());
110 //        assertEquals(APPROVE_DOCUMENT, t.getEventType());
111 //    }
112 //
113 //    @Test public void testApplyRules_routeDocument_validRule_validDocument() {
114 //        RuleMockDocument d = new RuleMockDocument();
115 //        RouteDocumentEvent event = new RouteDocumentEvent(d);
116 //
117 //
118 //        assertFalse(d.isProcessed());
119 //        assertEquals(NONE, d.getEventType());
120 //
121 //        boolean success = kualiRuleService.applyRules(event);
122 //        assertTrue(success);
123 //
124 //        assertTrue(d.isProcessed());
125 //        assertEquals(SAVE_DOCUMENT, d.getPrevEventType());
126 //        assertEquals(ROUTE_DOCUMENT, d.getEventType());
127 //    }
128 //
129 //    @Test public void testApplyRules_routeDocument_validRule_validTransactionalDocument_noAccountingLines() {
130 //        RuleMockDocument t = new RuleMockDocument();
131 //        RouteDocumentEvent event = new RouteDocumentEvent(t);
132 //
133 //
134 //        assertFalse(t.isProcessed());
135 //        assertEquals(NONE, t.getEventType());
136 //
137 //        boolean success = kualiRuleService.applyRules(event);
138 //        assertTrue(success);
139 //
140 //        assertTrue(t.isProcessed());
141 //        assertEquals(SAVE_DOCUMENT, t.getPrevEventType());
142 //        assertEquals(ROUTE_DOCUMENT, t.getEventType());
143 //    }
144 //
145 //    @Test public void testApplyRules_routeDocument_validRule_validTransactionalDocument_someAccountingLines() throws Exception {
146 //        RuleMockDocument t = new RuleMockDocument();
147 //        t.addSourceAccountingLine(buildSourceLine("1"));
148 //
149 //        RouteDocumentEvent event = new RouteDocumentEvent(t);
150 //
151 //
152 //        assertFalse(t.isProcessed());
153 //        assertEquals(NONE, t.getEventType());
154 //
155 //        boolean success = kualiRuleService.applyRules(event);
156 //        assertTrue(success);
157 //
158 //        assertTrue(t.isProcessed());
159 //        assertEquals(SAVE_DOCUMENT, t.getPrevEventType());
160 //        assertEquals(ROUTE_DOCUMENT, t.getEventType());
161 //    }
162 //
163 //    @Test public void testApplyRules_saveDocument_validRule_validDocument() {
164 //        RuleMockDocument d = new RuleMockDocument();
165 //        SaveDocumentEvent event = new SaveDocumentEvent(d);
166 //
167 //
168 //        assertFalse(d.isProcessed());
169 //        assertEquals(NONE, d.getEventType());
170 //
171 //        boolean success = kualiRuleService.applyRules(event);
172 //        assertTrue(success);
173 //
174 //        assertTrue(d.isProcessed());
175 //        assertEquals(NONE, d.getPrevEventType());
176 //        assertEquals(SAVE_DOCUMENT, d.getEventType());
177 //    }
178 //
179 //    @Test public void testApplyRules_saveDocument_validRule_validTransactionalDocument_noAccountingLines() {
180 //        RuleMockDocument t = new RuleMockDocument();
181 //        SaveDocumentEvent event = new SaveDocumentEvent(t);
182 //
183 //
184 //        assertFalse(t.isProcessed());
185 //        assertEquals(NONE, t.getEventType());
186 //
187 //        boolean success = kualiRuleService.applyRules(event);
188 //        assertTrue(success);
189 //
190 //        assertTrue(t.isProcessed());
191 //        assertEquals(NONE, t.getPrevEventType());
192 //        assertEquals(SAVE_DOCUMENT, t.getEventType());
193 //    }
194 //
195 //    @Test public void testApplyRules_saveDocument_validRule_validTransactionalDocument_someAccountingLines() throws Exception {
196 //        RuleMockDocument t = new RuleMockDocument();
197 //        t.addSourceAccountingLine(buildSourceLine("1"));
198 //
199 //        SaveDocumentEvent event = new SaveDocumentEvent(t);
200 //
201 //
202 //        assertFalse(t.isProcessed());
203 //        assertEquals(NONE, t.getEventType());
204 //
205 //        boolean success = kualiRuleService.applyRules(event);
206 //        assertTrue(success);
207 //
208 //        assertTrue(t.isProcessed());
209 //        assertEquals(ADD_LINE, t.getPrevEventType());
210 //        assertEquals(SAVE_DOCUMENT, t.getEventType());
211 //    }
212 //
213 //    @Test public void testApplyRules_addAccountingLine_validRule_nullDocument() {
214 //        boolean failedAsExpected = false;
215 //
216 //        AddAccountingLineEvent event = new AddAccountingLineEvent("test", null, null);
217 //        try {
218 //            kualiRuleService.applyRules(event);
219 //        }
220 //        catch (IllegalArgumentException e) {
221 //            failedAsExpected = true;
222 //        }
223 //
224 //        assertTrue(failedAsExpected);
225 //    }
226 //
227 //    @Test public void testApplyRules_addAccountingLine_validRule_validTransactionalDocument_nullAccountingLine() {
228 //        boolean failedAsExpected = false;
229 //
230 //        AddAccountingLineEvent event = new AddAccountingLineEvent("test", new RuleMockDocument(), null);
231 //        try {
232 //            kualiRuleService.applyRules(event);
233 //        }
234 //        catch (IllegalArgumentException e) {
235 //            failedAsExpected = true;
236 //        }
237 //
238 //        assertTrue(failedAsExpected);
239 //    }
240 //
241 //    @Test public void testApplyRules_addAccountingLine_validRule_validTransactionalDocument_validAccountingLine() throws Exception {
242 //        RuleMockDocument t = new RuleMockDocument();
243 //        SourceAccountingLine s = buildSourceLine("1");
244 //        t.addSourceAccountingLine(s);
245 //
246 //        AddAccountingLineEvent event = new AddAccountingLineEvent("test", t, s);
247 //
248 //        assertFalse(t.isProcessed());
249 //
250 //        boolean success = kualiRuleService.applyRules(event);
251 //        assertTrue(success);
252 //
253 //        assertTrue(t.isProcessed());
254 //        assertEquals(NONE, t.getPrevEventType());
255 //        assertEquals(ADD_LINE, t.getEventType());
256 //    }
257 //
258 //    @Test public void testApplyRules_deleteAccountingLine_validRule_nullDocument() {
259 //        boolean failedAsExpected = false;
260 //
261 //        DeleteAccountingLineEvent event = new DeleteAccountingLineEvent("test", null, null, false);
262 //        try {
263 //            kualiRuleService.applyRules(event);
264 //        }
265 //        catch (IllegalArgumentException e) {
266 //            failedAsExpected = true;
267 //        }
268 //
269 //        assertTrue(failedAsExpected);
270 //    }
271 //
272 //    @Test public void testApplyRules_deleteAccountingLine_validRule_validTransactionalDocument_nullAccountingLine() {
273 //        boolean failedAsExpected = false;
274 //
275 //        DeleteAccountingLineEvent event = new DeleteAccountingLineEvent("test", new RuleMockDocument(), null, false);
276 //        try {
277 //            kualiRuleService.applyRules(event);
278 //        }
279 //        catch (IllegalArgumentException e) {
280 //            failedAsExpected = true;
281 //        }
282 //
283 //        assertTrue(failedAsExpected);
284 //    }
285 //
286 //    @Test public void testApplyRules_deleteAccountingLine_validRule_validTransactionalDocument_validAccountingLine() throws Exception {
287 //        RuleMockDocument t = new RuleMockDocument();
288 //        SourceAccountingLine s = buildSourceLine("1");
289 //        t.addSourceAccountingLine(s);
290 //
291 //        DeleteAccountingLineEvent event = new DeleteAccountingLineEvent("test", t, s, false);
292 //
293 //        assertFalse(t.isProcessed());
294 //
295 //        boolean success = kualiRuleService.applyRules(event);
296 //        assertTrue(success);
297 //
298 //        assertTrue(t.isProcessed());
299 //        assertEquals(NONE, t.getPrevEventType());
300 //        assertEquals(DELETE_LINE, t.getEventType());
301 //    }
302 //
303 //
304 //    @Test public void testApplyRules_updateAccountingLine_validRule_validTransactionalDocument_nullAccountingLine() {
305 //        boolean failedAsExpected = false;
306 //
307 //        UpdateAccountingLineEvent event = new UpdateAccountingLineEvent("test", new RuleMockDocument(), null, null);
308 //        try {
309 //            kualiRuleService.applyRules(event);
310 //        }
311 //        catch (IllegalArgumentException e) {
312 //            failedAsExpected = true;
313 //        }
314 //
315 //        assertTrue(failedAsExpected);
316 //    }
317 //
318 //    @Test public void testApplyRules_updateAccountingLine_validRule_validTransactionalDocument_validAccountingLine_nullUpdatedAccountingLine() throws Exception {
319 //        boolean failedAsExpected = false;
320 //
321 //        RuleMockDocument t = new RuleMockDocument();
322 //        SourceAccountingLine s = buildSourceLine("1");
323 //        t.addSourceAccountingLine(s);
324 //
325 //        UpdateAccountingLineEvent event = new UpdateAccountingLineEvent("test", t, s, null);
326 //
327 //        try {
328 //            kualiRuleService.applyRules(event);
329 //        }
330 //        catch (IllegalArgumentException e) {
331 //            failedAsExpected = true;
332 //        }
333 //
334 //        assertTrue(failedAsExpected);
335 //    }
336 //
337 //    @Test public void testApplyRules_updateAccountingLine_validRule_validTransactionalDocument_validAccountingLines() throws Exception {
338 //        RuleMockDocument t = new RuleMockDocument();
339 //        SourceAccountingLine s = buildSourceLine("1");
340 //        s.setOrganizationReferenceId("A");
341 //        t.addSourceAccountingLine(s);
342 //
343 //        SourceAccountingLine updatedS = (SourceAccountingLine) ObjectUtils.deepCopy(t.getSourceAccountingLine(0));
344 //        updatedS.setOrganizationReferenceId("B");
345 //
346 //        UpdateAccountingLineEvent event = new UpdateAccountingLineEvent("test", t, s, updatedS);
347 //
348 //        assertFalse(t.isProcessed());
349 //
350 //        boolean success = kualiRuleService.applyRules(event);
351 //        assertTrue(success);
352 //
353 //        assertTrue(t.isProcessed());
354 //        assertEquals(NONE, t.getPrevEventType());
355 //        assertEquals(UPDATE_LINE, t.getEventType());
356 //    }
357 //
358 //    @Test public void testApplyRules_reviewAccountingLine_validRule_validTransactionalDocument_nullAccountingLine() {
359 //        boolean failedAsExpected = false;
360 //
361 //        ReviewAccountingLineEvent event = new ReviewAccountingLineEvent("test", new RuleMockDocument(), null);
362 //        try {
363 //            kualiRuleService.applyRules(event);
364 //        }
365 //        catch (IllegalArgumentException e) {
366 //            failedAsExpected = true;
367 //        }
368 //
369 //        assertTrue(failedAsExpected);
370 //    }
371 //
372 //    @Test public void testApplyRules_reviewAccountingLine_validRule_validTransactionalDocument_validAccountingLine() throws Exception {
373 //        RuleMockDocument t = new RuleMockDocument();
374 //        SourceAccountingLine s = buildSourceLine("1");
375 //        t.addSourceAccountingLine(s);
376 //
377 //        ReviewAccountingLineEvent event = new ReviewAccountingLineEvent("test", t, s);
378 //
379 //        assertFalse(t.isProcessed());
380 //
381 //        boolean success = kualiRuleService.applyRules(event);
382 //        assertTrue(success);
383 //
384 //        assertTrue(t.isProcessed());
385 //        assertEquals(NONE, t.getPrevEventType());
386 //        assertEquals(REVIEW_LINE, t.getEventType());
387 //    }
388 //
389 //    // TODO: commenting thse out for now, need to analyze and see if it still makes sense with new notes"copied from document " +
390 //    // sourceDocumentHeaderId);
391 //    @Test public void testApplyRules_addDocumentNote_validRule_nullDocument_nullDocumentNote() {
392 //        // boolean failedAsExpected = false;
393 //        //
394 //        // AddDocumentNoteEvent event = new AddDocumentNoteEvent(null, null);
395 //        // try {
396 //        // kualiRuleService.applyRules(event);
397 //        // }
398 //        // catch (IllegalArgumentException e) {
399 //        // failedAsExpected = true;
400 //        // }
401 //        //
402 //        // assertTrue(failedAsExpected);
403 //    }
404 //
405 //    @Test public void testApplyRules_addDocumentNote_validRule_validDocument_nullDocumentNote() {
406 //        // boolean failedAsExpected = false;
407 //        //
408 //        // MockTransactionalDocument d = new MockTransactionalDocument();
409 //        // DocumentNote n = null;
410 //        //
411 //        // AddDocumentNoteEvent event = new AddDocumentNoteEvent(d, n);
412 //        //
413 //        // try {
414 //        // kualiRuleService.applyRules(event);
415 //        // }
416 //        // catch (IllegalArgumentException e) {
417 //        // failedAsExpected = true;
418 //        // }
419 //        //
420 //        // assertTrue(failedAsExpected);
421 //    }
422 //
423 //    @Test public void testApplyRules_addDocumentNote_validRule_validDocument_validDocumentNote() {
424 //        // MockTransactionalDocument d = new MockTransactionalDocument();
425 //        // DocumentNote n = new DocumentNote();
426 //        // n.setFinancialDocumentNoteText("Test");
427 //        // d.getDocumentHeader().getNotes().add(n);
428 //        //
429 //        // AddDocumentNoteEvent event = new AddDocumentNoteEvent(d, n);
430 //        //
431 //        // assertFalse(d.isProcessed());
432 //        // assertTrue(kualiRuleService.applyRules(event));
433 //        // assertTrue(d.isProcessed());
434 //        // assertEquals(NONE, d.getPrevEventType());
435 //        // assertEquals(ADD_DOC_NOTE, d.getEventType());
436 //    }
437 //
438 //    private SourceAccountingLine buildSourceLine(String documentHeaderId) throws InstantiationException, IllegalAccessException {
439 //        SourceAccountingLine sourceLine = LINE.createSourceAccountingLine();
440 //        return sourceLine;
441 //
442 //    }
443 }