From 58003a49fb0e89ccecfc529c7d0eb8cd7afe9bba Mon Sep 17 00:00:00 2001 From: Yashraj254 Date: Sun, 8 Oct 2023 01:56:36 +0530 Subject: [PATCH 1/2] test case added for GetProductsListUseCase --- .../impl/GetProductsListUseCaseImplTest.kt | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 app/src/test/java/com/hieuwu/groceriesstore/domain/usecases/impl/GetProductsListUseCaseImplTest.kt diff --git a/app/src/test/java/com/hieuwu/groceriesstore/domain/usecases/impl/GetProductsListUseCaseImplTest.kt b/app/src/test/java/com/hieuwu/groceriesstore/domain/usecases/impl/GetProductsListUseCaseImplTest.kt new file mode 100644 index 00000000..90c5843a --- /dev/null +++ b/app/src/test/java/com/hieuwu/groceriesstore/domain/usecases/impl/GetProductsListUseCaseImplTest.kt @@ -0,0 +1,68 @@ +package com.hieuwu.groceriesstore.domain.usecases.impl + +import com.hieuwu.groceriesstore.data.repository.ProductRepository +import com.hieuwu.groceriesstore.domain.models.ProductModel +import com.hieuwu.groceriesstore.domain.usecases.GetProductsListUseCase +import junit.framework.TestCase.assertEquals +import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.runBlocking +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.mockito.Mock +import org.mockito.junit.MockitoJUnitRunner +import org.mockito.kotlin.whenever + +@RunWith(MockitoJUnitRunner::class) + +class GetProductsListUseCaseImplTest { + + @Mock + lateinit var mockedProductsRepository: ProductRepository + + private lateinit var testee: GetProductsListUseCase + + @Before + fun setUp() { + testee = GetProductsListUseCaseImpl( + productRepository = mockedProductsRepository + ) + } + + @Test + fun givenUserAvailable_whenExecute_thenReturnCorrectValue() { + val mockedProducts = listOf( + ProductModel(id = "1", name = "Apple", price = 1.0, image = "image1.jpg", description = "Fruit", nutrition = "Healthy"), + ProductModel(id = "2", name = "Fries", price = 5.0, image = "image2.jpg", description = "Junk food", nutrition = "Unhealthy"), + ProductModel(id = "3", name = "Potato", price = 10.0, image = "image3.jpg", description = "Vegetable", nutrition = "Healthy"), + ) + whenever(mockedProductsRepository.products).thenReturn(flow { + emit(mockedProducts) + }) + runBlocking { + val result = testee.execute(GetProductsListUseCase.Input()) + + result.result.collect { products -> + assertEquals(mockedProducts[0], products[0]) + assertEquals(mockedProducts[1], products[1]) + assertEquals(mockedProducts[2], products[2]) + assertEquals(mockedProducts[1].name, "Fries") + } + } + } + + @Test + fun givenProductsUnavailable_whenExecute_thenReturnCorrectValue() { + whenever(mockedProductsRepository.products).thenReturn(flow { + emit(listOf()) + }) + + runBlocking { + val result = testee.execute(GetProductsListUseCase.Input()) + result.result.collect { + assertEquals(it.isEmpty(), true) + } + } + } + +} \ No newline at end of file From 7fd5a26f52f6f67ac218090a9010a55161cc768a Mon Sep 17 00:00:00 2001 From: Yashraj254 Date: Sun, 8 Oct 2023 02:01:28 +0530 Subject: [PATCH 2/2] renamed test method name --- .../domain/usecases/impl/GetProductsListUseCaseImplTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/test/java/com/hieuwu/groceriesstore/domain/usecases/impl/GetProductsListUseCaseImplTest.kt b/app/src/test/java/com/hieuwu/groceriesstore/domain/usecases/impl/GetProductsListUseCaseImplTest.kt index 90c5843a..307f70d0 100644 --- a/app/src/test/java/com/hieuwu/groceriesstore/domain/usecases/impl/GetProductsListUseCaseImplTest.kt +++ b/app/src/test/java/com/hieuwu/groceriesstore/domain/usecases/impl/GetProductsListUseCaseImplTest.kt @@ -30,7 +30,7 @@ class GetProductsListUseCaseImplTest { } @Test - fun givenUserAvailable_whenExecute_thenReturnCorrectValue() { + fun givenProductsAvailable_whenExecute_thenReturnCorrectValue() { val mockedProducts = listOf( ProductModel(id = "1", name = "Apple", price = 1.0, image = "image1.jpg", description = "Fruit", nutrition = "Healthy"), ProductModel(id = "2", name = "Fries", price = 5.0, image = "image2.jpg", description = "Junk food", nutrition = "Unhealthy"),