Add mock of Logger to tests

This commit is contained in:
Kirill Kamakin
2022-08-05 20:27:44 +02:00
parent a299b40c4c
commit 22bae5e9ee
15 changed files with 64 additions and 39 deletions

View File

@@ -4,6 +4,7 @@ import com.google.common.truth.Truth.assertThat
import gq.kirmanak.mealient.data.add.models.AddRecipeRequest
import gq.kirmanak.mealient.data.network.NetworkError
import gq.kirmanak.mealient.data.network.ServiceFactory
import gq.kirmanak.mealient.logging.Logger
import io.mockk.MockKAnnotations
import io.mockk.coEvery
import io.mockk.impl.annotations.MockK
@@ -22,13 +23,16 @@ class AddRecipeDataSourceImplTest {
@MockK
lateinit var service: AddRecipeService
@MockK(relaxUnitFun = true)
lateinit var logger: Logger
lateinit var subject: AddRecipeDataSourceImpl
@Before
fun setUp() {
MockKAnnotations.init(this)
coEvery { serviceProvider.provideService(any()) } returns service
subject = AddRecipeDataSourceImpl(serviceProvider)
subject = AddRecipeDataSourceImpl(serviceProvider, logger)
}
@Test(expected = NetworkError.NotMealie::class)

View File

@@ -4,6 +4,7 @@ import com.google.common.truth.Truth.assertThat
import gq.kirmanak.mealient.data.network.NetworkError.*
import gq.kirmanak.mealient.data.network.ServiceFactory
import gq.kirmanak.mealient.di.NetworkModule
import gq.kirmanak.mealient.logging.Logger
import gq.kirmanak.mealient.test.AuthImplTestData.TEST_PASSWORD
import gq.kirmanak.mealient.test.AuthImplTestData.TEST_TOKEN
import gq.kirmanak.mealient.test.AuthImplTestData.TEST_USERNAME
@@ -26,12 +27,15 @@ class AuthDataSourceImplTest {
@MockK
lateinit var authServiceFactory: ServiceFactory<AuthService>
@MockK(relaxUnitFun = true)
lateinit var logger: Logger
lateinit var subject: AuthDataSourceImpl
@Before
fun setUp() {
MockKAnnotations.init(this)
subject = AuthDataSourceImpl(authServiceFactory, NetworkModule.createJson())
subject = AuthDataSourceImpl(authServiceFactory, NetworkModule.createJson(), logger)
coEvery { authServiceFactory.provideService(any()) } returns authService
}

View File

@@ -4,6 +4,7 @@ import com.google.common.truth.Truth.assertThat
import gq.kirmanak.mealient.data.auth.AuthDataSource
import gq.kirmanak.mealient.data.auth.AuthRepo
import gq.kirmanak.mealient.data.auth.AuthStorage
import gq.kirmanak.mealient.logging.Logger
import gq.kirmanak.mealient.test.AuthImplTestData.TEST_AUTH_HEADER
import gq.kirmanak.mealient.test.AuthImplTestData.TEST_PASSWORD
import gq.kirmanak.mealient.test.AuthImplTestData.TEST_TOKEN
@@ -26,12 +27,15 @@ class AuthRepoImplTest {
@MockK(relaxUnitFun = true)
lateinit var storage: AuthStorage
@MockK(relaxUnitFun = true)
lateinit var logger: Logger
lateinit var subject: AuthRepo
@Before
fun setUp() {
MockKAnnotations.init(this)
subject = AuthRepoImpl(storage, dataSource)
subject = AuthRepoImpl(storage, dataSource, logger)
}
@Test

View File

@@ -10,10 +10,13 @@ import gq.kirmanak.mealient.data.auth.AuthStorage
import gq.kirmanak.mealient.data.auth.impl.AuthStorageImpl.Companion.AUTH_HEADER_KEY
import gq.kirmanak.mealient.data.auth.impl.AuthStorageImpl.Companion.EMAIL_KEY
import gq.kirmanak.mealient.data.auth.impl.AuthStorageImpl.Companion.PASSWORD_KEY
import gq.kirmanak.mealient.logging.Logger
import gq.kirmanak.mealient.test.AuthImplTestData.TEST_AUTH_HEADER
import gq.kirmanak.mealient.test.AuthImplTestData.TEST_PASSWORD
import gq.kirmanak.mealient.test.AuthImplTestData.TEST_USERNAME
import gq.kirmanak.mealient.test.HiltRobolectricTest
import io.mockk.MockKAnnotations
import io.mockk.impl.annotations.MockK
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.test.runTest
@@ -29,14 +32,18 @@ class AuthStorageImplTest : HiltRobolectricTest() {
@ApplicationContext
lateinit var context: Context
@MockK(relaxUnitFun = true)
lateinit var logger: Logger
lateinit var subject: AuthStorage
lateinit var sharedPreferences: SharedPreferences
@Before
fun setUp() {
MockKAnnotations.init(this)
sharedPreferences = context.getSharedPreferences("test", Context.MODE_PRIVATE)
subject = AuthStorageImpl(sharedPreferences)
subject = AuthStorageImpl(sharedPreferences, logger)
}
@Test

View File

@@ -6,6 +6,7 @@ import gq.kirmanak.mealient.data.baseurl.impl.VersionResponse
import gq.kirmanak.mealient.data.baseurl.impl.VersionService
import gq.kirmanak.mealient.data.network.NetworkError
import gq.kirmanak.mealient.data.network.ServiceFactory
import gq.kirmanak.mealient.logging.Logger
import gq.kirmanak.mealient.test.AuthImplTestData.TEST_BASE_URL
import gq.kirmanak.mealient.test.toJsonResponseBody
import io.mockk.MockKAnnotations
@@ -28,12 +29,15 @@ class VersionDataSourceImplTest {
@MockK
lateinit var versionServiceFactory: ServiceFactory<VersionService>
@MockK(relaxUnitFun = true)
lateinit var logger: Logger
lateinit var subject: VersionDataSource
@Before
fun setUp() {
MockKAnnotations.init(this)
subject = VersionDataSourceImpl(versionServiceFactory)
subject = VersionDataSourceImpl(versionServiceFactory, logger)
coEvery { versionServiceFactory.provideService(eq(TEST_BASE_URL)) } returns versionService
}

View File

@@ -3,6 +3,7 @@ package gq.kirmanak.mealient.data.network
import com.google.common.truth.Truth.assertThat
import gq.kirmanak.mealient.data.baseurl.BaseURLStorage
import gq.kirmanak.mealient.data.baseurl.impl.VersionService
import gq.kirmanak.mealient.logging.Logger
import gq.kirmanak.mealient.test.AuthImplTestData.TEST_BASE_URL
import io.mockk.*
import io.mockk.impl.annotations.MockK
@@ -27,12 +28,15 @@ class RetrofitServiceFactoryTest {
@MockK
lateinit var versionService: VersionService
@MockK(relaxUnitFun = true)
lateinit var logger: Logger
lateinit var subject: ServiceFactory<VersionService>
@Before
fun setUp() {
MockKAnnotations.init(this)
subject = retrofitBuilder.createServiceFactory(baseURLStorage)
subject = retrofitBuilder.createServiceFactory(baseURLStorage, logger)
coEvery { retrofitBuilder.buildRetrofit(any()) } returns retrofit
every { retrofit.create(eq(VersionService::class.java)) } returns versionService
coEvery { baseURLStorage.requireBaseURL() } returns TEST_BASE_URL

View File

@@ -2,6 +2,7 @@ package gq.kirmanak.mealient.data.recipes.impl
import com.google.common.truth.Truth.assertThat
import gq.kirmanak.mealient.data.baseurl.BaseURLStorage
import gq.kirmanak.mealient.logging.Logger
import io.mockk.MockKAnnotations
import io.mockk.coEvery
import io.mockk.impl.annotations.MockK
@@ -18,10 +19,13 @@ class RecipeImageUrlProviderImplTest {
@MockK
lateinit var baseURLStorage: BaseURLStorage
@MockK(relaxUnitFun = true)
lateinit var logger: Logger
@Before
fun setUp() {
MockKAnnotations.init(this)
subject = RecipeImageUrlProviderImpl(baseURLStorage)
subject = RecipeImageUrlProviderImpl(baseURLStorage, logger)
prepareBaseURL("https://google.com/")
}

View File

@@ -6,6 +6,7 @@ import gq.kirmanak.mealient.data.recipes.RecipeRepo
import gq.kirmanak.mealient.data.recipes.db.RecipeStorage
import gq.kirmanak.mealient.data.recipes.network.RecipeDataSource
import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity
import gq.kirmanak.mealient.logging.Logger
import gq.kirmanak.mealient.test.RecipeImplTestData.FULL_CAKE_INFO_ENTITY
import gq.kirmanak.mealient.test.RecipeImplTestData.GET_CAKE_RESPONSE
import io.mockk.MockKAnnotations
@@ -32,12 +33,15 @@ class RecipeRepoImplTest {
@MockK
lateinit var pagingSourceFactory: InvalidatingPagingSourceFactory<Int, RecipeSummaryEntity>
@MockK(relaxUnitFun = true)
lateinit var logger: Logger
lateinit var subject: RecipeRepo
@Before
fun setUp() {
MockKAnnotations.init(this)
subject = RecipeRepoImpl(remoteMediator, storage, pagingSourceFactory, dataSource)
subject = RecipeRepoImpl(remoteMediator, storage, pagingSourceFactory, dataSource, logger)
}
@Test

View File

@@ -7,6 +7,7 @@ import gq.kirmanak.mealient.data.network.NetworkError.Unauthorized
import gq.kirmanak.mealient.data.recipes.db.RecipeStorage
import gq.kirmanak.mealient.data.recipes.network.RecipeDataSource
import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity
import gq.kirmanak.mealient.logging.Logger
import gq.kirmanak.mealient.test.RecipeImplTestData.TEST_RECIPE_SUMMARIES
import io.mockk.MockKAnnotations
import io.mockk.coEvery
@@ -38,10 +39,13 @@ class RecipesRemoteMediatorTest {
@MockK(relaxUnitFun = true)
lateinit var pagingSourceFactory: InvalidatingPagingSourceFactory<Int, RecipeSummaryEntity>
@MockK(relaxUnitFun = true)
lateinit var logger: Logger
@Before
fun setUp() {
MockKAnnotations.init(this)
subject = RecipesRemoteMediator(storage, dataSource, pagingSourceFactory)
subject = RecipesRemoteMediator(storage, dataSource, pagingSourceFactory, logger)
}
@Test

View File

@@ -4,7 +4,6 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import dagger.hilt.android.testing.HiltAndroidRule
import dagger.hilt.android.testing.HiltTestApplication
import org.junit.Before
import org.junit.BeforeClass
import org.junit.Rule
import org.junit.runner.RunWith
import org.robolectric.annotation.Config
@@ -13,13 +12,6 @@ import org.robolectric.annotation.Config
@Config(application = HiltTestApplication::class, manifest = Config.NONE)
abstract class HiltRobolectricTest {
companion object {
@BeforeClass
@JvmStatic
fun setupTimber() = plantPrintLn()
}
@get:Rule
var hiltRule = HiltAndroidRule(this)

View File

@@ -2,18 +2,9 @@ package gq.kirmanak.mealient.test
import android.app.Application
import androidx.test.ext.junit.runners.AndroidJUnit4
import org.junit.BeforeClass
import org.junit.runner.RunWith
import org.robolectric.annotation.Config
@RunWith(AndroidJUnit4::class)
@Config(application = Application::class, manifest = Config.NONE)
abstract class RobolectricTest {
companion object {
@BeforeClass
@JvmStatic
fun setupTimber() = plantPrintLn()
}
}
abstract class RobolectricTest

View File

@@ -2,15 +2,6 @@ package gq.kirmanak.mealient.test
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.ResponseBody.Companion.toResponseBody
import timber.log.Timber
fun String.toJsonResponseBody() = toResponseBody("application/json".toMediaType())
fun plantPrintLn() {
Timber.plant(object : Timber.Tree() {
override fun log(priority: Int, tag: String?, message: String, t: Throwable?) {
println(message)
t?.printStackTrace()
}
})
}

View File

@@ -3,6 +3,7 @@ package gq.kirmanak.mealient.ui.add
import com.google.common.truth.Truth.assertThat
import gq.kirmanak.mealient.data.add.AddRecipeRepo
import gq.kirmanak.mealient.data.add.models.AddRecipeRequest
import gq.kirmanak.mealient.logging.Logger
import io.mockk.MockKAnnotations
import io.mockk.coEvery
import io.mockk.coVerify
@@ -27,13 +28,16 @@ class AddRecipeViewModelTest {
@MockK(relaxUnitFun = true)
lateinit var addRecipeRepo: AddRecipeRepo
@MockK(relaxUnitFun = true)
lateinit var logger: Logger
lateinit var subject: AddRecipeViewModel
@Before
fun setUp() {
MockKAnnotations.init(this)
Dispatchers.setMain(UnconfinedTestDispatcher())
subject = AddRecipeViewModel(addRecipeRepo)
subject = AddRecipeViewModel(addRecipeRepo, logger)
}
@After

View File

@@ -3,6 +3,7 @@ package gq.kirmanak.mealient.ui.baseurl
import gq.kirmanak.mealient.data.baseurl.BaseURLStorage
import gq.kirmanak.mealient.data.baseurl.VersionDataSource
import gq.kirmanak.mealient.data.baseurl.VersionInfo
import gq.kirmanak.mealient.logging.Logger
import gq.kirmanak.mealient.test.AuthImplTestData.TEST_BASE_URL
import gq.kirmanak.mealient.test.RobolectricTest
import io.mockk.MockKAnnotations
@@ -24,12 +25,15 @@ class BaseURLViewModelTest : RobolectricTest() {
@MockK
lateinit var versionDataSource: VersionDataSource
@MockK(relaxUnitFun = true)
lateinit var logger: Logger
lateinit var subject: BaseURLViewModel
@Before
fun setUp() {
MockKAnnotations.init(this)
subject = BaseURLViewModel(baseURLStorage, versionDataSource)
subject = BaseURLViewModel(baseURLStorage, versionDataSource, logger)
}
@Test

View File

@@ -2,6 +2,7 @@ package gq.kirmanak.mealient.ui.disclaimer
import com.google.common.truth.Truth.assertThat
import gq.kirmanak.mealient.data.disclaimer.DisclaimerStorage
import gq.kirmanak.mealient.logging.Logger
import io.mockk.MockKAnnotations
import io.mockk.impl.annotations.MockK
import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -17,12 +18,15 @@ class DisclaimerViewModelTest {
@MockK(relaxUnitFun = true)
lateinit var storage: DisclaimerStorage
@MockK(relaxUnitFun = true)
lateinit var logger: Logger
lateinit var subject: DisclaimerViewModel
@Before
fun setUp() {
MockKAnnotations.init(this)
subject = DisclaimerViewModel(storage)
subject = DisclaimerViewModel(storage, logger)
}
@Test