From 22bae5e9ee3d387401cea82c4665af7893859577 Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Fri, 5 Aug 2022 20:27:44 +0200 Subject: [PATCH] Add mock of Logger to tests --- .../data/add/impl/AddRecipeDataSourceImplTest.kt | 6 +++++- .../mealient/data/auth/impl/AuthDataSourceImplTest.kt | 6 +++++- .../mealient/data/auth/impl/AuthRepoImplTest.kt | 6 +++++- .../mealient/data/auth/impl/AuthStorageImplTest.kt | 9 ++++++++- .../data/baseurl/VersionDataSourceImplTest.kt | 6 +++++- .../data/network/RetrofitServiceFactoryTest.kt | 6 +++++- .../recipes/impl/RecipeImageUrlProviderImplTest.kt | 6 +++++- .../mealient/data/recipes/impl/RecipeRepoImplTest.kt | 6 +++++- .../data/recipes/impl/RecipesRemoteMediatorTest.kt | 6 +++++- .../gq/kirmanak/mealient/test/HiltRobolectricTest.kt | 8 -------- .../java/gq/kirmanak/mealient/test/RobolectricTest.kt | 11 +---------- .../java/gq/kirmanak/mealient/test/TestExtensions.kt | 9 --------- .../mealient/ui/add/AddRecipeViewModelTest.kt | 6 +++++- .../mealient/ui/baseurl/BaseURLViewModelTest.kt | 6 +++++- .../mealient/ui/disclaimer/DisclaimerViewModelTest.kt | 6 +++++- 15 files changed, 64 insertions(+), 39 deletions(-) diff --git a/app/src/test/java/gq/kirmanak/mealient/data/add/impl/AddRecipeDataSourceImplTest.kt b/app/src/test/java/gq/kirmanak/mealient/data/add/impl/AddRecipeDataSourceImplTest.kt index c434f6e..f58334e 100644 --- a/app/src/test/java/gq/kirmanak/mealient/data/add/impl/AddRecipeDataSourceImplTest.kt +++ b/app/src/test/java/gq/kirmanak/mealient/data/add/impl/AddRecipeDataSourceImplTest.kt @@ -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) diff --git a/app/src/test/java/gq/kirmanak/mealient/data/auth/impl/AuthDataSourceImplTest.kt b/app/src/test/java/gq/kirmanak/mealient/data/auth/impl/AuthDataSourceImplTest.kt index 746c11e..23b99dc 100644 --- a/app/src/test/java/gq/kirmanak/mealient/data/auth/impl/AuthDataSourceImplTest.kt +++ b/app/src/test/java/gq/kirmanak/mealient/data/auth/impl/AuthDataSourceImplTest.kt @@ -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 + @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 } diff --git a/app/src/test/java/gq/kirmanak/mealient/data/auth/impl/AuthRepoImplTest.kt b/app/src/test/java/gq/kirmanak/mealient/data/auth/impl/AuthRepoImplTest.kt index 562dd64..64f828b 100644 --- a/app/src/test/java/gq/kirmanak/mealient/data/auth/impl/AuthRepoImplTest.kt +++ b/app/src/test/java/gq/kirmanak/mealient/data/auth/impl/AuthRepoImplTest.kt @@ -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 diff --git a/app/src/test/java/gq/kirmanak/mealient/data/auth/impl/AuthStorageImplTest.kt b/app/src/test/java/gq/kirmanak/mealient/data/auth/impl/AuthStorageImplTest.kt index b19f22a..5208d82 100644 --- a/app/src/test/java/gq/kirmanak/mealient/data/auth/impl/AuthStorageImplTest.kt +++ b/app/src/test/java/gq/kirmanak/mealient/data/auth/impl/AuthStorageImplTest.kt @@ -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 diff --git a/app/src/test/java/gq/kirmanak/mealient/data/baseurl/VersionDataSourceImplTest.kt b/app/src/test/java/gq/kirmanak/mealient/data/baseurl/VersionDataSourceImplTest.kt index 7320340..54df6a5 100644 --- a/app/src/test/java/gq/kirmanak/mealient/data/baseurl/VersionDataSourceImplTest.kt +++ b/app/src/test/java/gq/kirmanak/mealient/data/baseurl/VersionDataSourceImplTest.kt @@ -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 + @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 } diff --git a/app/src/test/java/gq/kirmanak/mealient/data/network/RetrofitServiceFactoryTest.kt b/app/src/test/java/gq/kirmanak/mealient/data/network/RetrofitServiceFactoryTest.kt index 05a7c93..59050c6 100644 --- a/app/src/test/java/gq/kirmanak/mealient/data/network/RetrofitServiceFactoryTest.kt +++ b/app/src/test/java/gq/kirmanak/mealient/data/network/RetrofitServiceFactoryTest.kt @@ -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 @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 diff --git a/app/src/test/java/gq/kirmanak/mealient/data/recipes/impl/RecipeImageUrlProviderImplTest.kt b/app/src/test/java/gq/kirmanak/mealient/data/recipes/impl/RecipeImageUrlProviderImplTest.kt index 03661e4..230f70b 100644 --- a/app/src/test/java/gq/kirmanak/mealient/data/recipes/impl/RecipeImageUrlProviderImplTest.kt +++ b/app/src/test/java/gq/kirmanak/mealient/data/recipes/impl/RecipeImageUrlProviderImplTest.kt @@ -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/") } diff --git a/app/src/test/java/gq/kirmanak/mealient/data/recipes/impl/RecipeRepoImplTest.kt b/app/src/test/java/gq/kirmanak/mealient/data/recipes/impl/RecipeRepoImplTest.kt index 604f9a1..2a8801f 100644 --- a/app/src/test/java/gq/kirmanak/mealient/data/recipes/impl/RecipeRepoImplTest.kt +++ b/app/src/test/java/gq/kirmanak/mealient/data/recipes/impl/RecipeRepoImplTest.kt @@ -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 + @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 diff --git a/app/src/test/java/gq/kirmanak/mealient/data/recipes/impl/RecipesRemoteMediatorTest.kt b/app/src/test/java/gq/kirmanak/mealient/data/recipes/impl/RecipesRemoteMediatorTest.kt index 0f3c322..6e25216 100644 --- a/app/src/test/java/gq/kirmanak/mealient/data/recipes/impl/RecipesRemoteMediatorTest.kt +++ b/app/src/test/java/gq/kirmanak/mealient/data/recipes/impl/RecipesRemoteMediatorTest.kt @@ -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 + @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 diff --git a/app/src/test/java/gq/kirmanak/mealient/test/HiltRobolectricTest.kt b/app/src/test/java/gq/kirmanak/mealient/test/HiltRobolectricTest.kt index b4dc9fb..0fd38d7 100644 --- a/app/src/test/java/gq/kirmanak/mealient/test/HiltRobolectricTest.kt +++ b/app/src/test/java/gq/kirmanak/mealient/test/HiltRobolectricTest.kt @@ -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) diff --git a/app/src/test/java/gq/kirmanak/mealient/test/RobolectricTest.kt b/app/src/test/java/gq/kirmanak/mealient/test/RobolectricTest.kt index b58b3b4..5fc79bf 100644 --- a/app/src/test/java/gq/kirmanak/mealient/test/RobolectricTest.kt +++ b/app/src/test/java/gq/kirmanak/mealient/test/RobolectricTest.kt @@ -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() - } -} \ No newline at end of file +abstract class RobolectricTest \ No newline at end of file diff --git a/app/src/test/java/gq/kirmanak/mealient/test/TestExtensions.kt b/app/src/test/java/gq/kirmanak/mealient/test/TestExtensions.kt index da0a67f..b9dcf8b 100644 --- a/app/src/test/java/gq/kirmanak/mealient/test/TestExtensions.kt +++ b/app/src/test/java/gq/kirmanak/mealient/test/TestExtensions.kt @@ -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() - } - }) -} \ No newline at end of file diff --git a/app/src/test/java/gq/kirmanak/mealient/ui/add/AddRecipeViewModelTest.kt b/app/src/test/java/gq/kirmanak/mealient/ui/add/AddRecipeViewModelTest.kt index 97a5497..1f289bc 100644 --- a/app/src/test/java/gq/kirmanak/mealient/ui/add/AddRecipeViewModelTest.kt +++ b/app/src/test/java/gq/kirmanak/mealient/ui/add/AddRecipeViewModelTest.kt @@ -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 diff --git a/app/src/test/java/gq/kirmanak/mealient/ui/baseurl/BaseURLViewModelTest.kt b/app/src/test/java/gq/kirmanak/mealient/ui/baseurl/BaseURLViewModelTest.kt index d633c9f..b41b7fa 100644 --- a/app/src/test/java/gq/kirmanak/mealient/ui/baseurl/BaseURLViewModelTest.kt +++ b/app/src/test/java/gq/kirmanak/mealient/ui/baseurl/BaseURLViewModelTest.kt @@ -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 diff --git a/app/src/test/java/gq/kirmanak/mealient/ui/disclaimer/DisclaimerViewModelTest.kt b/app/src/test/java/gq/kirmanak/mealient/ui/disclaimer/DisclaimerViewModelTest.kt index af25311..e186f93 100644 --- a/app/src/test/java/gq/kirmanak/mealient/ui/disclaimer/DisclaimerViewModelTest.kt +++ b/app/src/test/java/gq/kirmanak/mealient/ui/disclaimer/DisclaimerViewModelTest.kt @@ -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