@WorkerThread private void fetchUserByIdAndNotifyIfExistsSync(String userId) { UserEntity userEntity = mUsersRetriever.getUserById(userId); if (userEntity != null) { notifyUserDataFetched(userEntity); } }
private void returnEntityMockFromRetrieverForAnyUserId() { when(mUsersRetrieverMock.getUserById(anyString())).thenReturn(mEntityMock); }
private void returnNullFromRetrieverForAnyUserId() { when(mUsersRetrieverMock.getUserById(anyString())).thenReturn(null); }
@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)); }
@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 onUserDataChanged_userDoesntExist_listenersNotNotified() { // Arrange returnNullFromRetrieverForAnyUserId(); // Act SUT.registerListener(mUsersDataMonitorListenerMock); SUT.onUserDataChanged(new UserDataChangedEvent(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 onUserDataChanged_userExists_listenersNotifiedWithCorrectData() { // Arrange returnEntityMockFromRetrieverForAnyUserId(); // Act SUT.registerListener(mUsersDataMonitorListenerMock); SUT.onUserDataChanged(new UserDataChangedEvent(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)); }