/*
* 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.sys.service;
import java.util.Iterator;
import org.kuali.kfs.sys.ConfigureContext;
import org.kuali.kfs.sys.KFSConstants;
import org.kuali.kfs.sys.businessobject.GeneralLedgerPendingEntry;
import org.kuali.kfs.sys.context.KualiTestBase;
import org.kuali.kfs.sys.context.SpringContext;
import org.kuali.rice.core.api.datetime.DateTimeService;
import org.kuali.rice.core.api.util.type.KualiDecimal;
/**
* This class tests the GeneralLedgerPending service.
*/
@ConfigureContext
public class GeneralLedgerPendingEntryServiceTest extends KualiTestBase {
private GeneralLedgerPendingEntryService generalLedgerPendingEntryService;
private final String docHeaderId = "1003";
/**
* Initalizes the services needef or this test; also, since this test creates a fake document, deletes
* any entries from the real version of that document if they exist
* @see junit.framework.TestCase#setUp()
*/
@Override
protected void setUp() throws Exception {
super.setUp();
if (generalLedgerPendingEntryService == null) {
generalLedgerPendingEntryService = SpringContext.getBean(GeneralLedgerPendingEntryService.class);
}
// Make sure the document doesn't exist before each test
generalLedgerPendingEntryService.delete(docHeaderId);
}
/**
* Tests that pending entries are saved and retrieved properly
*
* @throws Exception thrown if any exception is encountered for any reason
*/
public void testSave() throws Exception {
GeneralLedgerPendingEntry testEntry = this.createGeneralLedgerPendingEntry();
generalLedgerPendingEntryService.save(testEntry);
GeneralLedgerPendingEntry generalLedgerPendingEntry = generalLedgerPendingEntryService.getByPrimaryId(testEntry.getTransactionLedgerEntrySequenceNumber(), docHeaderId);
assertNotNull("Save didn't save this entry", generalLedgerPendingEntry);
generalLedgerPendingEntryService.delete(docHeaderId);
}
/**
* Covers GeneralPendingLedgerEntryService.getByPrimaryId (though, yeah, testSave does too, technically)
*
* @throws Exception thrown if any exception is encountered for any reason
*/
public void testGetByPrimaryId() throws Exception {
GeneralLedgerPendingEntry testEntry = this.createGeneralLedgerPendingEntry();
generalLedgerPendingEntryService.save(testEntry);
GeneralLedgerPendingEntry generalLedgerPendingEntry = generalLedgerPendingEntryService.getByPrimaryId(testEntry.getTransactionLedgerEntrySequenceNumber(), docHeaderId);
assertNotNull("getByPrimaryId didn't get this entry", generalLedgerPendingEntry);
generalLedgerPendingEntryService.delete(docHeaderId);
}
/**
* Covers GeneralLedgerPendingEntryService.delete
*
* @throws Exception thrown if any exception is encountered for any reason
*/
public void testDelete() throws Exception {
GeneralLedgerPendingEntry generalLedgerPendingEntry = this.createGeneralLedgerPendingEntry();
generalLedgerPendingEntryService.save(generalLedgerPendingEntry);
generalLedgerPendingEntryService.delete(docHeaderId);
generalLedgerPendingEntry = generalLedgerPendingEntryService.getByPrimaryId(generalLedgerPendingEntry.getTransactionLedgerEntrySequenceNumber(), docHeaderId);
assertNull("Delete didn't delete this entry", generalLedgerPendingEntry);
}
/**
* Covers GeneralLedgerPendingEntryService.findApprovedPendingLedgerEntries
*/
public void testFindApprovedPendingLedgerEntries() {
try {
GeneralLedgerPendingEntry generalLedgerPendingEntry = this.createGeneralLedgerPendingEntry();
generalLedgerPendingEntryService.save(generalLedgerPendingEntry);
Iterator entries = generalLedgerPendingEntryService.findApprovedPendingLedgerEntries();
int counter = 0;
while (entries.hasNext()) {
generalLedgerPendingEntry = (GeneralLedgerPendingEntry) (entries.next());
++counter;
System.out.println(counter + ":" + generalLedgerPendingEntry.getDocumentNumber());
}
}
catch (Exception e) {
assertTrue("Failed to fetch all entries", true);
}
finally {
generalLedgerPendingEntryService.delete(docHeaderId);
}
}
/**
* Creates a pending entry fixture
*
* @return a pending entry to test against
*/
private GeneralLedgerPendingEntry createGeneralLedgerPendingEntry() {
GeneralLedgerPendingEntry generalLedgerPendingEntry = new GeneralLedgerPendingEntry();
generalLedgerPendingEntry.setFinancialSystemOriginationCode("01");
generalLedgerPendingEntry.setDocumentNumber(docHeaderId);
generalLedgerPendingEntry.setChartOfAccountsCode("BA");
generalLedgerPendingEntry.setFinancialObjectCode("1130");
generalLedgerPendingEntry.setFinancialBalanceTypeCode("AX");
generalLedgerPendingEntry.setFinancialObjectTypeCode("AS");
generalLedgerPendingEntry.setUniversityFiscalYear(new Integer(2005));
generalLedgerPendingEntry.setUniversityFiscalPeriodCode("7");
generalLedgerPendingEntry.setTransactionLedgerEntryAmount(new KualiDecimal("8.8"));
generalLedgerPendingEntry.setTransactionLedgerEntryDescription("9");
generalLedgerPendingEntry.setTransactionDebitCreditCode("D");
generalLedgerPendingEntry.setTransactionDate(new java.sql.Date(SpringContext.getBean(DateTimeService.class).getCurrentDate().getTime()));
generalLedgerPendingEntry.setFinancialDocumentTypeCode("12");
generalLedgerPendingEntry.setTransactionLedgerEntrySequenceNumber(new Integer(1));
generalLedgerPendingEntry.setFinancialDocumentApprovedCode(KFSConstants.PENDING_ENTRY_APPROVED_STATUS_CODE.APPROVED);
return generalLedgerPendingEntry;
}
}