001 /**
002 * Copyright 2005-2013 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package edu.sampleu.travel.dataobject;
017
018 import edu.sampleu.travel.options.PostalCountryCode;
019 import edu.sampleu.travel.options.PostalStateCode;
020 import org.junit.Test;
021 import org.kuali.rice.krad.UserSession;
022 import org.kuali.rice.krad.data.PersistenceOption;
023 import org.kuali.rice.krad.document.Document;
024 import org.kuali.rice.krad.service.KRADServiceLocator;
025 import org.kuali.rice.krad.service.KRADServiceLocatorWeb;
026 import org.kuali.rice.krad.test.KRADTestCase;
027 import org.kuali.rice.krad.util.GlobalVariables;
028 import org.kuali.rice.krad.util.MessageMap;
029 import org.kuali.rice.test.BaselineTestCase;
030
031 import java.math.BigDecimal;
032 import java.text.SimpleDateFormat;
033
034 import static org.junit.Assert.assertEquals;
035 import static org.junit.Assert.assertNotNull;
036 import static org.junit.Assert.assertTrue;
037
038 /**
039 * Tests basic {@code TravelPerDiemExpense} persistence.
040 *
041 * @author Kuali Rice Team (rice.collab@kuali.org)
042 */
043 @BaselineTestCase.BaselineMode(BaselineTestCase.Mode.ROLLBACK_CLEAR_DB)
044 public class TravelPerDiemExpenseTest extends KRADTestCase {
045
046 private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
047
048 private static String DOCUMENT_NUMBER;
049 private static final String DOCUMENT_DESCRIPTION = "Test Travel Authorization Document";
050 private static final String CELL_PHONE_NUMBER = "555-555-5555";
051
052 private static String TRAVEL_DESTINATION_ID;
053 private static final String DESTINATION_NAME = PostalStateCode.CA.getLabel();
054 private static final String COUNTRY_CODE = PostalCountryCode.US.getCode();
055 private static final String STATE_CODE = PostalStateCode.CA.getCode();
056
057 private static String MILEAGE_RATE_ID;
058 private static final String MILEAGE_RATE_CODE = "DO";
059 private static final String MILEAGE_RATE_NAME = "Domestic";
060 private static final BigDecimal MILEAGE_RATE = new BigDecimal("30");
061
062 private static final String PER_DIEM_DATE = "2010-01-01";
063 private static final BigDecimal BREAKFAST_VALUE = new BigDecimal("15.00");
064 private static final BigDecimal LUNCH_VALUE = new BigDecimal("30.00");
065 private static final BigDecimal DINNER_VALUE = new BigDecimal("45.00");
066 private static final BigDecimal INCIDENTALS_VALUE = new BigDecimal("15.00");
067 private static final BigDecimal ESTIMATED_MILEAGE = new BigDecimal("50");
068
069 @Override
070 public void setUp() throws Exception {
071 super.setUp();
072 GlobalVariables.setMessageMap(new MessageMap());
073 GlobalVariables.setUserSession(new UserSession("admin"));
074
075 TravelDestination newTravelDestination = new TravelDestination();
076 newTravelDestination.setTravelDestinationName(DESTINATION_NAME);
077 newTravelDestination.setCountryCd(COUNTRY_CODE);
078 newTravelDestination.setStateCd(STATE_CODE);
079 TRAVEL_DESTINATION_ID = KRADServiceLocator.getDataObjectService().save(
080 newTravelDestination, PersistenceOption.FLUSH).getTravelDestinationId();
081
082 TravelMileageRate newTravelMileageRate = new TravelMileageRate();
083 newTravelMileageRate.setMileageRateCd(MILEAGE_RATE_CODE);
084 newTravelMileageRate.setMileageRateName(MILEAGE_RATE_NAME);
085 newTravelMileageRate.setMileageRate(MILEAGE_RATE);
086 MILEAGE_RATE_ID = KRADServiceLocator.getDataObjectService().save(
087 newTravelMileageRate, PersistenceOption.FLUSH).getMileageRateId();
088
089 Document newDocument = KRADServiceLocatorWeb.getDocumentService().getNewDocument(TravelAuthorizationDocument.class);
090 newDocument.getDocumentHeader().setDocumentDescription(DOCUMENT_DESCRIPTION);
091 TravelAuthorizationDocument newTravelAuthorizationDocument = (TravelAuthorizationDocument) newDocument;
092 newTravelAuthorizationDocument.setCellPhoneNumber(CELL_PHONE_NUMBER);
093 newTravelAuthorizationDocument.setTripDestinationId(TRAVEL_DESTINATION_ID);
094 DOCUMENT_NUMBER = KRADServiceLocatorWeb.getDocumentService().saveDocument(
095 newTravelAuthorizationDocument).getDocumentNumber();
096 }
097
098 @Override
099 public void tearDown() throws Exception {
100 GlobalVariables.setMessageMap(new MessageMap());
101 GlobalVariables.setUserSession(null);
102 super.tearDown();
103 }
104
105 /**
106 * Tests basic {@code TravelPerDiemExpense} persistence by saving it, reloading it, and checking the data.
107 *
108 * @throws java.lang.Exception for any exceptions occurring during creation
109 */
110 @Test
111 public void testTravelPerDiemExpense() throws Exception {
112 assertTrue(TravelPerDiemExpense.class.getName() + " is not mapped in JPA",
113 KRADServiceLocator.getDataObjectService().supports(TravelPerDiemExpense.class));
114
115 String id = createTravelPerDiemExpense();
116
117 TravelPerDiemExpense travelPerDiemExpense = KRADServiceLocator.getDataObjectService().find(TravelPerDiemExpense.class, id);
118
119 assertNotNull("Travel Per Diem Expense ID is null", travelPerDiemExpense.getTravelPerDiemExpenseId());
120 assertEquals("Travel Per Diem Expense document ID is incorrect", DOCUMENT_NUMBER, travelPerDiemExpense.getTravelAuthorizationDocumentId());
121 assertEquals("Travel Per Diem Expense destination ID is incorrect", TRAVEL_DESTINATION_ID, travelPerDiemExpense.getTravelDestinationId());
122 assertEquals("Travel Per Diem Expense date is incorrect", DATE_FORMAT.parse(PER_DIEM_DATE), travelPerDiemExpense.getPerDiemDate());
123 assertEquals("Travel Per Diem Expense breakfast value is incorrect", BREAKFAST_VALUE, travelPerDiemExpense.getBreakfastValue());
124 assertEquals("Travel Per Diem Expense lunch value is incorrect", LUNCH_VALUE, travelPerDiemExpense.getLunchValue());
125 assertEquals("Travel Per Diem Expense dinner value is incorrect", DINNER_VALUE, travelPerDiemExpense.getDinnerValue());
126 assertEquals("Travel Per Diem Expense incidentals value is incorrect", INCIDENTALS_VALUE, travelPerDiemExpense.getIncidentalsValue());
127 assertEquals("Travel Per Diem Expense mileage rate ID is incorrect", MILEAGE_RATE_ID, travelPerDiemExpense.getMileageRateId());
128 assertEquals("Travel Per Diem Expense estimated mileage is incorrect", ESTIMATED_MILEAGE, travelPerDiemExpense.getEstimatedMileage());
129 }
130
131 private String createTravelPerDiemExpense() throws Exception {
132 TravelPerDiemExpense travelPerDiemExpense = new TravelPerDiemExpense();
133 travelPerDiemExpense.setTravelAuthorizationDocumentId(DOCUMENT_NUMBER);
134 travelPerDiemExpense.setTravelDestinationId(TRAVEL_DESTINATION_ID);
135 travelPerDiemExpense.setPerDiemDate(DATE_FORMAT.parse(PER_DIEM_DATE));
136 travelPerDiemExpense.setBreakfastValue(BREAKFAST_VALUE);
137 travelPerDiemExpense.setLunchValue(LUNCH_VALUE);
138 travelPerDiemExpense.setDinnerValue(DINNER_VALUE);
139 travelPerDiemExpense.setIncidentalsValue(INCIDENTALS_VALUE);
140 travelPerDiemExpense.setMileageRateId(MILEAGE_RATE_ID);
141 travelPerDiemExpense.setEstimatedMileage(ESTIMATED_MILEAGE);
142
143 return KRADServiceLocator.getDataObjectService().save(travelPerDiemExpense, PersistenceOption.FLUSH).getTravelPerDiemExpenseId();
144 }
145 }