/*
* 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.cam.document.service;
import static org.kuali.kfs.sys.fixture.UserNameFixture.khuntley;
import java.util.HashMap;
import java.util.Map;
import org.kuali.kfs.module.cam.CamsPropertyConstants;
import org.kuali.kfs.module.cam.businessobject.AssetGlobalDetail;
import org.kuali.kfs.module.cam.businessobject.AssetType;
import org.kuali.kfs.module.cam.document.service.AssetLocationService.LocationField;
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.util.GlobalVariables;
@ConfigureContext(session = khuntley)
public class AssetLocationServiceTest extends KualiTestBase {
private AssetLocationService assetLocationService;
private AssetGlobalDetail onCampusObject;
private AssetGlobalDetail offcampusObject;
private static final Map<LocationField, String> fieldMap = new HashMap<LocationField, String>();
static {
fieldMap.put(LocationField.CAMPUS_CODE, CamsPropertyConstants.AssetGlobalDetail.CAMPUS_CODE);
fieldMap.put(LocationField.BUILDING_CODE, CamsPropertyConstants.AssetGlobalDetail.BUILDING_CODE);
fieldMap.put(LocationField.ROOM_NUMBER, CamsPropertyConstants.AssetGlobalDetail.BUILDING_ROOM_NUMBER);
fieldMap.put(LocationField.SUB_ROOM_NUMBER, CamsPropertyConstants.AssetGlobalDetail.BUILDING_SUB_ROOM_NUMBER);
fieldMap.put(LocationField.CONTACT_NAME, CamsPropertyConstants.AssetGlobalDetail.OFF_CAMPUS_NAME);
fieldMap.put(LocationField.STREET_ADDRESS, CamsPropertyConstants.AssetGlobalDetail.OFF_CAMPUS_ADDRESS);
fieldMap.put(LocationField.CITY_NAME, CamsPropertyConstants.AssetGlobalDetail.OFF_CAMPUS_CITY_NAME);
fieldMap.put(LocationField.STATE_CODE, CamsPropertyConstants.AssetGlobalDetail.OFF_CAMPUS_STATE_CODE);
fieldMap.put(LocationField.ZIP_CODE, CamsPropertyConstants.AssetGlobalDetail.OFF_CAMPUS_ZIP_CODE);
fieldMap.put(LocationField.COUNTRY_CODE, CamsPropertyConstants.AssetGlobalDetail.OFF_CAMPUS_COUNTRY_CODE);
}
@Override
protected void setUp() throws Exception {
super.setUp();
this.assetLocationService = SpringContext.getBean(AssetLocationService.class);
onCampusObject = new AssetGlobalDetail();
onCampusObject.setCampusCode("BL");
onCampusObject.setBuildingCode("BL001");
onCampusObject.setBuildingRoomNumber("B009");
onCampusObject.setBuildingSubRoomNumber("23");
offcampusObject = new AssetGlobalDetail();
offcampusObject.setOffCampusName("eddsdsd");
offcampusObject.setOffCampusAddress("Addreed");
offcampusObject.setOffCampusCityName("City");
offcampusObject.setOffCampusStateCode("IN");
offcampusObject.setOffCampusZipCode("47401");
offcampusObject.setOffCampusCountryCode("US");
}
public void testValidateLocation_OnCampus() throws Exception {
AssetType assetType = new AssetType();
assetType.setMovingIndicator(true);
// when conditions are valid
this.assetLocationService.validateLocation(fieldMap, onCampusObject, true, assetType);
assertFalse(GlobalVariables.getMessageMap().hasErrors());
GlobalVariables.getMessageMap().clearErrorMessages();
// when building code is null
onCampusObject.setBuildingCode(null);
this.assetLocationService.validateLocation(fieldMap, onCampusObject, true, assetType);
assertTrue(GlobalVariables.getMessageMap().hasErrors());
GlobalVariables.getMessageMap().clearErrorMessages();
// when room number is null
onCampusObject.setBuildingCode("BL001");
onCampusObject.setBuildingRoomNumber(null);
this.assetLocationService.validateLocation(fieldMap, onCampusObject, true, assetType);
assertTrue(GlobalVariables.getMessageMap().hasErrors());
GlobalVariables.getMessageMap().clearErrorMessages();
// when sub room number is optional
onCampusObject.setBuildingRoomNumber("B034F");
onCampusObject.setBuildingSubRoomNumber(null);
this.assetLocationService.validateLocation(fieldMap, onCampusObject, true, assetType);
assertFalse(GlobalVariables.getMessageMap().hasErrors());
GlobalVariables.getMessageMap().clearErrorMessages();
// test condition when building required indicator is true
assetType.setMovingIndicator(false);
assetType.setRequiredBuildingIndicator(true);
onCampusObject.setBuildingRoomNumber(null);
onCampusObject.setBuildingSubRoomNumber(null);
this.assetLocationService.validateLocation(fieldMap, onCampusObject, true, assetType);
assertFalse(GlobalVariables.getMessageMap().hasErrors());
GlobalVariables.getMessageMap().clearErrorMessages();
// when building code is null
onCampusObject.setBuildingCode(null);
this.assetLocationService.validateLocation(fieldMap, onCampusObject, true, assetType);
assertTrue(GlobalVariables.getMessageMap().hasErrors());
GlobalVariables.getMessageMap().clearErrorMessages();
// when room number is not null
onCampusObject.setBuildingCode("BL001");
onCampusObject.setBuildingRoomNumber("YYGBJGJH");
this.assetLocationService.validateLocation(fieldMap, onCampusObject, true, assetType);
assertTrue(GlobalVariables.getMessageMap().hasErrors());
GlobalVariables.getMessageMap().clearErrorMessages();
// when sub room number is not null
onCampusObject.setBuildingRoomNumber(null);
onCampusObject.setBuildingSubRoomNumber("HGBJHNGBJH");
this.assetLocationService.validateLocation(fieldMap, onCampusObject, true, assetType);
assertTrue(GlobalVariables.getMessageMap().hasErrors());
GlobalVariables.getMessageMap().clearErrorMessages();
}
public void testValidateLocation_OffCampus() throws Exception {
AssetType assetType = new AssetType();
assetType.setMovingIndicator(false);
assetType.setRequiredBuildingIndicator(false);
// when conditions are valid
this.assetLocationService.validateLocation(fieldMap, offcampusObject, true, assetType);
assertFalse(GlobalVariables.getMessageMap().hasErrors());
GlobalVariables.getMessageMap().clearErrorMessages();
// when contact name is null
this.offcampusObject.setOffCampusName(null);
this.assetLocationService.validateLocation(fieldMap, offcampusObject, true, assetType);
assertTrue(GlobalVariables.getMessageMap().hasErrors());
GlobalVariables.getMessageMap().clearErrorMessages();
// when street address is null
this.offcampusObject.setOffCampusName("me");
this.offcampusObject.setOffCampusAddress(null);
this.assetLocationService.validateLocation(fieldMap, offcampusObject, true, assetType);
assertTrue(GlobalVariables.getMessageMap().hasErrors());
GlobalVariables.getMessageMap().clearErrorMessages();
// when city name is null
this.offcampusObject.setOffCampusAddress("Street");
this.offcampusObject.setOffCampusCityName(null);
this.assetLocationService.validateLocation(fieldMap, offcampusObject, true, assetType);
assertTrue(GlobalVariables.getMessageMap().hasErrors());
GlobalVariables.getMessageMap().clearErrorMessages();
// when state code is null
this.offcampusObject.setOffCampusCityName("City");
this.offcampusObject.setOffCampusStateCode(null);
this.assetLocationService.validateLocation(fieldMap, offcampusObject, true, assetType);
assertTrue(GlobalVariables.getMessageMap().hasErrors());
GlobalVariables.getMessageMap().clearErrorMessages();
// when zip code is null
this.offcampusObject.setOffCampusStateCode("MI");
this.offcampusObject.setOffCampusZipCode(null);
this.assetLocationService.validateLocation(fieldMap, offcampusObject, true, assetType);
assertTrue(GlobalVariables.getMessageMap().hasErrors());
GlobalVariables.getMessageMap().clearErrorMessages();
// when country code is null
this.offcampusObject.setOffCampusZipCode("34343");
this.offcampusObject.setOffCampusCountryCode(null);
this.assetLocationService.validateLocation(fieldMap, offcampusObject, true, assetType);
assertTrue(GlobalVariables.getMessageMap().hasErrors());
GlobalVariables.getMessageMap().clearErrorMessages();
}
public void testValidateLocation_CapitalAsset() throws Exception {
// when asset type is not defined
AssetType assetType = null;
this.assetLocationService.validateLocation(fieldMap, onCampusObject, true, assetType);
assertTrue(GlobalVariables.getMessageMap().hasErrors());
GlobalVariables.getMessageMap().clearErrorMessages();
// required building and offcampus
assetType = new AssetType();
assetType.setRequiredBuildingIndicator(true);
assetType.setMovingIndicator(false);
this.assetLocationService.validateLocation(fieldMap, offcampusObject, true, assetType);
assertTrue(GlobalVariables.getMessageMap().hasErrors());
GlobalVariables.getMessageMap().clearErrorMessages();
// req bldg and moving indicators value false, oncampus not allowed
assetType.setRequiredBuildingIndicator(false);
assetType.setMovingIndicator(false);
this.assetLocationService.validateLocation(fieldMap, onCampusObject, true, assetType);
assertTrue(GlobalVariables.getMessageMap().hasErrors());
GlobalVariables.getMessageMap().clearErrorMessages();
// when no information is available for capital asset
assetType.setRequiredBuildingIndicator(true);
AssetGlobalDetail blankObject = new AssetGlobalDetail();
this.assetLocationService.validateLocation(fieldMap, blankObject, true, assetType);
assertTrue(GlobalVariables.getMessageMap().hasErrors());
GlobalVariables.getMessageMap().clearErrorMessages();
// when both are available
this.onCampusObject.setOffCampusAddress("Street");
this.assetLocationService.validateLocation(fieldMap, onCampusObject, true, assetType);
assertTrue(GlobalVariables.getMessageMap().hasErrors());
GlobalVariables.getMessageMap().clearErrorMessages();
}
public void testValidateLocation_NonCapitalAsset() throws Exception {
// when no information is available for capital asset
AssetGlobalDetail blankObject = new AssetGlobalDetail();
this.assetLocationService.validateLocation(fieldMap, blankObject, false, null);
assertFalse(GlobalVariables.getMessageMap().hasErrors());
GlobalVariables.getMessageMap().clearErrorMessages();
// when on-campus, all fields are optional
this.onCampusObject.setBuildingCode(null);
this.assetLocationService.validateLocation(fieldMap, onCampusObject, false, null);
assertFalse(GlobalVariables.getMessageMap().hasErrors());
GlobalVariables.getMessageMap().clearErrorMessages();
// when off-campus, validate location
this.assetLocationService.validateLocation(fieldMap, offcampusObject, false, null);
assertFalse(GlobalVariables.getMessageMap().hasErrors());
GlobalVariables.getMessageMap().clearErrorMessages();
// when off-campus, validate location
this.offcampusObject.setOffCampusCountryCode(null);
this.assetLocationService.validateLocation(fieldMap, offcampusObject, false, null);
assertTrue(GlobalVariables.getMessageMap().hasErrors());
GlobalVariables.getMessageMap().clearErrorMessages();
}
}