001: /*
002: * Copyright 2007 The Kuali Foundation.
003: *
004: * Licensed under the Educational Community License, Version 1.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.opensource.org/licenses/ecl1.php
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016: package org.kuali.module.purap.document;
017:
018: import static org.kuali.test.fixtures.UserNameFixture.KHUNTLEY;
019: import static org.kuali.test.fixtures.UserNameFixture.RORENFRO;
020: import static org.kuali.test.fixtures.UserNameFixture.TWATSON;
021:
022: import java.util.ArrayList;
023:
024: import org.apache.commons.logging.Log;
025: import org.apache.commons.logging.LogFactory;
026: import org.kuali.core.service.DocumentService;
027: import org.kuali.kfs.context.KualiTestBase;
028: import org.kuali.kfs.context.SpringContext;
029: import org.kuali.module.financial.document.AccountingDocumentTestUtils;
030: import org.kuali.module.purap.fixtures.RequisitionDocumentFixture;
031: import org.kuali.test.ConfigureContext;
032: import org.kuali.test.monitor.ChangeMonitor;
033: import org.kuali.test.monitor.DocumentWorkflowNodeMonitor;
034: import org.kuali.test.monitor.DocumentWorkflowStatusMonitor;
035: import org.kuali.workflow.WorkflowTestUtils;
036:
037: import edu.iu.uis.eden.EdenConstants;
038:
039: /**
040: * This class is used to create and test populated Requisition Documents of various kinds.
041: */
042: @ConfigureContext(session=KHUNTLEY)
043: public class PurapDocumentMassCreation extends KualiTestBase {
044: private static final String ACCOUNT_REVIEW = "Account Review";
045: private static final Integer NUM_QUANTITY_REQ = 30;
046: private static final Integer NUM_NON_QUANTITY_REQ = 30;
047: private static final Log LOG = LogFactory
048: .getLog(WorkflowTestUtils.class);
049:
050: private RequisitionDocument requisitionDocument = null;
051:
052: protected void setUp() throws Exception {
053: super .setUp();
054: }
055:
056: protected void tearDown() throws Exception {
057: requisitionDocument = null;
058: super .tearDown();
059: }
060:
061: @ConfigureContext(session=TWATSON,shouldCommitTransactions=true)
062: public final void createMulitpleQuantityREQ() throws Exception {
063: ArrayList<String> reqsCreated = new ArrayList<String>();
064: // loop through x number of times for QUANTITY-based Requisition
065: for (int i = 0; i < NUM_QUANTITY_REQ; i++) {
066: changeCurrentUser(TWATSON);
067: requisitionDocument = RequisitionDocumentFixture.REQ_MULTI_QUANTITY
068: .createRequisitionDocument();
069: final String docId = requisitionDocument
070: .getDocumentNumber();
071: AccountingDocumentTestUtils.routeDocument(
072: requisitionDocument, SpringContext
073: .getBean(DocumentService.class));
074: DocumentWorkflowNodeMonitor nodeMonitor = new DocumentWorkflowNodeMonitor(
075: requisitionDocument.getDocumentHeader()
076: .getWorkflowDocument(), ACCOUNT_REVIEW);
077: ChangeMonitor.waitUntilChange(nodeMonitor, 60, 5);
078:
079: // the document should now be routed to RORENFRO as Fiscal Officer
080: changeCurrentUser(RORENFRO);
081: requisitionDocument = (RequisitionDocument) SpringContext
082: .getBean(DocumentService.class)
083: .getByDocumentHeaderId(docId);
084: SpringContext.getBean(DocumentService.class)
085: .approveDocument(requisitionDocument,
086: "Test approving as RORENFRO", null);
087: DocumentWorkflowStatusMonitor statusMonitor = new DocumentWorkflowStatusMonitor(
088: SpringContext.getBean(DocumentService.class), ""
089: + requisitionDocument.getDocumentHeader()
090: .getWorkflowDocument()
091: .getRouteHeaderId(), new String[] {
092: EdenConstants.ROUTE_HEADER_FINAL_CD,
093: EdenConstants.ROUTE_HEADER_PROCESSED_CD });
094: ChangeMonitor.waitUntilChange(statusMonitor, 60, 5);
095: reqsCreated.add(docId);
096: }
097: LOG.info("Docs Created:" + reqsCreated.toString());
098: }
099:
100: @ConfigureContext(session=TWATSON,shouldCommitTransactions=true)
101: public final void createMulitpleNonQuantityREQ() throws Exception {
102: ArrayList<String> reqsCreated = new ArrayList<String>();
103: // loop through x number of times for NON QUANTITY-based Requisition
104: for (int i = 0; i < NUM_NON_QUANTITY_REQ; i++) {
105: changeCurrentUser(TWATSON);
106: requisitionDocument = RequisitionDocumentFixture.REQ_MULTI_NON_QUANTITY
107: .createRequisitionDocument();
108: final String docId = requisitionDocument
109: .getDocumentNumber();
110: AccountingDocumentTestUtils.routeDocument(
111: requisitionDocument, SpringContext
112: .getBean(DocumentService.class));
113: DocumentWorkflowNodeMonitor nodeMonitor = new DocumentWorkflowNodeMonitor(
114: requisitionDocument.getDocumentHeader()
115: .getWorkflowDocument(), ACCOUNT_REVIEW);
116: ChangeMonitor.waitUntilChange(nodeMonitor, 60, 5);
117:
118: // the document should now be routed to RORENFRO as Fiscal Officer
119: changeCurrentUser(RORENFRO);
120: requisitionDocument = (RequisitionDocument) SpringContext
121: .getBean(DocumentService.class)
122: .getByDocumentHeaderId(docId);
123: SpringContext.getBean(DocumentService.class)
124: .approveDocument(requisitionDocument,
125: "Test approving as RORENFRO", null);
126: DocumentWorkflowStatusMonitor statusMonitor = new DocumentWorkflowStatusMonitor(
127: SpringContext.getBean(DocumentService.class), ""
128: + requisitionDocument.getDocumentHeader()
129: .getWorkflowDocument()
130: .getRouteHeaderId(), new String[] {
131: EdenConstants.ROUTE_HEADER_FINAL_CD,
132: EdenConstants.ROUTE_HEADER_PROCESSED_CD });
133: ChangeMonitor.waitUntilChange(statusMonitor, 60, 5);
134: reqsCreated.add(docId);
135: }
136: }
137:
138: // create document fixture
139: }
|