Skip to content

Instantly share code, notes, and snippets.

@kozmi55
Last active September 6, 2017 08:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kozmi55/e9b803ee4fcecb3880833a60a0908951 to your computer and use it in GitHub Desktop.
Save kozmi55/e9b803ee4fcecb3880833a60a0908951 to your computer and use it in GitHub Desktop.
class UserRepositoryTest {
@Mock
lateinit var mockUserService: UserService
@Mock
lateinit var mockUserDao: UserDao
@Mock
lateinit var mockConnectionHelper: ConnectionHelper
@Mock
lateinit var mockPreferencesHelper: PreferencesHelper
@Mock
lateinit var mockCalendarWrapper: CalendarWrapper
@Mock
lateinit var mockUserCall: Call<UserListModel>
@Mock
lateinit var mockUserResponse: Response<UserListModel>
lateinit var userRepository: UserRepository
@Before
fun setup() {
MockitoAnnotations.initMocks(this)
userRepository = UserRepository(mockUserService, mockUserDao,
mockConnectionHelper, mockPreferencesHelper,
mockCalendarWrapper)
}
@Test
fun testGetUsers_isOnlineReceivedOneItem_emitListWithOneItem() {
val userListModel = UserListModel(listOf(User()))
setUpStubbing(true, 1000 * 60 * 60 * 12 + 1, 0, modelFromUserService = userListModel)
val testObserver = userRepository.getUsers(1, false).test()
testObserver.assertNoErrors()
testObserver.assertValue { userListModelResult: UserListModel ->
userListModelResult.items.size == 1 }
verify(mockUserDao).insertAll(userListModel.items)
}
@Test
fun testGetUsers_isOfflineOneItemInDatabase_emitListWithOneItem() {
val modelFromDatabase = listOf(User())
setUpStubbing(false, 1000 * 60 * 60 * 12 + 1, 0, modelFromDatabase = modelFromDatabase)
val testObserver = userRepository.getUsers(1, false).test()
testObserver.assertNoErrors()
testObserver.assertValue { userListModelResult: UserListModel ->
userListModelResult.items.size == 1 }
}
private fun setUpStubbing(isOnline: Boolean, currentTime: Long, lastUpdateTime: Long,
modelFromUserService: UserListModel = UserListModel(emptyList()),
modelFromDatabase: List<User> = emptyList()) {
whenever(mockConnectionHelper.isOnline()).thenReturn(isOnline)
whenever(mockCalendarWrapper.getCurrentTimeInMillis()).thenReturn(currentTime)
whenever(mockPreferencesHelper.loadLong("last_update_page_1")).thenReturn(lastUpdateTime)
whenever(mockUserService.getUsers(1)).thenReturn(mockUserCall)
whenever(mockUserCall.execute()).thenReturn(mockUserResponse)
whenever(mockUserResponse.body()).thenReturn(modelFromUserService)
whenever(mockUserDao.getUsers(1)).thenReturn(modelFromDatabase)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment