From be534e73c31d26caf454e2e9eb68d0876fee2f21 Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Sun, 13 Nov 2022 13:18:08 +0100 Subject: [PATCH] Add paging factory tests --- .../impl/RecipePagingSourceFactoryImplTest.kt | 63 +++++++++++++++++++ .../mealient/test/RecipeImplTestData.kt | 3 + 2 files changed, 66 insertions(+) create mode 100644 app/src/test/java/gq/kirmanak/mealient/data/recipes/impl/RecipePagingSourceFactoryImplTest.kt diff --git a/app/src/test/java/gq/kirmanak/mealient/data/recipes/impl/RecipePagingSourceFactoryImplTest.kt b/app/src/test/java/gq/kirmanak/mealient/data/recipes/impl/RecipePagingSourceFactoryImplTest.kt new file mode 100644 index 0000000..d9ec3b9 --- /dev/null +++ b/app/src/test/java/gq/kirmanak/mealient/data/recipes/impl/RecipePagingSourceFactoryImplTest.kt @@ -0,0 +1,63 @@ +package gq.kirmanak.mealient.data.recipes.impl + +import androidx.paging.PagingSource +import com.google.common.truth.Truth.assertThat +import dagger.hilt.android.testing.HiltAndroidTest +import gq.kirmanak.mealient.data.recipes.db.RecipeStorage +import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity +import gq.kirmanak.mealient.test.HiltRobolectricTest +import gq.kirmanak.mealient.test.RecipeImplTestData.CAKE_RECIPE_SUMMARY_ENTITY +import gq.kirmanak.mealient.test.RecipeImplTestData.PORRIDGE_RECIPE_SUMMARY_ENTITY +import gq.kirmanak.mealient.test.RecipeImplTestData.TEST_RECIPE_SUMMARIES +import gq.kirmanak.mealient.test.RecipeImplTestData.TEST_RECIPE_SUMMARY_ENTITIES +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.test.runTest +import org.junit.Test +import javax.inject.Inject + +@HiltAndroidTest +@OptIn(ExperimentalCoroutinesApi::class) +class RecipePagingSourceFactoryImplTest : HiltRobolectricTest() { + + @Inject + lateinit var subject: RecipePagingSourceFactory + + @Inject + lateinit var storage: RecipeStorage + + @Test + fun `when query is ca expect cake only is returned`() = runTest { + storage.saveRecipes(TEST_RECIPE_SUMMARIES) + subject.setQuery("ca") + assertThat(queryRecipes()).isEqualTo(listOf(CAKE_RECIPE_SUMMARY_ENTITY)) + } + + @Test + fun `when query is po expect porridge only is returned`() = runTest { + storage.saveRecipes(TEST_RECIPE_SUMMARIES) + subject.setQuery("po") + assertThat(queryRecipes()).isEqualTo(listOf(PORRIDGE_RECIPE_SUMMARY_ENTITY)) + } + + @Test + fun `when query is e expect cake and porridge are returned`() = runTest { + storage.saveRecipes(TEST_RECIPE_SUMMARIES) + subject.setQuery("e") + assertThat(queryRecipes()).isEqualTo(TEST_RECIPE_SUMMARY_ENTITIES) + } + + @Test + fun `when query is null expect cake and porridge are returned`() = runTest { + storage.saveRecipes(TEST_RECIPE_SUMMARIES) + subject.setQuery(null) + assertThat(queryRecipes()).isEqualTo(TEST_RECIPE_SUMMARY_ENTITIES) + } + + private suspend fun queryRecipes(): List { + val loadParam = PagingSource.LoadParams.Refresh(null, Int.MAX_VALUE, false) + val loadResult = subject.invoke().load(loadParam) + return (loadResult as PagingSource.LoadResult.Page).data + } + +} + diff --git a/app/src/test/java/gq/kirmanak/mealient/test/RecipeImplTestData.kt b/app/src/test/java/gq/kirmanak/mealient/test/RecipeImplTestData.kt index 54cb86f..8b1107f 100644 --- a/app/src/test/java/gq/kirmanak/mealient/test/RecipeImplTestData.kt +++ b/app/src/test/java/gq/kirmanak/mealient/test/RecipeImplTestData.kt @@ -69,6 +69,9 @@ object RecipeImplTestData { imageId = "porridge", ) + val TEST_RECIPE_SUMMARY_ENTITIES = + listOf(CAKE_RECIPE_SUMMARY_ENTITY, PORRIDGE_RECIPE_SUMMARY_ENTITY) + val SUGAR_INGREDIENT = RecipeIngredientInfo( note = "2 oz of white sugar", )