Skip to content
This repository has been archived by the owner on Oct 23, 2023. It is now read-only.

Commit

Permalink
test(access): updated test for new repository interface
Browse files Browse the repository at this point in the history
  • Loading branch information
AndreaBrighi committed May 17, 2023
1 parent 9d68bd3 commit a06b39d
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 50 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import com.intelligentbackpack.accessdomain.entities.User
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Assert.assertFalse
import org.junit.Assert.assertThrows
import org.junit.Assert.assertTrue
import org.junit.Test
import org.junit.runner.RunWith
Expand All @@ -36,10 +37,9 @@ class AccessDomainRepositoryInstrumentedTest {

@Test
fun loginWithData() = runBlocking {
val appContext =
InstrumentationRegistry
.getInstrumentation()
.targetContext
val appContext = InstrumentationRegistry
.getInstrumentation()
.targetContext
val accessRemoteDataSource = mock(AccessRemoteDataSource::class.java)
`when`(
accessRemoteDataSource.accessWithData(
Expand All @@ -50,50 +50,42 @@ class AccessDomainRepositoryInstrumentedTest {
val localAccessDataSource = AccessLocalDataSourceImpl(UserStorageImpl(appContext))
val accessDomainRepository = AccessDomainRepositoryImpl(localAccessDataSource, accessRemoteDataSource)
assertFalse(localAccessDataSource.isUserSaved())
accessDomainRepository.loginWithData("test@gmail.com", "Test#1234", { user ->
verify(accessRemoteDataSource).accessWithData("test@gmail.com", "Test#1234")
assertEquals(expectedUser, user)
assertEquals(expectedUser, localAccessDataSource.getUser())
assertTrue(localAccessDataSource.isUserSaved())
}, {
assert(false)
})
val user = accessDomainRepository.loginWithData("test@gmail.com", "Test#1234")
verify(accessRemoteDataSource).accessWithData("test@gmail.com", "Test#1234")
assertEquals(expectedUser, user)
assertEquals(expectedUser, localAccessDataSource.getUser())
assertTrue(localAccessDataSource.isUserSaved())
}

@Test
fun automaticLoginWithUserSaved() = runBlocking {
val appContext =
InstrumentationRegistry
.getInstrumentation()
.targetContext
fun automaticLoginWithUserSaved(): Unit = runBlocking {
val appContext = InstrumentationRegistry
.getInstrumentation()
.targetContext
val accessRemoteDataSource = mock(AccessRemoteDataSource::class.java)
val accessLocalDataSource = AccessLocalDataSourceImpl(UserStorageImpl(appContext))
accessLocalDataSource.saveUser(expectedUser)
val accessDomainRepository = AccessDomainRepositoryImpl(accessLocalDataSource, accessRemoteDataSource)
assertTrue(accessLocalDataSource.isUserSaved())
accessDomainRepository.automaticLogin({ user ->
verify(accessRemoteDataSource, never()).accessWithData("test@gmail.com", "Test#1234")
assertEquals(expectedUser, user)
}, {
assert(false)
})
val user = accessDomainRepository.automaticLogin()
verify(accessRemoteDataSource, never()).accessWithData("test@gmail.com", "Test#1234")
assertEquals(expectedUser, user)
}

@Test
fun automaticLoginWithoutUserSavedCreateException() = runBlocking {
val appContext =
InstrumentationRegistry
.getInstrumentation()
.targetContext
fun automaticLoginWithoutUserSavedCreateException(): Unit = runBlocking {
val appContext = InstrumentationRegistry
.getInstrumentation()
.targetContext
val accessRemoteDataSource = mock(AccessRemoteDataSource::class.java)
val accessLocalDataStorage = AccessLocalDataSourceImpl(UserStorageImpl(appContext))
val accessDomainRepository = AccessDomainRepositoryImpl(accessLocalDataStorage, accessRemoteDataSource)
assertFalse(accessLocalDataStorage.isUserSaved())
accessDomainRepository.automaticLogin({
assert(false)
}, {
assertTrue(it is MissingUserException)
})
assertThrows(MissingUserException::class.java) {
runBlocking {
accessDomainRepository.automaticLogin()
}
}
}

@Test
Expand All @@ -106,11 +98,8 @@ class AccessDomainRepositoryInstrumentedTest {
val accessLocalDataSource = AccessLocalDataSourceImpl(UserStorageImpl(appContext))
accessLocalDataSource.saveUser(expectedUser)
val accessDomainRepository = AccessDomainRepositoryImpl(accessLocalDataSource, accessRemoteDataSource)
accessDomainRepository.logoutUser({ user ->
assertEquals(expectedUser, user)
assertFalse(accessLocalDataSource.isUserSaved())
}, {
assert(false)
})
val user = accessDomainRepository.logoutUser()
assertEquals(expectedUser, user)
assertFalse(accessLocalDataSource.isUserSaved())
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,33 +29,29 @@ class UseCaseTest : StringSpec({

"Create a user" {
val useCase = AccessUseCase(repository)
val captor = slot<User>()
val userCapture = slot<User>()
useCase.createUser(user = user, success = {}, error = {})
coVerify { repository.createUser(capture(captor), any(), any()) }
captor.captured shouldBe user
coVerify { repository.createUser(capture(userCapture)) }
userCapture.captured shouldBe user
}

"Login a user with email and password" {
val useCase = AccessUseCase(repository)
val emailCaptor = slot<String>()
val passwordCaptor = slot<String>()
useCase.loginWithData(user.email, user.password, success = {}, error = {})
coVerify { repository.loginWithData(capture(emailCaptor), capture(passwordCaptor), any(), any()) }
coVerify { repository.loginWithData(capture(emailCaptor), capture(passwordCaptor)) }
emailCaptor.captured shouldBe user.email
passwordCaptor.captured shouldBe user.password
}

"Login automatically a user" {
val useCase = AccessUseCase(repository)
val func = slot<(User) -> Unit>()
val login = slot<(User) -> Unit>()
coEvery {
repository.loginWithData(any(), any(), success = capture(login), error = any())
} answers {
thirdArg<(User) -> Unit>().invoke(user)
}
repository.loginWithData(any(), any())
} returns user
useCase.loginWithData(user.email, user.password, success = {}, error = {})
coEvery { repository.automaticLogin(capture(func), any()) } answers { func.captured(user) }
coEvery { repository.automaticLogin() } returns user
useCase.automaticLogin(success = {
it shouldBe user
}, error = { assert(false) })
Expand Down

0 comments on commit a06b39d

Please sign in to comment.