From 4f10257eee7937efd719bd84fc9a12292779fea7 Mon Sep 17 00:00:00 2001 From: David Mason Date: Wed, 18 Apr 2012 16:27:40 +1000 Subject: [PATCH] improve mock instantiation in AppPresenterTest --- .../client/presenter/AppPresenterTest.java | 131 +++++++++++------- 1 file changed, 82 insertions(+), 49 deletions(-) diff --git a/server/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/AppPresenterTest.java b/server/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/AppPresenterTest.java index 82c4838472..f33d1d40a2 100644 --- a/server/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/AppPresenterTest.java +++ b/server/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/AppPresenterTest.java @@ -61,37 +61,37 @@ public class AppPresenterTest private AppPresenter appPresenter; - HasClickHandlers mockDismiss = createMock(HasClickHandlers.class); - HasVisibility mockDismissVisibility = createMock(HasVisibility.class); - Display mockDisplay = createMock(AppPresenter.Display.class); - DocumentListPresenter mockDocumentListPresenter = createMock(DocumentListPresenter.class); - HasClickHandlers mockDocumentsLink = createMock(HasClickHandlers.class); + HasClickHandlers mockDismiss; + HasVisibility mockDismissVisibility; + Display mockDisplay; + DocumentListPresenter mockDocumentListPresenter; + HasClickHandlers mockDocumentsLink; + EventBus mockEventBus; + History mockHistory; + Identity mockIdentity; + HasClickHandlers mockLeaveWorkspaceLink; + WebTransMessages mockMessages; + Person mockPerson; HasClickHandlers mockSearchLink; - EventBus mockEventBus = createMock(EventBus.class); - History mockHistory = createMock(History.class); - Identity mockIdentity = createMock(Identity.class); - WebTransMessages mockMessages = createMock(WebTransMessages.class); - Person mockPerson = createMock(Person.class); - SearchResultsPresenter mockSearchResultsPresenter = createMock(SearchResultsPresenter.class); - TranslationPresenter mockTranslationPresenter = createMock(TranslationPresenter.class); - Window mockWindow = createMock(Window.class); - Location mockWindowLocation = createMock(Window.Location.class); - WorkspaceContext mockWorkspaceContext = createMock(WorkspaceContext.class); - HasClickHandlers mockLeaveWorkspaceLink = createMock(HasClickHandlers.class); - HasClickHandlers mockSignoutLink = createMock(HasClickHandlers.class); + SearchResultsPresenter mockSearchResultsPresenter; + HasClickHandlers mockSignoutLink; + TranslationPresenter mockTranslationPresenter; + Window mockWindow; + Location mockWindowLocation; + WorkspaceContext mockWorkspaceContext; - private Capture capturedNotificationEventHandler; private Capture capturedDismissLinkClickHandler; - private Capture capturedDocumentStatsUpdatedEventHandler; - private Capture capturedProjectStatsUpdatedEventHandler; - private Capture capturedWorkspaceContextUpdatedEventHandler; - private Capture capturedLeaveWorkspaceLinkClickHandler; - private Capture capturedSignoutLinkClickHandler; - private Capture> capturedHistoryValueChangeHandler; private Capture capturedDocumentLinkClickHandler; - private Capture capturedSearchLinkClickHandler; private Capture capturedDocumentSelectionEvent; + private Capture capturedDocumentStatsUpdatedEventHandler; private Capture capturedHistoryTokenString; + private Capture> capturedHistoryValueChangeHandler; + private Capture capturedLeaveWorkspaceLinkClickHandler; + private Capture capturedNotificationEventHandler; + private Capture capturedProjectStatsUpdatedEventHandler; + private Capture capturedSearchLinkClickHandler; + private Capture capturedSignoutLinkClickHandler; + private Capture capturedWorkspaceContextUpdatedEventHandler; private DocumentInfo testDocInfo; private DocumentId testDocId; @@ -101,12 +101,37 @@ public class AppPresenterTest @BeforeClass public void createMocks() { - //FIXME move creation of all mocks and captures here. - + mockDismiss = createMock(HasClickHandlers.class); + mockDismissVisibility = createMock(HasVisibility.class); + mockDisplay = createMock(AppPresenter.Display.class); + mockDocumentListPresenter = createMock(DocumentListPresenter.class); + mockDocumentsLink = createMock(HasClickHandlers.class); + mockEventBus = createMock(EventBus.class); + mockHistory = createMock(History.class); + mockIdentity = createMock(Identity.class); + mockLeaveWorkspaceLink = createMock(HasClickHandlers.class); + mockMessages = createMock(WebTransMessages.class); + mockPerson = createMock(Person.class); mockSearchLink = createMock(HasClickHandlers.class); + mockSearchResultsPresenter = createMock(SearchResultsPresenter.class); + mockSignoutLink = createMock(HasClickHandlers.class); + mockTranslationPresenter = createMock(TranslationPresenter.class); + mockWindow = createMock(Window.class); + mockWindowLocation = createMock(Window.Location.class); + mockWorkspaceContext = createMock(WorkspaceContext.class); - capturedSearchLinkClickHandler = new Capture(); + capturedDismissLinkClickHandler = new Capture(); + capturedDocumentLinkClickHandler = new Capture(); + capturedDocumentSelectionEvent = new Capture(); + capturedDocumentStatsUpdatedEventHandler = new Capture(); capturedHistoryTokenString = new Capture(); + capturedHistoryValueChangeHandler = new Capture>(); + capturedLeaveWorkspaceLinkClickHandler = new Capture(); + capturedNotificationEventHandler = new Capture(); + capturedProjectStatsUpdatedEventHandler = new Capture(); + capturedSearchLinkClickHandler = new Capture(); + capturedSignoutLinkClickHandler = new Capture(); + capturedWorkspaceContextUpdatedEventHandler = new Capture(); } @BeforeMethod @@ -469,7 +494,7 @@ public void testSearchLinkGeneratesHistoryToken() HistoryToken capturedToken = HistoryToken.fromTokenString(capturedHistoryTokenString.getValue()); assertThat("clicking search link should set view in history token to search", capturedToken.getView(), is(MainView.Search)); - //TODO could check that nothing else has changes in token + //TODO could check that nothing else has changed in token } public void testShowsHidesReadonlyLabel() @@ -644,25 +669,18 @@ private void setupDefaultMockExpectations() mockDocumentListPresenter.bind(); expectLastCall().once(); - capturedDocumentLinkClickHandler = new Capture(); - expect(mockDocumentsLink.addClickHandler(and(capture(capturedDocumentLinkClickHandler), isA(ClickHandler.class)))).andReturn(createMock(HandlerRegistration.class)).once(); - - expect(mockSearchLink.addClickHandler(and(capture(capturedSearchLinkClickHandler), isA(ClickHandler.class)))).andReturn(createMock(HandlerRegistration.class)).once(); + expectClickHandlerRegistrationOnce(mockDocumentsLink, capturedDocumentLinkClickHandler); + expectClickHandlerRegistrationOnce(mockSearchLink, capturedSearchLinkClickHandler); + expectClickHandlerRegistrationOnce(mockDismiss, capturedDismissLinkClickHandler); + expectClickHandlerRegistrationOnce(mockLeaveWorkspaceLink, capturedLeaveWorkspaceLinkClickHandler); + expectClickHandlerRegistrationOnce(mockSignoutLink, capturedSignoutLinkClickHandler); - capturedDismissLinkClickHandler = new Capture(); - expect(mockDismiss.addClickHandler(and(capture(capturedDismissLinkClickHandler), isA(ClickHandler.class)))).andReturn(createMock(HandlerRegistration.class)).once(); - - capturedNotificationEventHandler = new Capture(); expect(mockEventBus.addHandler(eq(NotificationEvent.getType()), and(capture(capturedNotificationEventHandler), isA(NotificationEventHandler.class)))).andReturn(createMock(HandlerRegistration.class)).once(); - capturedDocumentStatsUpdatedEventHandler = new Capture(); expect(mockEventBus.addHandler(eq(DocumentStatsUpdatedEvent.getType()), and(capture(capturedDocumentStatsUpdatedEventHandler), isA(DocumentStatsUpdatedEventHandler.class)))).andReturn(createMock(HandlerRegistration.class)).once(); - capturedProjectStatsUpdatedEventHandler = new Capture(); expect(mockEventBus.addHandler(eq(ProjectStatsUpdatedEvent.getType()), and(capture(capturedProjectStatsUpdatedEventHandler), isA(ProjectStatsUpdatedEventHandler.class)))).andReturn(createMock(HandlerRegistration.class)).once(); - capturedWorkspaceContextUpdatedEventHandler = new Capture(); expect(mockEventBus.addHandler(eq(WorkspaceContextUpdateEvent.getType()), and(capture(capturedWorkspaceContextUpdatedEventHandler), isA(WorkspaceContextUpdateEventHandler.class)))).andReturn(createMock(HandlerRegistration.class)).once(); - capturedDocumentSelectionEvent = new Capture(); mockEventBus.fireEvent(and(capture(capturedDocumentSelectionEvent), isA(DocumentSelectionEvent.class))); expectLastCall().anyTimes(); @@ -670,16 +688,12 @@ private void setupDefaultMockExpectations() expect(mockIdentity.getPerson()).andReturn(mockPerson).anyTimes(); - capturedLeaveWorkspaceLinkClickHandler = new Capture(); - expect(mockLeaveWorkspaceLink.addClickHandler(and(capture(capturedLeaveWorkspaceLinkClickHandler), isA(ClickHandler.class)))).andReturn(createMock(HandlerRegistration.class)).once(); expect(mockMessages.windowTitle(TEST_WORKSPACE_NAME, TEST_LOCALE_NAME)).andReturn(TEST_WINDOW_TITLE).anyTimes(); expect(mockMessages.noDocumentSelected()).andReturn(NO_DOCUMENTS_STRING).anyTimes(); expect(mockPerson.getName()).andReturn(TEST_PERSON_NAME).anyTimes(); - capturedSignoutLinkClickHandler = new Capture(); - expect(mockSignoutLink.addClickHandler(and(capture(capturedSignoutLinkClickHandler), isA(ClickHandler.class)))).andReturn(createMock(HandlerRegistration.class)).once(); mockSearchResultsPresenter.bind(); expectLastCall().once(); @@ -697,10 +711,21 @@ private void setupDefaultMockExpectations() expect(mockWorkspaceContext.isReadOnly()).andReturn(false).anyTimes(); } + /** + * Expect a single handler registration on a mock object, and capture the + * click handler in the given {@link Capture} + * + * @param mockObjectToClick + * @param captureForHandler + */ + private void expectClickHandlerRegistrationOnce(HasClickHandlers mockObjectToClick, Capture captureForHandler) + { + expect(mockObjectToClick.addClickHandler(and(capture(captureForHandler), isA(ClickHandler.class)))).andReturn(createMock(HandlerRegistration.class)).once(); + } + @SuppressWarnings("unchecked") private void setupMockHistory(String tokenToReturn) { - capturedHistoryValueChangeHandler = new Capture>(); expect(mockHistory.addValueChangeHandler(and(capture(capturedHistoryValueChangeHandler), isA(ValueChangeHandler.class)))).andReturn(createMock(HandlerRegistration.class)).anyTimes(); expect(mockHistory.getToken()).andReturn(tokenToReturn).anyTimes(); mockHistory.fireCurrentHistoryState(); @@ -721,10 +746,18 @@ private void resetAllMocks() private void resetAllCaptures() { - //FIXME reset other captures here - capturedSearchLinkClickHandler.reset(); + capturedDismissLinkClickHandler.reset(); + capturedDocumentLinkClickHandler.reset(); + capturedDocumentSelectionEvent.reset(); + capturedDocumentStatsUpdatedEventHandler.reset(); capturedHistoryTokenString.reset(); - + capturedHistoryValueChangeHandler.reset(); + capturedLeaveWorkspaceLinkClickHandler.reset(); + capturedNotificationEventHandler.reset(); + capturedProjectStatsUpdatedEventHandler.reset(); + capturedSearchLinkClickHandler.reset(); + capturedSignoutLinkClickHandler.reset(); + capturedWorkspaceContextUpdatedEventHandler.reset(); } private void replayAllMocks()