/*
* 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.ec.document.service;
import java.util.ArrayList;
import java.util.List;
import org.kuali.kfs.module.ec.EffortCertificationTestConstants;
import org.kuali.kfs.module.ec.businessobject.EffortCertificationReportDefinition;
import org.kuali.kfs.module.ec.dataaccess.MockEffortCertificationReportDefinitionDaoOjb;
import org.kuali.kfs.module.ec.fixture.EffortCertificationReportDefinitionFixture;
import org.kuali.kfs.sys.ConfigureContext;
import org.kuali.kfs.sys.context.KualiTestBase;
import org.kuali.kfs.sys.context.SpringContext;
import org.kuali.rice.krad.service.BusinessObjectService;
/**
* Contains methods that test the EffortCertificationAutomaticReportPeriodUpdateService.
*/
@ConfigureContext
public class EffortCertificationAutomaticReportPeriodUpdateServiceTest extends KualiTestBase {
private EffortCertificationAutomaticReportPeriodUpdateService reportDefinitionService;
private BusinessObjectService businessObjectService;
private MockEffortCertificationReportDefinitionDaoOjb mockDao;
private List<EffortCertificationReportDefinition> testReportDefinitions;
/**
*
* @see junit.framework.TestCase#setUp()
*/
@Override
public void setUp() throws Exception {
super.setUp();
mockDao = new MockEffortCertificationReportDefinitionDaoOjb();
reportDefinitionService = SpringContext.getBean(EffortCertificationAutomaticReportPeriodUpdateService.class);
businessObjectService = SpringContext.getBean(BusinessObjectService.class);
reportDefinitionService.setEffortCertificationReportDefinitionDao(mockDao);
}
/**
* Tests report defintions with overlapping periods. Service method should return true.
*/
public void testIsAnOverlappingReportDefinition_overlappingPeriods1() {
EffortCertificationReportDefinition control = EffortCertificationReportDefinitionFixture.CONTROL_1.createEffortCertificationReportDefinition();
EffortCertificationReportDefinition test = EffortCertificationReportDefinitionFixture.TEST_1_OVERLAP.createEffortCertificationReportDefinition();
control.setUniversityFiscalYear(EffortCertificationTestConstants.EffortCertificationUniversityFiscalYear.YEAR_1999.getUniversityFiscalYear());
testReportDefinitions = new ArrayList<EffortCertificationReportDefinition>();
testReportDefinitions.add(control);
mockDao.setReportDefinitionList(testReportDefinitions);
assertTrue("report definition 'test' is expected to overlap with report definintion 'control'", reportDefinitionService.isAnOverlappingReportDefinition(test));
}
/**
* Tests report defintions without overlapping periods. Service method should return false.
*/
public void testIsAnOverlappingReportDefinition_overlappingPeriods2() {
EffortCertificationReportDefinition control = EffortCertificationReportDefinitionFixture.CONTROL_3.createEffortCertificationReportDefinition();
EffortCertificationReportDefinition test = EffortCertificationReportDefinitionFixture.TEST_3_NO_OVERLAP.createEffortCertificationReportDefinition();
control.setUniversityFiscalYear(EffortCertificationTestConstants.EffortCertificationUniversityFiscalYear.YEAR_1999.getUniversityFiscalYear());
testReportDefinitions = new ArrayList<EffortCertificationReportDefinition>();
testReportDefinitions.add(control);
mockDao.setReportDefinitionList(testReportDefinitions);
assertFalse("report definition 'test' is not expected to overlap with report definintion 'control'", reportDefinitionService.isAnOverlappingReportDefinition(test));
}
/**
* Tests report defintions without overlapping dates. Service method should return false.
*/
public void testIsAnOverlappingReportDefinition_noOverlappingDates() {
EffortCertificationReportDefinition control = EffortCertificationReportDefinitionFixture.CONTROL_2.createEffortCertificationReportDefinition();
EffortCertificationReportDefinition test = EffortCertificationReportDefinitionFixture.TEST_2_NO_OVERLAP.createEffortCertificationReportDefinition();
control.setUniversityFiscalYear(EffortCertificationTestConstants.EffortCertificationUniversityFiscalYear.YEAR_1999.getUniversityFiscalYear());
testReportDefinitions = new ArrayList<EffortCertificationReportDefinition>();
testReportDefinitions.add(control);
mockDao.setReportDefinitionList(testReportDefinitions);
assertFalse("report definition 'test' is not expected to overlap with report definintion 'control'", reportDefinitionService.isAnOverlappingReportDefinition(test));
}
/**
*
* Tests report defintions without overlapping periods. Service method should return false.
*/
public void testIsAnOverlappingReportDefinition_boundry1() {
EffortCertificationReportDefinition control = EffortCertificationReportDefinitionFixture.CONTROL_4.createEffortCertificationReportDefinition();
EffortCertificationReportDefinition test = EffortCertificationReportDefinitionFixture.TEST_4_NO_OVERLAP.createEffortCertificationReportDefinition();
control.setUniversityFiscalYear(EffortCertificationTestConstants.EffortCertificationUniversityFiscalYear.YEAR_1999.getUniversityFiscalYear());
testReportDefinitions = new ArrayList<EffortCertificationReportDefinition>();
testReportDefinitions.add(control);
mockDao.setReportDefinitionList(testReportDefinitions);
assertFalse("report definition 'test' is not expected to overlap with report definintion 'control'", reportDefinitionService.isAnOverlappingReportDefinition(test));
}
/**
*
* Tests report defintions without overlapping periods. Service method should return false.
*/
public void testIsAnOverlappingReportDefinition_boundry2() {
EffortCertificationReportDefinition control = EffortCertificationReportDefinitionFixture.CONTROL_5.createEffortCertificationReportDefinition();
EffortCertificationReportDefinition test = EffortCertificationReportDefinitionFixture.TEST_5_NO_OVERLAP.createEffortCertificationReportDefinition();
control.setUniversityFiscalYear(EffortCertificationTestConstants.EffortCertificationUniversityFiscalYear.YEAR_1999.getUniversityFiscalYear());
testReportDefinitions = new ArrayList<EffortCertificationReportDefinition>();
testReportDefinitions.add(control);
mockDao.setReportDefinitionList(testReportDefinitions);
assertFalse("report definition 'test' is not expected to overlap with report definintion 'control'", reportDefinitionService.isAnOverlappingReportDefinition(test));
}
/**
* Tests report defintions without overlapping periods. Service method should return false.
*/
public void testIsAnOverlappingReportDefinition_boundry3() {
EffortCertificationReportDefinition control = EffortCertificationReportDefinitionFixture.CONTROL_6.createEffortCertificationReportDefinition();
EffortCertificationReportDefinition test = EffortCertificationReportDefinitionFixture.TEST_6_NO_OVERLAP.createEffortCertificationReportDefinition();
control.setUniversityFiscalYear(EffortCertificationTestConstants.EffortCertificationUniversityFiscalYear.YEAR_1999.getUniversityFiscalYear());
testReportDefinitions = new ArrayList<EffortCertificationReportDefinition>();
testReportDefinitions.add(control);
mockDao.setReportDefinitionList(testReportDefinitions);
assertFalse("report definition 'test' is not expected to overlap with report definintion 'control'", reportDefinitionService.isAnOverlappingReportDefinition(test));
}
/**
*
* Tests report definitions with overlapping dates. Service method should return true.
*/
public void testIsAnOverlappingReportDefinition_overlappingDates1() {
EffortCertificationReportDefinition control = EffortCertificationReportDefinitionFixture.CONTROL_7.createEffortCertificationReportDefinition();
EffortCertificationReportDefinition test = EffortCertificationReportDefinitionFixture.TEST_7_OVERLAP.createEffortCertificationReportDefinition();
control.setUniversityFiscalYear(EffortCertificationTestConstants.EffortCertificationUniversityFiscalYear.YEAR_1999.getUniversityFiscalYear());
testReportDefinitions = new ArrayList<EffortCertificationReportDefinition>();
testReportDefinitions.add(control);
mockDao.setReportDefinitionList(testReportDefinitions);
assertTrue("report definition 'test' is expected to overlap with report definintion 'control'", reportDefinitionService.isAnOverlappingReportDefinition(test));
}
/**
* Tests report definitions without overlapping dates. Service method should return false.
*/
public void testIsAnOverlappingReportDefinition_dateBoundry() {
EffortCertificationReportDefinition control = EffortCertificationReportDefinitionFixture.CONTROL_8.createEffortCertificationReportDefinition();
EffortCertificationReportDefinition test = EffortCertificationReportDefinitionFixture.TEST_8_NO_OVERLAP.createEffortCertificationReportDefinition();
control.setUniversityFiscalYear(EffortCertificationTestConstants.EffortCertificationUniversityFiscalYear.YEAR_1999.getUniversityFiscalYear());
testReportDefinitions = new ArrayList<EffortCertificationReportDefinition>();
testReportDefinitions.add(control);
mockDao.setReportDefinitionList(testReportDefinitions);
assertFalse("report definition 'test' is not expected to overlap with report definintion 'control'", reportDefinitionService.isAnOverlappingReportDefinition(test));
}
/**
* Tests multiple report definitions where at least one contains an overlapping period. Service method should return true.
*/
public void testIsAnOverlappingReportDefinition_multipleRecords() {
EffortCertificationReportDefinition control1 = EffortCertificationReportDefinitionFixture.CONTROL_9_1.createEffortCertificationReportDefinition();
EffortCertificationReportDefinition control2 = EffortCertificationReportDefinitionFixture.CONTROL_9_2.createEffortCertificationReportDefinition();
EffortCertificationReportDefinition control3 = EffortCertificationReportDefinitionFixture.CONTROL_9_3.createEffortCertificationReportDefinition();
EffortCertificationReportDefinition test = EffortCertificationReportDefinitionFixture.TEST_9_OVERLAP.createEffortCertificationReportDefinition();
testReportDefinitions = new ArrayList<EffortCertificationReportDefinition>();
control1.setUniversityFiscalYear(EffortCertificationTestConstants.EffortCertificationUniversityFiscalYear.YEAR_1999.getUniversityFiscalYear());
testReportDefinitions.add(control1);
control2.setUniversityFiscalYear(EffortCertificationTestConstants.EffortCertificationUniversityFiscalYear.YEAR_2000.getUniversityFiscalYear());
testReportDefinitions.add(control2);
control3.setUniversityFiscalYear(EffortCertificationTestConstants.EffortCertificationUniversityFiscalYear.YEAR_2001.getUniversityFiscalYear());
testReportDefinitions.add(control3);
mockDao.setReportDefinitionList(testReportDefinitions);
assertTrue("report definition 'test' is expected to be an overlapping record", reportDefinitionService.isAnOverlappingReportDefinition(test));
}
/**
*
* Tests report definition where there are no active records of that type. Service method should return false.
*/
/*public void testIsAnOverlappingReportDefinition_inactiveRecordTest() {
EffortCertificationReportDefinition control = EffortCertificationReportDefinitionFixture.CONTROL_7.createEffortCertificationReportDefinition();
EffortCertificationReportDefinition test = EffortCertificationReportDefinitionFixture.TEST_7_OVERLAP.createEffortCertificationReportDefinition();
control.setUniversityFiscalYear(EffortCertificationTestConstants.EffortCertificationUniversityFiscalYear.YEAR_1999.getUniversityFiscalYear());
control.setActive(false);
testReportDefinitions = new ArrayList<EffortCertificationReportDefinition>();
testReportDefinitions.add(control);
mockDao.setReportDefinitionList(testReportDefinitions);
reportDefinitionService.setEffortCertificationReportDefinitionDao(mockDao);
assertFalse("report definition 'test' is not expected to overlap with report definintion 'control' because 'control' is inactive", reportDefinitionService.isAnOverlappingReportDefinition(test));
}*/
/**
*
* Tests report defintion where no overlapping records exist of its report type. Service method should return false.
*/
/*public void testIsOverlappingReportDefinition_reportTypeTest() {
EffortCertificationReportDefinition control = EffortCertificationReportDefinitionFixture.CONTROL_7.createEffortCertificationReportDefinition();
EffortCertificationReportDefinition test = EffortCertificationReportDefinitionFixture.TEST_7_OVERLAP.createEffortCertificationReportDefinition();
test.setEffortCertificationReportTypeCode(EffortCertificationTestConstants.EffortCertificationReportType.REPORT_TYPE_INVALID.getReportType());
testReportDefinitions = new ArrayList<EffortCertificationReportDefinition>();
testReportDefinitions.add(control);
mockDao.setReportDefinitionList(testReportDefinitions);
reportDefinitionService.setEffortCertificationReportDefinitionDao(mockDao);
assertFalse("report definition 'test' is not expected to overlap with report definintion 'control' because they do not have the same report type", reportDefinitionService.isAnOverlappingReportDefinition(test));
}*/
/**
*
* Tests that the same record is not included in the list of overlapping records (when a record is being updated). Service method should return false
*/
/*public void testIsOverlappingReportDefinition_sameRecordTest() {
EffortCertificationReportDefinition control = EffortCertificationReportDefinitionFixture.CONTROL_7.createEffortCertificationReportDefinition();
EffortCertificationReportDefinition test = EffortCertificationReportDefinitionFixture.TEST_7_OVERLAP.createEffortCertificationReportDefinition();
businessObjectService.save(control);
assertFalse("report definition 'test' is not expected to overlap with report definintion 'control' they are the same record", reportDefinitionService.isAnOverlappingReportDefinition(test));
}*/
}