/*
* Copyright (c) 2005-2011 Grameen Foundation USA
* All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*
* See also http://www.apache.org/licenses/LICENSE-2.0.html for an
* explanation of the license and how it is applied.
*/
package org.mifos.config.business;
import java.util.List;
import junit.framework.Assert;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mifos.config.AccountingRules;
import org.mifos.config.ClientRules;
import org.mifos.config.FiscalCalendarRules;
import org.mifos.customers.office.business.OfficeBO;
import org.mifos.customers.office.persistence.OfficePersistence;
import org.mifos.framework.MifosIntegrationTestCase;
import org.mifos.framework.util.helpers.TestObjectFactory;
/**
* Most of this class is a remnant of per-office configuration, which <a
* href="http://article.gmane.org/gmane.comp.finance.mifos.devel/3498">is
* deprecated and may be removed</a> (-Adam 22-JAN-2008).
*/
public class ConfigurationIntegrationTest extends MifosIntegrationTestCase {
private Configuration configuration;
@Before
public void setUp() throws Exception {
configuration = Configuration.getInstance();
}
@After
public void testSystemConfiguration() throws Exception {
SystemConfiguration systemConfig = configuration.getSystemConfig();
Assert.assertNotNull(systemConfig);
Assert.assertNotNull(systemConfig.getCurrency());
Assert.assertNotNull(systemConfig.getMifosTimeZone());
}
@Test
public void testHeadOfficeConfiguration() throws Exception {
OfficeBO headOffice = new OfficePersistence().getHeadOffice();
OfficeConfig officeConfig = configuration.getOfficeConfig(headOffice.getOfficeId());
assertForAccountConfig(officeConfig.getAccountConfig());
}
@Test
public void testAreaOfficeConfiguration() throws Exception {
OfficeBO areaOffice = new OfficePersistence().getOffice(TestObjectFactory.SAMPLE_AREA_OFFICE);
OfficeConfig officeConfig = configuration.getOfficeConfig(areaOffice.getOfficeId());
assertForAccountConfig(officeConfig.getAccountConfig());
}
@Test
public void testBranchOfficeConfiguration() throws Exception {
OfficeBO branchOffice = new OfficePersistence().getOffice(TestObjectFactory.SAMPLE_BRANCH_OFFICE);
OfficeConfig officeConfig = configuration.getOfficeConfig(branchOffice.getOfficeId());
assertForAccountConfig(officeConfig.getAccountConfig());
}
@Test
public void testClientRules() throws Exception {
Assert.assertEquals(true, ClientRules.getCenterHierarchyExists().booleanValue());
Assert.assertEquals(true, ClientRules.getClientCanExistOutsideGroup());
Assert.assertEquals(true, ClientRules.getGroupCanApplyLoans().booleanValue());
}
private void assertForAccountConfig(AccountConfig accountConfig) {
Assert.assertEquals(Short.valueOf("10"), accountConfig.getLatenessDays());
Assert.assertEquals(Short.valueOf("30"), accountConfig.getDormancyDays());
Assert.assertEquals(true, AccountingRules.isBackDatedTxnAllowed());
}
@Test
public void testFiscalCalendarRules() {
Assert.assertEquals(Short.valueOf("2"), new FiscalCalendarRules().getStartOfWeek());
Assert.assertEquals("same_day", new FiscalCalendarRules().getScheduleMeetingIfNonWorkingDay());
enableCustomWorkingDays();
List<Short> weekOffs = new FiscalCalendarRules().getWeekDayOffList();
Assert.assertEquals(weekOffs.size(), 0);
}
}