@Provides @ControllerScope RequestsManager requestsManager( BackgroundThreadPoster backgroundThreadPoster, UiThreadPoster uiThreadPoster, UserActionCacher userActionCacher, RequestsRetriever requestsRetriever, RequestsCacher requestsCacher, Logger logger, ServerSyncController serverSyncController) { return new RequestsManager(backgroundThreadPoster, uiThreadPoster, userActionCacher, requestsRetriever, requestsCacher, logger, serverSyncController); }
@Override protected void fetchRequests() { mRequestsManager.fetchAllRequestsAndNotify(); }
@Override public void onStart() { super.onStart(); mRequestsManager.registerListener(this); mRequestsManager.syncRequestsFromServer(); fetchRequests(); }
@Test public void fetchRequestsAssignedToUser_listenersNotified() { // Arrange RequestEntity pickedUpRequest = RequestEntity.getBuilder(RequestEntityProvider.getPickedUpRequestEntity()) .setPickedUpBy(TEST_USER_ID) .build(); RequestEntity closedRequest = RequestEntity.getBuilder(RequestEntityProvider.getClosedRequestEntity()) .setPickedUpBy(TEST_USER_ID) .build(); List<RequestEntity> assignedToTestUserRequests = Arrays.asList(pickedUpRequest, closedRequest); when(mRequestsRetrieverMock.getRequestsAssignedToUser(TEST_USER_ID)) .thenReturn(assignedToTestUserRequests); // Act SUT.registerListener(mRequestsManagerListenerMock1); SUT.registerListener(mRequestsManagerListenerMock2); SUT.fetchRequestsAssignedToUserAndNotify(TEST_USER_ID); // Assert mThreadPostersTestDouble.join(); verify(mRequestsManagerListenerMock1, times(1)).onRequestsFetched(mRequestsListCaptor.capture()); verify(mRequestsManagerListenerMock2, times(1)).onRequestsFetched(mRequestsListCaptor.capture()); assertEquals(assignedToTestUserRequests, mRequestsListCaptor.getValue()); // param for listener1 assertEquals(assignedToTestUserRequests, mRequestsListCaptor.getValue()); // param for listener2 }
@Test public void fetchAllRequests_listenersNotified() { // Arrange RequestEntity pickedUpRequest = RequestEntity.getBuilder(RequestEntityProvider.getPickedUpRequestEntity()) .setPickedUpBy(TEST_USER_ID) .build(); RequestEntity closedRequest = RequestEntity.getBuilder(RequestEntityProvider.getClosedRequestEntity()) .setPickedUpBy(TEST_USER_ID_2) .build(); List<RequestEntity> allRequests = Arrays.asList(pickedUpRequest, closedRequest); when(mRequestsRetrieverMock.getAllRequests()).thenReturn(allRequests); // Act SUT.registerListener(mRequestsManagerListenerMock1); SUT.registerListener(mRequestsManagerListenerMock2); SUT.fetchAllRequestsAndNotify(); // Assert mThreadPostersTestDouble.join(); verify(mRequestsManagerListenerMock1, times(1)).onRequestsFetched(mRequestsListCaptor.capture()); verify(mRequestsManagerListenerMock2, times(1)).onRequestsFetched(mRequestsListCaptor.capture()); assertEquals(allRequests, mRequestsListCaptor.getValue()); // param for listener1 assertEquals(allRequests, mRequestsListCaptor.getValue()); // param for listener2 }
@Test public void addNewRequest_requestCached() { // Arrange RequestEntity newRequest = RequestEntityProvider.getNewRequestEntity(); // Act SUT.addNewRequest(newRequest); // Assert mThreadPostersTestDouble.join(); verify(mRequestsCacherMock).updateOrInsertAndNotify(mRequestsCaptor.capture()); RequestEntity cachedRequest = mRequestsCaptor.getValue(); assertRequestsEqual(cachedRequest, newRequest); }
@Override public void onStart() { super.onStart(); mRequestsManager.registerListener(this); mRequestsManager.fetchRequestByIdAndNotify(mRequestId); mRequestDetailsViewMvc.bindCurrentUserId(mLoginStateManager.getLoggedInUser().getUserId()); }
@Override protected void fetchRequests() { mLogger.d(TAG, "fetchRequests()"); LoggedInUserEntity user = mLoginStateManager.getLoggedInUser(); if (user == null) { mLogger.e(TAG, "no logged in user"); return; } mRequestsManager.fetchRequestsAssignedToUserAndNotify(user.getUserId()); }
@Override public void onStop() { super.onStop(); mRequestsManager.unregisterListener(this); }
@Override public void onUserActionAdded(UserActionEntity userAction) { refreshRequest(); // Request pickup is time critical action - need to be uploaded to the server ASAP mRequestsManager.syncRequestsFromServer(); } });
private void refreshRequest() { mRequestsManager.fetchRequestByIdAndNotify(mRequestId); }
.build(); mRequestsManager.addNewRequest(newRequest);
@Override public void onStop() { super.onStop(); mRequestsManager.unregisterListener(this); }
@Test public void addNewRequest_createRequestUserActionCached() { // Arrange RequestEntity newRequest = RequestEntityProvider.getNewRequestEntity(); // Act SUT.addNewRequest(newRequest); // Assert mThreadPostersTestDouble.join(); CreateRequestUserActionEntity expectedUserAction = new CreateRequestUserActionEntity(newRequest.getCreatedAt(), newRequest.getId(), newRequest.getCreatedBy()); verify(mUserActionCacherMock).cacheUserAction(mUserActionsCaptor.capture()); UserActionEntity cachedUserAction = mUserActionsCaptor.getValue(); assertUserActionsEqual(cachedUserAction, expectedUserAction); }
@Before public void setup() throws Exception { SUT = new RequestsManager( mThreadPostersTestDouble.getBackgroundTestDouble(), mThreadPostersTestDouble.getUiTestDouble(), mUserActionCacherMock, mRequestsRetrieverMock, mRequestsCacherMock, mLogger, mServerSyncControllerMock); }