diff --git a/app/src/test/java/com/hieuwu/groceriesstore/domain/usecases/impl/UserSettingsUseCaseImplTest.kt b/app/src/test/java/com/hieuwu/groceriesstore/domain/usecases/impl/UserSettingsUseCaseImplTest.kt new file mode 100644 index 00000000..e9a14006 --- /dev/null +++ b/app/src/test/java/com/hieuwu/groceriesstore/domain/usecases/impl/UserSettingsUseCaseImplTest.kt @@ -0,0 +1,49 @@ +package com.hieuwu.groceriesstore.domain.usecases.impl + +import com.hieuwu.groceriesstore.data.repository.UserRepository +import com.hieuwu.groceriesstore.domain.usecases.UserSettingsUseCase +import java.util.* +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.verify +import kotlin.random.Random + +@RunWith(MockitoJUnitRunner::class) +class UserSettingsUseCaseImplTest { + + @Mock + lateinit var mockedUserRepository: UserRepository + private lateinit var testee: UserSettingsUseCase + + @Before + fun setUp() { + testee = UserSettingsUseCaseImpl(userRepository = mockedUserRepository) + } + + @Test + fun whenExecute_thenCallUserRepository() { + val input = + UserSettingsUseCase.Input( + id = UUID.randomUUID().toString(), + isOrderCreatedEnabled = Random.nextBoolean(), + isDatabaseRefreshedEnabled = Random.nextBoolean(), + isPromotionEnabled = Random.nextBoolean(), + ) + + runBlocking { + testee.execute(input) + + verify(mockedUserRepository) + .updateUserSettings( + id = input.id, + isOrderCreatedEnabled = input.isOrderCreatedEnabled, + isDatabaseRefreshedEnabled = input.isDatabaseRefreshedEnabled, + isPromotionEnabled = input.isPromotionEnabled, + ) + } + } +}