/* * 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.ld.businessobject.lookup; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; import org.kuali.kfs.gl.web.TestDataGenerator; import org.kuali.kfs.module.ld.businessobject.LedgerBalance; import org.kuali.kfs.sys.ConfigureContext; import org.kuali.kfs.sys.KFSPropertyConstants; import org.kuali.kfs.sys.ObjectUtil; import org.kuali.kfs.sys.businessobject.lookup.LookupableSpringContext; import org.kuali.kfs.sys.context.KualiTestBase; import org.kuali.kfs.sys.context.SpringContext; import org.kuali.kfs.sys.context.TestUtils; import org.kuali.rice.kns.lookup.LookupableHelperService; import org.kuali.rice.krad.service.BusinessObjectService; import org.kuali.rice.krad.service.PersistenceService; /** * This class contains the test cases that can be applied to the method in LedgerBalanceLookupableImpl class. */ @ConfigureContext public class LedgerBalanceLookupableHelperServiceTest extends KualiTestBase { private BusinessObjectService businessObjectService; private LookupableHelperService lookupableHelperService; private PersistenceService persistenceService; private Properties properties; private String fieldNames, documentFieldNames; private String deliminator; private int ledgerBalanceNumberOfTestData; private int ledgerBalanceExpectedInsertion; @Override protected void setUp() throws Exception { super.setUp(); businessObjectService = SpringContext.getBean(BusinessObjectService.class); lookupableHelperService = LookupableSpringContext.getLookupableHelperService("laborLedgerBalanceLookupableHelperService"); lookupableHelperService.setBusinessObjectClass(LedgerBalance.class); // Clear up the database so that any existing data cannot affact your test result HashMap keys = new HashMap(); keys.put(KFSPropertyConstants.UNIVERSITY_FISCAL_YEAR, TestUtils.getFiscalYearForTesting().toString()); keys.put(KFSPropertyConstants.EMPLID, "0000001265"); keys.put(KFSPropertyConstants.FINANCIAL_BALANCE_TYPE_CODE, "AC"); keys.put(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE, "BL"); businessObjectService.deleteMatching(LedgerBalance.class, keys); } public void testGetSearchResults() throws Exception { insertLedgerBalanceRecords(); LedgerBalance ledgerBalance = new LedgerBalance(); ledgerBalance.setUniversityFiscalYear(TestUtils.getFiscalYearForTesting()); ledgerBalance.setEmplid("0000001265"); ledgerBalance.setBalanceTypeCode("AC"); ledgerBalance.setChartOfAccountsCode("BL"); // test the search results before the specified entry is inserted into the database Map fieldValues = buildFieldValues(ledgerBalance, this.getLookupFields(false)); List searchResults = lookupableHelperService.getSearchResults(fieldValues); if (searchResults != null) { System.out.println("Results Size:" + searchResults.size()); } // compare the search results with the expected and see if they match with each other assertEquals(this.ledgerBalanceExpectedInsertion, searchResults.size()); } private Map<String, String> buildFieldValues(LedgerBalance ledgerBalance, List<String> lookupFields) { Map<String, String> fieldValues = new HashMap<String, String>(); Map<String, Object> tempFieldValues = ObjectUtil.buildPropertyMap(ledgerBalance, lookupFields); for (String key : tempFieldValues.keySet()) { fieldValues.put(key, tempFieldValues.get(key).toString()); } return fieldValues; } private List<String> getLookupFields(boolean isExtended) { List<String> lookupFields = new ArrayList<String>(); lookupFields.add(KFSPropertyConstants.UNIVERSITY_FISCAL_YEAR); lookupFields.add(KFSPropertyConstants.EMPLID); lookupFields.add(KFSPropertyConstants.FINANCIAL_BALANCE_TYPE_CODE); lookupFields.add(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE); return lookupFields; } protected void insertLedgerBalanceRecords() { String messageFileName = "org/kuali/kfs/module/ld/testdata/message.properties"; String propertiesFileName = "org/kuali/kfs/module/ld/testdata/ledgerBalance.properties"; properties = (new TestDataGenerator(propertiesFileName, messageFileName)).getProperties(); fieldNames = properties.getProperty("fieldNames"); documentFieldNames = properties.getProperty("fieldNames"); deliminator = properties.getProperty("deliminator"); TestDataGenerator testDataGenerator = new TestDataGenerator(propertiesFileName, messageFileName); businessObjectService = SpringContext.getBean(BusinessObjectService.class); persistenceService = SpringContext.getBean(PersistenceService.class); int numberOfDocuments = Integer.valueOf(properties.getProperty("getLedgerBalance.numOfData")); List<LedgerBalance> inputDataList = new ArrayList<LedgerBalance>(); for (int i = 1; i <= numberOfDocuments; i++) { String propertyKey = "getLedgerBalance.testData" + i; LedgerBalance inputData = new LedgerBalance(); ObjectUtil.populateBusinessObject(inputData, properties, propertyKey, documentFieldNames, deliminator); inputData.setUniversityFiscalYear(TestUtils.getFiscalYearForTesting()); inputDataList.add(inputData); } String testTarget = "getLedgerBalance."; this.ledgerBalanceNumberOfTestData = Integer.valueOf(properties.getProperty(testTarget + "numOfData")); this.ledgerBalanceExpectedInsertion = Integer.valueOf(properties.getProperty(testTarget + "expectedInsertion")); businessObjectService.save(inputDataList); } }