@Test public void testThatPresenterInstructsPromptViewToDismissWhenUserDeclinesToGiveCriticalFeedback() { // Act promptPresenter.reportUserOpinion(IPromptPresenter.UserOpinion.CRITICAL); promptPresenter.reportUserFeedbackAction(IPromptPresenter.UserFeedbackAction.DECLINED); // Assert final InOrder inOrder = inOrder(mockPromptView); inOrder.verify(mockPromptView).dismiss(anyBoolean()); inOrder.verifyNoMoreInteractions(); }
@Test public void testThatPromptPresenterPassesReceivedEventsToExtraEventListeners() { // Arrange final IEventListener extraMockEventListener = mock(IEventListener.class); promptPresenter.addPromptEventListener(extraMockEventListener); final IEvent mockEvent = mock(IEvent.class); // Act promptPresenter.notifyEventTriggered(mockEvent); // Assert verify(extraMockEventListener).notifyEventTriggered(mockEvent); }
@Test public void testThatPresenterInstructsPromptViewToShowProvidedThanksViewWhenUserAgreesToGivePositiveFeedback() { // Arrange when(mockPromptView.providesThanksView()).thenReturn(true); // Act promptPresenter.reportUserOpinion(IPromptPresenter.UserOpinion.POSITIVE); promptPresenter.reportUserFeedbackAction(IPromptPresenter.UserFeedbackAction.AGREED); // Assert final InOrder inOrder = inOrder(mockPromptView); inOrder.verify(mockPromptView).thankUser(anyBoolean()); inOrder.verifyNoMoreInteractions(); }
@Test public void testThatPresenterInstructsPromptViewToDismissWhenUserAgreesToGiveCriticalFeedbackAndNoThanksViewProvided() { // Arrange when(mockPromptView.providesThanksView()).thenReturn(false); // Act promptPresenter.reportUserOpinion(IPromptPresenter.UserOpinion.CRITICAL); promptPresenter.reportUserFeedbackAction(IPromptPresenter.UserFeedbackAction.AGREED); // Assert final InOrder inOrder = inOrder(mockPromptView); inOrder.verify(mockPromptView).dismiss(anyBoolean()); inOrder.verifyNoMoreInteractions(); }
@Test public void testThatPresenterInstructsPromptViewToQueryUserOpinionWhenStarted() { // Act promptPresenter.start(); // Assert final InOrder inOrder = inOrder(mockPromptView); inOrder.verify(mockPromptView).queryUserOpinion(anyBoolean()); inOrder.verifyNoMoreInteractions(); }
@Test public void testThatPresenterInstructsPromptViewToRequestCriticalFeedbackWhenUserReportsCriticalOpinion() { // Act promptPresenter.reportUserOpinion(IPromptPresenter.UserOpinion.CRITICAL); // Assert final InOrder inOrder = inOrder(mockPromptView); inOrder.verify(mockPromptView).requestCriticalFeedback(); inOrder.verifyNoMoreInteractions(); }
@Test public void testThatPromptPresenterPassesReceivedEventsToInjectedEventListener() { // Arrange final IEvent mockEvent = mock(IEvent.class); // Act promptPresenter.notifyEventTriggered(mockEvent); // Assert verify(mockEventListener).notifyEventTriggered(mockEvent); }
@Test public void testThatPresenterThrowsCorrectExceptionIfUserFeedbackActionIsSuppliedBeforeUserOpinion() { // Arrange final IPromptPresenter.UserFeedbackAction anyValidUserFeedbackAction = IPromptPresenter.UserFeedbackAction.AGREED; exception.expect(IllegalStateException.class); exception.expectMessage("User opinion must be set before this method is called."); // Act promptPresenter.reportUserFeedbackAction(anyValidUserFeedbackAction); }