@Subscribe public void onUserDataChanged(UserDataChangedEvent event) { fetchUserByIdAndNotifyIfExists(event.getUserId()); }
private void fetchDataOfActiveUser() { String activeUserId = mLoginStateManager.getLoggedInUser().getUserId(); if (activeUserId != null && !activeUserId.isEmpty()) { // notify the view that there is a logged in user mViewMvc.bindUserData(UserEntity.newBuilder().setUserId(activeUserId).build()); // fetch user's info mUsersDataMonitoringManager.fetchUserByIdAndNotifyIfExists(activeUserId); } else { // no active user mViewMvc.bindUserData(null); } }
@Test public void fetchUserByIdAndNotifyIfExists_userDoesntExist_listenersNotNotified() { // Arrange returnNullFromRetrieverForAnyUserId(); // Act SUT.registerListener(mUsersDataMonitorListenerMock); SUT.fetchUserByIdAndNotifyIfExists(TEST_USER_ID); mThreadPostersTestDouble.join(); // Assert verify(mUsersRetrieverMock, times(1)).getUserById(mStringCaptor.capture()); verifyNoMoreInteractions(mUsersRetrieverMock); assertThat(mStringCaptor.getValue(), is(TEST_USER_ID)); verifyNoMoreInteractions(mUsersDataMonitorListenerMock); }
@Test public void fetchUserByIdAndNotifyIfExists_userExists_listenersNotifiedWithCorrectData() { // Arrange returnEntityMockFromRetrieverForAnyUserId(); // Act SUT.registerListener(mUsersDataMonitorListenerMock); SUT.fetchUserByIdAndNotifyIfExists(TEST_USER_ID); mThreadPostersTestDouble.join(); // Assert verify(mUsersRetrieverMock, times(1)).getUserById(mStringCaptor.capture()); verifyNoMoreInteractions(mUsersRetrieverMock); assertThat(mStringCaptor.getValue(), is(TEST_USER_ID)); verify(mUsersDataMonitorListenerMock, times(1)).onUserDataChange(mUserCaptor.capture()); verifyNoMoreInteractions(mUsersDataMonitorListenerMock); assertThat(mUserCaptor.getValue(), is(mEntityMock)); }