@Test public void shouldAllowPeriodicFeeForNonVariableInstallmentLoanProduct() { String PERIODIC_FEE_2 = "2"; String NON_PERIODIC_FEE = "3"; final FeeDto feeDto = Mockito.mock(FeeDto.class); loanPrdActionForm = new LoanPrdActionForm() { @Override FeeDto getFeeDto( @SuppressWarnings("unused") HttpServletRequest request, @SuppressWarnings("unused") FeeBO fee) { return feeDto; } }; FeeFrequencyEntity feeFrequencyEntity = Mockito.mock(FeeFrequencyEntity.class); MeetingBO meetingBo = Mockito.mock(MeetingBO.class); MeetingDetailsEntity meetingDetailsEntity = Mockito.mock(MeetingDetailsEntity.class); when(periodicFeeRate.isPeriodic()).thenReturn(true); when(periodicFeeRate.getFeeType()).thenReturn(RateAmountFlag.RATE); when(periodicFeeRate.getFeeId()).thenReturn(Short.valueOf(PERIODIC_FEE_2)); when(periodicFeeRate.getFeeName()).thenReturn("periodic fee2"); when((periodicFeeRate).getFeeFormula()).thenReturn(feeFormulaEntity); when(feeFormulaEntity.getFeeFormula()).thenReturn(FeeFormula.INTEREST); when(periodicFeeRate.getFeeFrequency()).thenReturn(feeFrequencyEntity); when(nonPeriodicFeeRate.isPeriodic()).thenReturn(false); when(nonPeriodicFeeRate.getFeeType()).thenReturn(RateAmountFlag.RATE); when(nonPeriodicFeeRate.getFeeId()).thenReturn(Short.valueOf(NON_PERIODIC_FEE)); when(nonPeriodicFeeRate.getFeeName()).thenReturn("non Periodic fee"); when(((RateFeeBO) nonPeriodicFeeRate).getFeeFormula()).thenReturn(feeFormulaEntity); when(feeFormulaEntity.getFeeFormula()).thenReturn(FeeFormula.INTEREST); List<FeeBO> allPrdFees = new ArrayList<FeeBO>(); allPrdFees.add(periodicFeeRate); allPrdFees.add(nonPeriodicFeeRate); when(request.getAttribute(Constants.CURRENTFLOWKEY)).thenReturn(FLOW_KEY); when(request.getSession()).thenReturn(session); when(session.getAttribute(Constants.FLOWMANAGER)).thenReturn(flowManager); when(session.getAttribute(ProductDefinitionConstants.LOANPRDFEE)).thenReturn(allPrdFees); Flow flow = new Flow(); try { when(flowManager.getFromFlow(Mockito.anyString(), Mockito.anyString())) .thenReturn(allPrdFees); when(flowManager.getFlowWithValidation(FLOW_KEY)).thenReturn(flow); } catch (PageExpiredException e) { // TODO Auto-generated catch block e.printStackTrace(); } loanPrdActionForm.setCanConfigureVariableInstallments(false); loanPrdActionForm.setPrdOfferinFees(new String[] {PERIODIC_FEE_2, NON_PERIODIC_FEE}); loanPrdActionForm.validateSelectedFeeForVariableInstallment(request, errors); Mockito.verifyZeroInteractions(errors); }
@Test public void shouldSetSelectedQuestionGroupsOnSession() throws PageExpiredException { when(request.getAttribute(Constants.CURRENTFLOWKEY)).thenReturn(FLOW_KEY); when(request.getSession()).thenReturn(session); when(session.getAttribute(Constants.FLOWMANAGER)).thenReturn(flowManager); Flow flow = new Flow(); when(flowManager.getFlowWithValidation(FLOW_KEY)).thenReturn(flow); List<QuestionGroupDetail> questionGroupDetails = asList( getQuestionGroupDetail(1, "QG1"), getQuestionGroupDetail(2, "QG2"), getQuestionGroupDetail(3, "QG3"), getQuestionGroupDetail(4, "QG4")); when(flowManager.getFromFlow(FLOW_KEY, ProductDefinitionConstants.SRCQGLIST)) .thenReturn(questionGroupDetails); loanPrdActionForm.setLoanOfferingQGs(new String[] {"1", "4"}); loanPrdActionForm.setSelectedQuestionGroups(request); List<QuestionGroupDetail> selectedQGDetails = (List<QuestionGroupDetail>) flow.getObjectFromSession(ProductDefinitionConstants.SELECTEDQGLIST); assertThat(selectedQGDetails, is(notNullValue())); assertThat(selectedQGDetails.get(0).getId(), is(1)); assertThat(selectedQGDetails.get(0).getTitle(), is("QG1")); assertThat(selectedQGDetails.get(1).getId(), is(4)); assertThat(selectedQGDetails.get(1).getTitle(), is("QG4")); }
@Test public void shouldSetSelectedQuestionGroupsOnSession() throws PageExpiredException { List<QuestionGroupDetail> questionGroupDetails = asList( getQuestionGroupDetail(1, "QG1", true), getQuestionGroupDetail(2, "QG2", true), getQuestionGroupDetail(3, "QG3", false)); when(questionnaireServiceFacade.getQuestionGroupDetail(1)) .thenReturn(questionGroupDetails.get(0)); when(questionnaireServiceFacade.getQuestionGroupDetail(2)) .thenReturn(questionGroupDetails.get(1)); when(questionnaireServiceFacade.getQuestionGroupDetail(3)) .thenReturn(questionGroupDetails.get(2)); when(request.getAttribute(Constants.CURRENTFLOWKEY)).thenReturn(FLOW_KEY); when(request.getSession()).thenReturn(session); when(session.getAttribute(Constants.FLOWMANAGER)).thenReturn(flowManager); Flow flow = new Flow(); when(flowManager.getFlowWithValidation(FLOW_KEY)).thenReturn(flow); LoanOfferingBO loanOfferingBO = new LoanProductBuilder().buildForUnitTests(); loanOfferingBO.setQuestionGroups(getQustionGroups(1, 2, 3)); loanPrdAction.setSelectedQuestionGroupsOnSession( request, loanOfferingBO, questionnaireServiceFacade); List<QuestionGroupDetail> questionGroupDetailList = (List<QuestionGroupDetail>) flow.getObjectFromSession(ProductDefinitionConstants.SELECTEDQGLIST); assertThat(questionGroupDetailList, is(notNullValue())); assertThat(questionGroupDetailList.size(), is(2)); assertQuestionGroup(questionGroupDetailList.get(0), 1, "QG1"); assertQuestionGroup(questionGroupDetailList.get(1), 2, "QG2"); verify(questionnaireServiceFacade, times(3)).getQuestionGroupDetail(anyInt()); verify(request, times(1)).getAttribute(Constants.CURRENTFLOWKEY); verify(request, times(1)).getSession(); verify(session, times(1)).getAttribute(Constants.FLOWMANAGER); }
@Test public void shouldGetQuestionGroupResponses() throws PageExpiredException { when(request.getAttribute(Constants.CURRENTFLOWKEY)).thenReturn(FLOW_KEY); when(request.getSession()).thenReturn(session); when(session.getAttribute(Constants.FLOWMANAGER)).thenReturn(flowManager); List<QuestionGroupDetail> questionGroupDetails = asList( getQuestionGroupDetail(1, "QG1", true), getQuestionGroupDetail(2, "QG2", true), getQuestionGroupDetail(3, "QG3", true)); when(flowManager.getFromFlow(FLOW_KEY, ProductDefinitionConstants.SELECTEDQGLIST)) .thenReturn(questionGroupDetails); Set<QuestionGroupReference> questionGroupReferences = loanPrdAction.getQuestionGroups(request); assertThat(questionGroupReferences, is(notNullValue())); assertThat(questionGroupReferences.size(), is(3)); QuestionGroupReference[] qgReferences = questionGroupReferences.toArray(new QuestionGroupReference[questionGroupReferences.size()]); assertThat(qgReferences[0].getQuestionGroupId(), is(1)); assertThat(qgReferences[1].getQuestionGroupId(), is(2)); assertThat(qgReferences[2].getQuestionGroupId(), is(3)); verify(request, times(1)).getAttribute(Constants.CURRENTFLOWKEY); verify(request, times(1)).getSession(); verify(session, times(1)).getAttribute(Constants.FLOWMANAGER); verify(flowManager, times(1)).getFromFlow(FLOW_KEY, ProductDefinitionConstants.SELECTEDQGLIST); }
@Test public void shouldNotAllowPeriodicFeeForVariableInstallmentLoanProduct() { String PERIODIC_FEE_2 = "2"; String NON_PERIODIC_FEE = "3"; when(periodicFeeRate.isPeriodic()).thenReturn(true); when(periodicFeeRate.getFeeType()).thenReturn(RateAmountFlag.RATE); when(periodicFeeRate.getFeeId()).thenReturn(Short.valueOf(PERIODIC_FEE_2)); when(periodicFeeRate.getFeeName()).thenReturn("periodic fee2"); when(nonPeriodicFeeRate.isPeriodic()).thenReturn(false); when(nonPeriodicFeeRate.getFeeType()).thenReturn(RateAmountFlag.RATE); when(nonPeriodicFeeRate.getFeeId()).thenReturn(Short.valueOf(NON_PERIODIC_FEE)); when(nonPeriodicFeeRate.getFeeName()).thenReturn("non Periodic fee"); when(((RateFeeBO) nonPeriodicFeeRate).getFeeFormula()).thenReturn(feeFormulaEntity); when(feeFormulaEntity.getFeeFormula()).thenReturn(FeeFormula.INTEREST); List<FeeBO> allPrdFees = new ArrayList<FeeBO>(); allPrdFees.add(periodicFeeRate); allPrdFees.add(nonPeriodicFeeRate); when(request.getAttribute(Constants.CURRENTFLOWKEY)).thenReturn(FLOW_KEY); when(request.getSession()).thenReturn(session); when(session.getAttribute(Constants.FLOWMANAGER)).thenReturn(flowManager); when(session.getAttribute(ProductDefinitionConstants.LOANPRDFEE)).thenReturn(allPrdFees); Flow flow = new Flow(); try { when(flowManager.getFromFlow(Mockito.anyString(), Mockito.anyString())) .thenReturn(allPrdFees); when(flowManager.getFlowWithValidation(FLOW_KEY)).thenReturn(flow); } catch (PageExpiredException e) { // TODO Auto-generated catch block e.printStackTrace(); } ActionMessageMatcher actionMessageMatcher = new ActionMessageMatcher(ProductDefinitionConstants.PERIODIC_FEE_NOT_APPLICABLE); loanPrdActionForm.setCanConfigureVariableInstallments(true); loanPrdActionForm.setPrdOfferinFees(new String[] {PERIODIC_FEE_2, NON_PERIODIC_FEE}); loanPrdActionForm.validateSelectedFeeForVariableInstallment(request, errors); Mockito.verify(errors, Mockito.times(1)) .add(Mockito.anyString(), Mockito.argThat(actionMessageMatcher)); }
@Test public void shouldSetQuestionGroupsOnSession() throws PageExpiredException { List<QuestionGroupDetail> questionGroupDetails = asList( getQuestionGroupDetail(1, "QG1", true), getQuestionGroupDetail(2, "QG2", true), getQuestionGroupDetail(3, "QG3", true)); when(questionnaireServiceFacade.getQuestionGroups("Create", "Loan")) .thenReturn(questionGroupDetails); when(request.getAttribute(Constants.CURRENTFLOWKEY)).thenReturn(FLOW_KEY); when(request.getSession()).thenReturn(session); when(session.getAttribute(Constants.FLOWMANAGER)).thenReturn(flowManager); Flow flow = new Flow(); when(flowManager.getFlowWithValidation(FLOW_KEY)).thenReturn(flow); loanPrdAction.setQuestionGroupsOnSession(request, questionnaireServiceFacade); assertThat( (List<QuestionGroupDetail>) flow.getObjectFromSession(ProductDefinitionConstants.SRCQGLIST), is(questionGroupDetails)); verify(questionnaireServiceFacade, times(1)).getQuestionGroups("Create", "Loan"); verify(request, times(1)).getAttribute(Constants.CURRENTFLOWKEY); verify(request, times(1)).getSession(); verify(session, times(1)).getAttribute(Constants.FLOWMANAGER); }