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.ExpenseType;
019 import edu.sampleu.travel.options.PostalCountryCode;
020 import edu.sampleu.travel.options.PostalStateCode;
021 import org.junit.Test;
022 import org.kuali.rice.krad.UserSession;
023 import org.kuali.rice.krad.data.PersistenceOption;
024 import org.kuali.rice.krad.document.Document;
025 import org.kuali.rice.krad.service.KRADServiceLocator;
026 import org.kuali.rice.krad.service.KRADServiceLocatorWeb;
027 import org.kuali.rice.krad.test.KRADTestCase;
028 import org.kuali.rice.krad.util.GlobalVariables;
029 import org.kuali.rice.krad.util.MessageMap;
030 import org.kuali.rice.test.BaselineTestCase;
031
032 import java.math.BigDecimal;
033 import java.text.SimpleDateFormat;
034
035 import static org.junit.Assert.assertEquals;
036 import static org.junit.Assert.assertFalse;
037 import static org.junit.Assert.assertNotNull;
038 import static org.junit.Assert.assertTrue;
039
040 /**
041 * Tests basic {@code TravelExpenseItem} persistence.
042 *
043 * @author Kuali Rice Team (rice.collab@kuali.org)
044 */
045 @BaselineTestCase.BaselineMode(BaselineTestCase.Mode.ROLLBACK_CLEAR_DB)
046 public class TravelExpenseItemTest extends KRADTestCase {
047
048 private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
049
050 private static String DOCUMENT_NUMBER;
051 private static final String DOCUMENT_DESCRIPTION = "Test Travel Authorization Document";
052 private static final String CELL_PHONE_NUMBER = "555-555-5555";
053
054 private static String TRAVEL_DESTINATION_ID;
055 private static final String TRAVEL_COMPANY_NAME = "Zorba's Travel";
056 private static final String DESTINATION_NAME = PostalStateCode.CA.getLabel();
057 private static final String COUNTRY_CODE = PostalCountryCode.US.getCode();
058 private static final String STATE_CODE = PostalStateCode.CA.getCode();
059
060 private static final String EXPENSE_TYPE = ExpenseType.A.getCode();
061 private static final String EXPENSE_DESCRIPTION = ExpenseType.A.getLabel();
062 private static final String EXPENSE_DATE = "2010-01-01";
063 private static final BigDecimal EXPENSE_AMOUNT = new BigDecimal("1236.49");
064
065 @Override
066 public void setUp() throws Exception {
067 super.setUp();
068 GlobalVariables.setMessageMap(new MessageMap());
069 GlobalVariables.setUserSession(new UserSession("admin"));
070
071 TravelDestination newTravelDestination = new TravelDestination();
072 newTravelDestination.setTravelDestinationName(DESTINATION_NAME);
073 newTravelDestination.setCountryCd(COUNTRY_CODE);
074 newTravelDestination.setStateCd(STATE_CODE);
075 TRAVEL_DESTINATION_ID = KRADServiceLocator.getDataObjectService().save(
076 newTravelDestination, PersistenceOption.FLUSH).getTravelDestinationId();
077
078 Document newDocument = KRADServiceLocatorWeb.getDocumentService().getNewDocument(TravelAuthorizationDocument.class);
079 newDocument.getDocumentHeader().setDocumentDescription(DOCUMENT_DESCRIPTION);
080 TravelAuthorizationDocument newTravelAuthorizationDocument = (TravelAuthorizationDocument) newDocument;
081 newTravelAuthorizationDocument.setCellPhoneNumber(CELL_PHONE_NUMBER);
082 newTravelAuthorizationDocument.setTripDestinationId(TRAVEL_DESTINATION_ID);
083 DOCUMENT_NUMBER = KRADServiceLocatorWeb.getDocumentService().saveDocument(
084 newTravelAuthorizationDocument).getDocumentNumber();
085 }
086
087 @Override
088 public void tearDown() throws Exception {
089 GlobalVariables.setMessageMap(new MessageMap());
090 GlobalVariables.setUserSession(null);
091 super.tearDown();
092 }
093
094 /**
095 * Tests basic {@code TravelExpenseItem} persistence by saving it, reloading it, and checking the data.
096 *
097 * @throws java.lang.Exception for any exceptions occurring during creation
098 */
099 @Test
100 public void testTravelExpenseItem() throws Exception {
101 assertTrue(TravelExpenseItem.class.getName() + " is not mapped in JPA",
102 KRADServiceLocator.getDataObjectService().supports(TravelExpenseItem.class));
103
104 String id = createTravelExpenseItem();
105
106 TravelExpenseItem travelExpenseItem = KRADServiceLocator.getDataObjectService().find(TravelExpenseItem.class, id);
107 assertNotNull("Travel Expense Item ID is null", travelExpenseItem.getTravelExpenseItemId());
108 assertEquals("Travel Expense Item document ID is incorrect", DOCUMENT_NUMBER, travelExpenseItem.getTravelAuthorizationDocumentId());
109 assertEquals("Travel Expense Item type is incorrect", EXPENSE_TYPE, travelExpenseItem.getTravelExpenseTypeCd());
110 assertEquals("Travel Company name is incorrect", TRAVEL_COMPANY_NAME, travelExpenseItem.getTravelCompanyName());
111 assertEquals("Travel Expense Item description is incorrect", EXPENSE_DESCRIPTION, travelExpenseItem.getExpenseDesc());
112 assertEquals("Travel Expense Item date is incorrect", DATE_FORMAT.parse(EXPENSE_DATE), travelExpenseItem.getExpenseDate());
113 assertEquals("Travel Expense Item amount is incorrect", EXPENSE_AMOUNT, travelExpenseItem.getExpenseAmount());
114 assertTrue("Travel Expense Item is not reimbursable", travelExpenseItem.isReimbursable());
115 assertFalse("Travel Expense Item is taxable", travelExpenseItem.isTaxable());
116 }
117
118 private String createTravelExpenseItem() throws Exception {
119 TravelExpenseItem travelExpenseItem = new TravelExpenseItem();
120 travelExpenseItem.setTravelAuthorizationDocumentId(DOCUMENT_NUMBER);
121 travelExpenseItem.setTravelExpenseTypeCd(EXPENSE_TYPE);
122 travelExpenseItem.setExpenseDesc(EXPENSE_DESCRIPTION);
123 travelExpenseItem.setTravelCompanyName(TRAVEL_COMPANY_NAME);
124 travelExpenseItem.setExpenseDate(DATE_FORMAT.parse(EXPENSE_DATE));
125 travelExpenseItem.setExpenseAmount(EXPENSE_AMOUNT);
126 travelExpenseItem.setReimbursable(true);
127 travelExpenseItem.setTaxable(false);
128
129 return KRADServiceLocator.getDataObjectService().save(travelExpenseItem, PersistenceOption.FLUSH).getTravelExpenseItemId();
130 }
131 }