@Override protected void setUp() throws Exception { super.setUp(); validation = new TravelDocumentActualExpenseLineValidation(); dateTimeService = SpringContext.getBean(DateTimeService.class); docService = SpringContext.getBean(DocumentService.class); dictionaryValidationService = SpringContext.getBean(DictionaryValidationService.class); validation.setDictionaryValidationService(dictionaryValidationService); }
@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)); }
/** This method tests validate method */ @Test public void testValidation() { TravelReimbursementDocument tr = null; try { tr = (TravelReimbursementDocument) docService.getNewDocument(TravelReimbursementDocument.class); } catch (WorkflowException e) { throw new RuntimeException(e); } ActualExpense ote2 = new ActualExpense(); ote2.setExpenseAmount(new KualiDecimal(EXPENSE_AMOUNT)); ote2.setExpenseDate(dateTimeService.getCurrentSqlDate()); ote2.setExpenseTypeCode(AIRFARE_EXPENSE_TYPE_CODE); // tr.addActualExpense(ote2); AddActualExpenseLineEvent event2 = new AddActualExpenseLineEvent("errorPathPrefix", tr, ote2); validation.setActualExpenseForValidation(ote2); assertTrue(validation.validate(event2)); }