Last active
September 6, 2017 08:48
-
-
Save kozmi55/e9b803ee4fcecb3880833a60a0908951 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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