/* * The Kuali Financial System, a comprehensive financial management system for higher education. * * Copyright 2005-2014 The Kuali Foundation * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.kuali.kfs.module.purap.document; import static org.kuali.kfs.sys.fixture.UserNameFixture.parke; import static org.kuali.kfs.sys.fixture.UserNameFixture.rorenfro; import java.util.HashMap; import java.util.Map; import org.kuali.kfs.module.purap.PurapAuthorizationConstants; import org.kuali.kfs.module.purap.PurapConstants; import org.kuali.kfs.module.purap.PurapConstants.PurchaseOrderStatuses; import org.kuali.kfs.module.purap.document.service.PurchaseOrderService; import org.kuali.kfs.module.purap.document.web.struts.PurchaseOrderForm; import org.kuali.kfs.module.purap.fixture.PurchaseOrderForPurchaseOrderDocumentActionAuthorizerFixture; import org.kuali.kfs.sys.ConfigureContext; import org.kuali.kfs.sys.context.KualiTestBase; import org.kuali.kfs.sys.context.SpringContext; import org.kuali.kfs.sys.document.AccountingDocumentTestUtils; import org.kuali.kfs.sys.document.workflow.WorkflowTestUtils; import org.kuali.rice.kns.web.ui.ExtraButton; import org.kuali.rice.krad.service.DocumentService; /** * This class is used to test the authorization of the * buttons in Purchase Order Documents. It will invoke the canXXX * methods in PurchaseOrderDocumentActionAuthorizer to * test whether certain buttons could be displayed. */ @ConfigureContext(session = parke) public class PurchaseOrderDocumentActionAuthorizerTest extends KualiTestBase { private PurchaseOrderDocument purchaseOrderDocument = null; @Override protected void setUp() throws Exception { super.setUp(); } @Override protected void tearDown() throws Exception { purchaseOrderDocument = null; super.tearDown(); } // The tests in this class have apparently been commented out because of the removal of PurchaseOrderDocumentActionAuthorizer. public void testPlaceHolder() { assertTrue(true); } // /** // * Tests that the retransmit button is displayed. // * // * @throws Exception // */ // @ConfigureContext(session = parke, shouldCommitTransactions=true) // public final void testValidForRetransmit() throws Exception { // Map editMode = new HashMap(); // Map documentActions = new HashMap(); // PurchaseOrderDocument po = PurchaseOrderForPurchaseOrderDocumentActionAuthorizerFixture.PO_VALID_RETRANSMIT.createPurchaseOrderDocument(); // PurchaseOrderDocumentActionAuthorizer auth = new PurchaseOrderDocumentActionAuthorizer(po, editMode, documentActions); // assertTrue(auth.canRetransmit()); // } // /** * Tests that the print retransmit button is displayed when the purchase order * is not an APO. It should allow purchasing users (in this case we use parke) * to see the button if the purchase order is not an APO. * * @throws Exception */ @ConfigureContext(session = parke, shouldCommitTransactions=false) public final void DISABLED_502_testValidForPrintingRetransmitNonAPO() throws Exception { Map editMode = new HashMap(); Map documentActions = new HashMap(); editMode.put(PurapAuthorizationConstants.PurchaseOrderEditMode.DISPLAY_RETRANSMIT_TAB, true); PurchaseOrderDocument poDocument = PurchaseOrderForPurchaseOrderDocumentActionAuthorizerFixture.PO_VALID_RETRANSMIT.createPurchaseOrderDocument(); poDocument.prepareForSave(); DocumentService documentService = SpringContext.getBean(DocumentService.class); AccountingDocumentTestUtils.routeDocument(poDocument, "saving copy source document", null, documentService); WorkflowTestUtils.waitForDocumentApproval(poDocument.getDocumentNumber()); assertTrue("Document should now be final.", poDocument.getDocumentHeader().getWorkflowDocument().isFinal()); PurchaseOrderService purchaseOrderService = SpringContext.getBean(PurchaseOrderService.class); PurchaseOrderDocument poRetransmitDocument = purchaseOrderService.createAndRoutePotentialChangeDocument(poDocument.getDocumentNumber(), PurapConstants.PurchaseOrderDocTypes.PURCHASE_ORDER_RETRANSMIT_DOCUMENT, null, null, "RTPE"); poRetransmitDocument.setApplicationDocumentStatus(PurchaseOrderStatuses.APPDOC_CHANGE_IN_PROCESS); PurchaseOrderForm poForm = new PurchaseOrderForm(); poForm.setDocument(poRetransmitDocument); poForm.setEditingMode(editMode); boolean buttonFound = false; for (ExtraButton button : poForm.getExtraButtons()) { if (button.getExtraButtonProperty().equals("methodToCall.printingRetransmitPo")) { buttonFound = true; break; } } assertTrue(buttonFound); } /** * Tests that the print retransmit button is displayed when the purchase order is an * APO and the user can be anyone (here it is set as rorenfro prior to checking for the authorizer). * It should allow anyone to see the print retransmit button if it's an APO. * * @throws Exception */ @ConfigureContext(session = parke, shouldCommitTransactions=false) public final void DISABLED_502_testValidForPrintingRetransmitAPO() throws Exception { Map editMode = new HashMap(); Map documentActions = new HashMap(); editMode.put(PurapAuthorizationConstants.PurchaseOrderEditMode.DISPLAY_RETRANSMIT_TAB, true); PurchaseOrderDocument poDocument = PurchaseOrderForPurchaseOrderDocumentActionAuthorizerFixture.PO_VALID_RETRANSMIT.createPurchaseOrderDocument(); poDocument.prepareForSave(); DocumentService documentService = SpringContext.getBean(DocumentService.class); AccountingDocumentTestUtils.routeDocument(poDocument, "saving copy source document", null, documentService); WorkflowTestUtils.waitForDocumentApproval(poDocument.getDocumentNumber()); assertTrue("Document should now be final.", poDocument.getDocumentHeader().getWorkflowDocument().isFinal()); PurchaseOrderService purchaseOrderService = SpringContext.getBean(PurchaseOrderService.class); PurchaseOrderDocument poRetransmitDocument = purchaseOrderService.createAndRoutePotentialChangeDocument(poDocument.getDocumentNumber(), PurapConstants.PurchaseOrderDocTypes.PURCHASE_ORDER_RETRANSMIT_DOCUMENT, null, null, "RTPE"); poRetransmitDocument.setApplicationDocumentStatus(PurchaseOrderStatuses.APPDOC_CHANGE_IN_PROCESS); poRetransmitDocument.setPurchaseOrderAutomaticIndicator(true); changeCurrentUser(rorenfro); PurchaseOrderForm poForm = new PurchaseOrderForm(); poForm.setDocument(poRetransmitDocument); poForm.setEditingMode(editMode); boolean buttonFound = false; for (ExtraButton button : poForm.getExtraButtons()) { if (button.getExtraButtonProperty().equals("methodToCall.printingRetransmitPo")) { buttonFound = true; break; } } assertTrue(buttonFound); } // /** // * Tests that the print button for first transmit is displayed. // * // * @throws Exception // */ // @ConfigureContext(session = parke, shouldCommitTransactions=true) // public final void testFirstTransmitPrintPO() throws Exception { // Map editMode = new HashMap(); // Map documentActions = new HashMap(); // // PurchaseOrderDocument poDocument = PurchaseOrderForPurchaseOrderDocumentActionAuthorizerFixture.PO_VALID_FIRST_TRANSMIT_PRINT.createPurchaseOrderDocument(); // DocumentService documentService = SpringContext.getBean(DocumentService.class); // poDocument.prepareForSave(); // AccountingDocumentTestUtils.routeDocument(poDocument, "saving copy source document", null, documentService); // WorkflowTestUtils.waitForStatusChange(poDocument.getDocumentHeader().getWorkflowDocument(), DocumentStatus.FINAL); // assertTrue("Document should now be final.", poDocument.getDocumentHeader().getWorkflowDocument().isFinal()); // // PurchaseOrderDocumentActionAuthorizer auth = new PurchaseOrderDocumentActionAuthorizer(poDocument, editMode, documentActions); // assertTrue(auth.canFirstTransmitPrintPo()); // } // // /** // * Tests that the open order button is displayed. // * // * @throws Exception // */ // @ConfigureContext(session = parke, shouldCommitTransactions=true) // public final void testReopen() throws Exception { // Map editMode = new HashMap(); // Map documentActions = new HashMap(); // // PurchaseOrderDocument poDocument = PurchaseOrderForPurchaseOrderDocumentActionAuthorizerFixture.PO_VALID_REOPEN.createPurchaseOrderDocument(); // PurchaseOrderDocumentActionAuthorizer auth = new PurchaseOrderDocumentActionAuthorizer(poDocument, editMode, documentActions); // assertTrue(auth.canReopen()); // } // // /** // * Tests that the close order button is displayed. // * // * @throws Exception // */ // @ConfigureContext(session = parke, shouldCommitTransactions=true) // public final void testClose() throws Exception { // Map editMode = new HashMap(); // Map documentActions = new HashMap(); // // DocumentService documentService = SpringContext.getBean(DocumentService.class); // //We create and save this req to obtain a number from the AP document link identifier sequencer in the database // RequisitionDocument dummyReqDocument = RequisitionDocumentFixture.REQ_ONLY_REQUIRED_FIELDS.createRequisitionDocument(); // documentService.saveDocument(dummyReqDocument); // PurchaseOrderDocument poDocument = PurchaseOrderForPurchaseOrderDocumentActionAuthorizerFixture.PO_VALID_CLOSE.createPurchaseOrderDocument(); // poDocument.setAccountsPayablePurchasingDocumentLinkIdentifier(dummyReqDocument.getAccountsPayablePurchasingDocumentLinkIdentifier()); // poDocument.prepareForSave(); // AccountingDocumentTestUtils.routeDocument(poDocument, "saving copy source document", null, documentService); // WorkflowTestUtils.waitForStatusChange(poDocument.getDocumentHeader().getWorkflowDocument(), DocumentStatus.FINAL); // changeCurrentUser(appleton); // PaymentRequestDocument preq = PaymentRequestDocumentFixture.PREQ_FOR_PO_CLOSE_DOC.createPaymentRequestDocument(); // preq.setPurchaseOrderIdentifier(poDocument.getPurapDocumentIdentifier()); // preq.setProcessingCampusCode("BL"); // preq.setAccountsPayablePurchasingDocumentLinkIdentifier(poDocument.getAccountsPayablePurchasingDocumentLinkIdentifier()); // preq.prepareForSave(); // AccountingDocumentTestUtils.saveDocument(preq, documentService); // PurchaseOrderDocumentActionAuthorizer auth = new PurchaseOrderDocumentActionAuthorizer(poDocument, editMode, documentActions); // assertTrue(auth.canClose()); // } // // /** // * Tests that the payment hold buttons are displayed. // * // * @throws Exception // */ // @ConfigureContext(session = parke, shouldCommitTransactions=true) // public final void testPaymentHold() throws Exception { // Map editMode = new HashMap(); // Map documentActions = new HashMap(); // // PurchaseOrderDocument poDocument = PurchaseOrderForPurchaseOrderDocumentActionAuthorizerFixture.PO_VALID_CLOSE.createPurchaseOrderDocument(); // PurchaseOrderDocumentActionAuthorizer auth = new PurchaseOrderDocumentActionAuthorizer(poDocument, editMode, documentActions); // assertTrue(auth.canHoldPayment()); // } // // /** // * Tests that the void button is displayed when the purchase order // * is in Pending Print status. // * // * @throws Exception // */ // @ConfigureContext(session = parke, shouldCommitTransactions=true) // public final void testVoidPendingPrint() throws Exception { // Map editMode = new HashMap(); // Map documentActions = new HashMap(); // // PurchaseOrderDocument poDocument = PurchaseOrderForPurchaseOrderDocumentActionAuthorizerFixture.PO_VALID_VOID_PENDING_PRINT.createPurchaseOrderDocument(); // PurchaseOrderDocumentActionAuthorizer auth = new PurchaseOrderDocumentActionAuthorizer(poDocument, editMode, documentActions); // assertTrue(auth.canVoid()); // } // // /** // * Tests that the void button is displayed when the purchase order // * is in OPEN status and there is no payment request associated // * with the purchase order. // * // * @throws Exception // */ // @ConfigureContext(session = parke, shouldCommitTransactions=true) // public final void testVoidOpenNoPreq() throws Exception { // Map editMode = new HashMap(); // Map documentActions = new HashMap(); // // PurchaseOrderDocument poDocument = PurchaseOrderForPurchaseOrderDocumentActionAuthorizerFixture.PO_VALID_VOID_OPEN_NO_PREQ.createPurchaseOrderDocument(); // PurchaseOrderDocumentActionAuthorizer auth = new PurchaseOrderDocumentActionAuthorizer(poDocument, editMode, documentActions); // assertTrue(auth.canVoid()); // } // // /** // * Tests that the remove hold button is displayed. // * // * @throws Exception // */ // @ConfigureContext(session = parke, shouldCommitTransactions=true) // public final void testRemoveHold() throws Exception { // Map editMode = new HashMap(); // Map documentActions = new HashMap(); // // PurchaseOrderDocument poDocument = PurchaseOrderForPurchaseOrderDocumentActionAuthorizerFixture.PO_VALID_REMOVE_HOLD.createPurchaseOrderDocument(); // PurchaseOrderDocumentActionAuthorizer auth = new PurchaseOrderDocumentActionAuthorizer(poDocument, editMode, documentActions); // assertTrue(auth.canRemoveHold()); // } }