@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));
  }