Testing Data Layer
This commit is contained in:
+52
@@ -0,0 +1,52 @@
|
||||
package com.ericampire.android.androidstudycase.data.datasource.animator
|
||||
|
||||
import com.ericampire.android.androidstudycase.common.MainCoroutineExtension
|
||||
import com.ericampire.android.androidstudycase.data.room.AnimatorDao
|
||||
import com.ericampire.android.androidstudycase.util.PreviewData
|
||||
import com.ericampire.android.androidstudycase.util.data
|
||||
import io.mockk.*
|
||||
import junit.framework.Assert.assertEquals
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import kotlinx.coroutines.flow.collect
|
||||
import kotlinx.coroutines.flow.flowOf
|
||||
import kotlinx.coroutines.test.runBlockingTest
|
||||
import org.junit.jupiter.api.BeforeEach
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.junit.jupiter.api.extension.ExtendWith
|
||||
|
||||
@ExperimentalCoroutinesApi
|
||||
@ExtendWith(MainCoroutineExtension::class)
|
||||
class LocalAnimatorDataSourceTest {
|
||||
|
||||
// SUT
|
||||
private lateinit var dataSource: LocalAnimatorDataSource
|
||||
|
||||
private val animatorDao = mockk<AnimatorDao>(relaxed = true)
|
||||
|
||||
@BeforeEach
|
||||
fun setup() {
|
||||
dataSource = LocalAnimatorDataSource(animatorDao)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun findAllAnimators() = runBlockingTest {
|
||||
every { animatorDao.findAll() } returns flowOf(PreviewData.Animator.data)
|
||||
|
||||
dataSource.findAll().collect {
|
||||
assertEquals(it.data, PreviewData.Animator.data)
|
||||
}
|
||||
|
||||
verify(exactly = 1) {
|
||||
animatorDao.findAll()
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun saveAnimator() = runBlockingTest {
|
||||
coEvery { animatorDao.save(PreviewData.Animator.data.first()) } just Runs
|
||||
dataSource.save(PreviewData.Animator.data.first())
|
||||
coVerify {
|
||||
animatorDao.save(eq(PreviewData.Animator.data.first()))
|
||||
}
|
||||
}
|
||||
}
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
package com.ericampire.android.androidstudycase.data.datasource.animator
|
||||
|
||||
import com.ericampire.android.androidstudycase.common.MainCoroutineExtension
|
||||
import com.ericampire.android.androidstudycase.domain.entity.AnimatorApiResponse
|
||||
import com.ericampire.android.androidstudycase.util.ApiUrl
|
||||
import com.ericampire.android.androidstudycase.util.PreviewData
|
||||
import io.ktor.client.*
|
||||
import io.ktor.client.engine.*
|
||||
import io.ktor.client.engine.mock.*
|
||||
import io.ktor.client.request.*
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import kotlinx.coroutines.test.runBlockingTest
|
||||
import org.junit.jupiter.api.BeforeEach
|
||||
import org.junit.jupiter.api.Disabled
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.junit.jupiter.api.assertThrows
|
||||
import org.junit.jupiter.api.extension.ExtendWith
|
||||
|
||||
@ExperimentalCoroutinesApi
|
||||
@ExtendWith(MainCoroutineExtension::class)
|
||||
class RemoveAnimatorDataSourceTest(
|
||||
|
||||
) {
|
||||
|
||||
// SUT
|
||||
private lateinit var dataSource: RemoteAnimatorDataSource
|
||||
|
||||
// DOC's
|
||||
private lateinit var client: HttpClient
|
||||
|
||||
@BeforeEach
|
||||
fun setup() {
|
||||
val engine = MockEngine.config {
|
||||
addHandler { respondOk("first") }
|
||||
}
|
||||
client = HttpClient(engine)
|
||||
dataSource = RemoteAnimatorDataSource(client)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun saveAnimator() = runBlockingTest {
|
||||
assertThrows<NotImplementedError> {
|
||||
dataSource.save(PreviewData.Animator.data.first())
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
@Disabled
|
||||
fun findAnimator() = runBlockingTest {
|
||||
runBlocking {
|
||||
val data = client.get<AnimatorApiResponse>(ApiUrl.Animator.featured)
|
||||
}
|
||||
|
||||
|
||||
//assertEquals(data, "first")
|
||||
}
|
||||
}
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
package com.ericampire.android.androidstudycase.data.datasource.blog
|
||||
|
||||
import com.ericampire.android.androidstudycase.common.MainCoroutineExtension
|
||||
import com.ericampire.android.androidstudycase.data.room.BlogDao
|
||||
import com.ericampire.android.androidstudycase.util.PreviewData
|
||||
import com.ericampire.android.androidstudycase.util.data
|
||||
import io.mockk.*
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import kotlinx.coroutines.flow.collect
|
||||
import kotlinx.coroutines.flow.flowOf
|
||||
import kotlinx.coroutines.test.runBlockingTest
|
||||
import org.junit.jupiter.api.Assertions
|
||||
import org.junit.jupiter.api.BeforeEach
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.junit.jupiter.api.extension.ExtendWith
|
||||
|
||||
@ExperimentalCoroutinesApi
|
||||
@ExtendWith(MainCoroutineExtension::class)
|
||||
class LocalBlogDataSourceTest {
|
||||
|
||||
// SUT
|
||||
private lateinit var dataSource: BlogDataSource
|
||||
|
||||
// DOC's
|
||||
private val blogDao = mockk<BlogDao>(relaxed = true)
|
||||
|
||||
@BeforeEach
|
||||
fun setup() {
|
||||
dataSource = LocalBlogDataSource(blogDao)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun findAllStories() = runBlockingTest {
|
||||
every { blogDao.findAll() } returns flowOf(PreviewData.Blog.data)
|
||||
|
||||
dataSource.findAll().collect {
|
||||
Assertions.assertEquals(it.data, PreviewData.Blog.data)
|
||||
}
|
||||
|
||||
verify(exactly = 1) {
|
||||
blogDao.findAll()
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun saveBlog() = runBlockingTest {
|
||||
coEvery { blogDao.save(PreviewData.Blog.data.first()) } just Runs
|
||||
dataSource.save(PreviewData.Blog.data.first())
|
||||
coVerify {
|
||||
blogDao.save(eq(PreviewData.Blog.data.first()))
|
||||
}
|
||||
}
|
||||
}
|
||||
+80
@@ -0,0 +1,80 @@
|
||||
package com.ericampire.android.androidstudycase.data.datasource.lottiefile
|
||||
|
||||
import com.ericampire.android.androidstudycase.common.MainCoroutineExtension
|
||||
import com.ericampire.android.androidstudycase.data.datasource.lottiefiles.LocalLottieFileDataSource
|
||||
import com.ericampire.android.androidstudycase.data.datasource.lottiefiles.LottieFileDataSource
|
||||
import com.ericampire.android.androidstudycase.data.room.LottieFilesDao
|
||||
import com.ericampire.android.androidstudycase.util.PreviewData
|
||||
import com.ericampire.android.androidstudycase.util.data
|
||||
import io.mockk.*
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import kotlinx.coroutines.flow.collect
|
||||
import kotlinx.coroutines.flow.flowOf
|
||||
import kotlinx.coroutines.test.runBlockingTest
|
||||
import org.junit.jupiter.api.Assertions
|
||||
import org.junit.jupiter.api.BeforeEach
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.junit.jupiter.api.extension.ExtendWith
|
||||
|
||||
@ExperimentalCoroutinesApi
|
||||
@ExtendWith(MainCoroutineExtension::class)
|
||||
class LocalLottiefileDataSourceTest {
|
||||
// SUT
|
||||
private lateinit var dataSource: LottieFileDataSource
|
||||
|
||||
// DOC's
|
||||
private val filesDao = mockk<LottieFilesDao>(relaxed = true)
|
||||
|
||||
@BeforeEach
|
||||
fun setup() {
|
||||
dataSource = LocalLottieFileDataSource(filesDao)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun findFeatured() = runBlockingTest {
|
||||
every { filesDao.findByType(eq("featured")) } returns flowOf(PreviewData.Lottiefile.data)
|
||||
|
||||
dataSource.findFeatured().collect {
|
||||
Assertions.assertEquals(it.data, PreviewData.Lottiefile.data)
|
||||
}
|
||||
|
||||
verify(exactly = 1) {
|
||||
filesDao.findByType(eq("featured"))
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun findRecent() = runBlockingTest {
|
||||
every { filesDao.findByType(eq("recent")) } returns flowOf(PreviewData.Lottiefile.data)
|
||||
|
||||
dataSource.findRecent().collect {
|
||||
Assertions.assertEquals(it.data, PreviewData.Lottiefile.data)
|
||||
}
|
||||
|
||||
verify(exactly = 1) {
|
||||
filesDao.findByType(eq("recent"))
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun findPopular() = runBlockingTest {
|
||||
every { filesDao.findByType(eq("popular")) } returns flowOf(PreviewData.Lottiefile.data)
|
||||
|
||||
dataSource.findPopular().collect {
|
||||
Assertions.assertEquals(it.data, PreviewData.Lottiefile.data)
|
||||
}
|
||||
|
||||
verify(exactly = 1) {
|
||||
filesDao.findByType(eq("popular"))
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun saveUser() = runBlockingTest {
|
||||
coEvery { filesDao.save(PreviewData.Lottiefile.data.first()) } just Runs
|
||||
dataSource.save(PreviewData.Lottiefile.data.first())
|
||||
coVerify {
|
||||
filesDao.save(eq(PreviewData.Lottiefile.data.first()))
|
||||
}
|
||||
}
|
||||
}
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
package com.ericampire.android.androidstudycase.data.datasource.user
|
||||
|
||||
import com.ericampire.android.androidstudycase.common.MainCoroutineExtension
|
||||
import com.ericampire.android.androidstudycase.data.room.UserDao
|
||||
import com.ericampire.android.androidstudycase.util.PreviewData
|
||||
import com.ericampire.android.androidstudycase.util.data
|
||||
import io.mockk.*
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import kotlinx.coroutines.flow.collect
|
||||
import kotlinx.coroutines.flow.flowOf
|
||||
import kotlinx.coroutines.test.runBlockingTest
|
||||
import org.junit.jupiter.api.Assertions
|
||||
import org.junit.jupiter.api.BeforeEach
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.junit.jupiter.api.extension.ExtendWith
|
||||
|
||||
@ExperimentalCoroutinesApi
|
||||
@ExtendWith(MainCoroutineExtension::class)
|
||||
class LocalUserDataSourceTest {
|
||||
|
||||
// SUT
|
||||
private lateinit var dataSource: UserDataSource
|
||||
|
||||
// DOC's
|
||||
private val userDao = mockk<UserDao>(relaxed = true)
|
||||
|
||||
@BeforeEach
|
||||
fun setup() {
|
||||
dataSource = LocalUserDataSource(userDao)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun findAllUsers() = runBlockingTest {
|
||||
every { userDao.findAll() } returns flowOf(PreviewData.User.data)
|
||||
|
||||
dataSource.findAll().collect {
|
||||
Assertions.assertEquals(it.data, PreviewData.User.data)
|
||||
}
|
||||
|
||||
verify(exactly = 1) {
|
||||
userDao.findAll()
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun saveUser() = runBlockingTest {
|
||||
coEvery { userDao.save(PreviewData.User.data.first()) } just Runs
|
||||
dataSource.save(PreviewData.User.data.first())
|
||||
coVerify {
|
||||
userDao.save(eq(PreviewData.User.data.first()))
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user