@Test public void testValidateGeneralRules() { TravelReimbursementDocument document = new TravelReimbursementDocument(); List<ActualExpense> actualExpenses = new ArrayList<ActualExpense>(); ActualExpense airFareEntry = new ActualExpense(); ActualExpense mileageEntry = new ActualExpense(); ExpenseTypeObjectCode aTravelExpenseTypeCode = new ExpenseTypeObjectCode(); document.setActualExpenses(actualExpenses); aTravelExpenseTypeCode.setExpenseTypeCode(AIRFARE_EXPENSE_TYPE_CODE); // Testing expense amount required validation since expense type is not mileage airFareEntry.setTravelExpenseTypeCode(aTravelExpenseTypeCode); airFareEntry.setExpenseDate(dateTimeService.getCurrentSqlDate()); airFareEntry.setExpenseTypeCode(AIRFARE_EXPENSE_TYPE_CODE); assertTrue(validation.validateGeneralRules(airFareEntry, document)); // Testing expense amount required validation since expense type is not mileage airFareEntry.setExpenseAmount(new KualiDecimal(-100)); assertFalse(validation.validateGeneralRules(airFareEntry, document)); // Testing Currency rate required validation airFareEntry.setExpenseAmount(new KualiDecimal(100)); airFareEntry.setCurrencyRate(BigDecimal.ZERO); assertTrue(validation.validateGeneralRules(airFareEntry, document)); // Testing duplicate entry ActualExpense duplicateAirfareEntry = new ActualExpense(); duplicateAirfareEntry.setTravelExpenseTypeCode(aTravelExpenseTypeCode); duplicateAirfareEntry.setExpenseTypeCode(AIRFARE_EXPENSE_TYPE_CODE); duplicateAirfareEntry.setExpenseAmount(new KualiDecimal(100.00)); duplicateAirfareEntry.setExpenseDate(dateTimeService.getCurrentSqlDate()); actualExpenses.add(airFareEntry); assertFalse(validation.validateGeneralRules(duplicateAirfareEntry, document)); // Testing expense amount not required validation when expense type is mileage ExpenseTypeObjectCode mTravelExpenseTypeCode = new ExpenseTypeObjectCode(); mTravelExpenseTypeCode.setExpenseTypeCode(MILEAGE_EXPENSE_TYPE_CODE); mileageEntry.setExpenseAmount(KualiDecimal.ZERO); mileageEntry.setTravelExpenseTypeCode(mTravelExpenseTypeCode); assertTrue(validation.validateGeneralRules(mileageEntry, document)); }