From 2c4a52ac9c9070be4ff965a5b29183f522bcfb9e Mon Sep 17 00:00:00 2001 From: Ahmed Hosny Date: Tue, 29 Apr 2025 16:15:01 +0300 Subject: [PATCH] add unit test for create new state in state usecase and add create state helper and add stateUseCase --- .../logic/repositories/StateRepository.kt | 10 ++-- src/main/kotlin/logic/usecase/StateUseCase.kt | 14 +++++ src/main/kotlin/model/State.kt | 6 +-- src/test/kotlin/helper/createStateHelper.kt | 11 ++++ .../kotlin/logic/usecase/StateUseCaseTest.kt | 51 +++++++++++++++++++ 5 files changed, 84 insertions(+), 8 deletions(-) create mode 100644 src/main/kotlin/logic/usecase/StateUseCase.kt create mode 100644 src/test/kotlin/helper/createStateHelper.kt create mode 100644 src/test/kotlin/logic/usecase/StateUseCaseTest.kt diff --git a/src/main/kotlin/logic/repositories/StateRepository.kt b/src/main/kotlin/logic/repositories/StateRepository.kt index e0589d3..bb0ce66 100644 --- a/src/main/kotlin/logic/repositories/StateRepository.kt +++ b/src/main/kotlin/logic/repositories/StateRepository.kt @@ -3,9 +3,9 @@ package com.berlin.logic.repositories import com.berlin.model.State interface StateRepository { - fun createState(state: State):Boolean - fun getStatesByProjectId(projectId:String):List - fun deleteState(stateId:String):Boolean - fun updateState(state: State):Boolean - fun getStateByTaskId(taskId:String):State? + fun addState(state: State): Result + fun getStatesByProjectId(projectId: String):List + fun deleteState(stateId: String): Result + fun updateState(state: State): Result + fun getStateByTaskId(taskId: String): State? } \ No newline at end of file diff --git a/src/main/kotlin/logic/usecase/StateUseCase.kt b/src/main/kotlin/logic/usecase/StateUseCase.kt new file mode 100644 index 0000000..5d37b95 --- /dev/null +++ b/src/main/kotlin/logic/usecase/StateUseCase.kt @@ -0,0 +1,14 @@ +package com.berlin.logic.usecase + +import com.berlin.logic.repositories.StateRepository +import com.berlin.model.State + +class StateUseCase( + private val stateRepository: StateRepository +) { + fun createNewState(state: State): Boolean { + return false + } + + +} \ No newline at end of file diff --git a/src/main/kotlin/model/State.kt b/src/main/kotlin/model/State.kt index a0a3580..97cee5b 100644 --- a/src/main/kotlin/model/State.kt +++ b/src/main/kotlin/model/State.kt @@ -1,7 +1,7 @@ package com.berlin.model data class State( - val id:String, - val name:String, - val projectId:String, + val id: String, + val name: String, + val projectId: String, ) diff --git a/src/test/kotlin/helper/createStateHelper.kt b/src/test/kotlin/helper/createStateHelper.kt new file mode 100644 index 0000000..6029373 --- /dev/null +++ b/src/test/kotlin/helper/createStateHelper.kt @@ -0,0 +1,11 @@ +package com.berlin.helper + +import com.berlin.model.State + +fun createStateHelper( + id: String = "1", name: String = "TODO", projectId: String = "1" +): State { + return State( + id = id, name = name, projectId = projectId + ) +} \ No newline at end of file diff --git a/src/test/kotlin/logic/usecase/StateUseCaseTest.kt b/src/test/kotlin/logic/usecase/StateUseCaseTest.kt new file mode 100644 index 0000000..f27dc42 --- /dev/null +++ b/src/test/kotlin/logic/usecase/StateUseCaseTest.kt @@ -0,0 +1,51 @@ +package com.berlin.logic.usecase + +import com.berlin.helper.createStateHelper +import com.berlin.logic.repositories.StateRepository +import com.google.common.truth.Truth.assertThat +import io.mockk.every +import io.mockk.mockk +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test + +class StateUseCaseTest { + + private lateinit var stateUseCase: StateUseCase + private val stateRepository: StateRepository = mockk(relaxed = true) + + @BeforeEach + fun setup(){ + stateUseCase = StateUseCase(stateRepository) + } + + @Test + fun `should return true when valid state input`(){ + // Given + val validInput = createStateHelper( name = "TODO") + // When + val result = stateUseCase.createNewState(validInput) + // Then + assertThat(result).isTrue() + } + + @Test + fun `should return true when state creation succeeds`(){ + // Given + every { stateRepository.addState(any()) } returns Result.success(" ") + // When + val result = stateUseCase.createNewState(createStateHelper()) + // Then + assertThat(result).isTrue() + } + + @Test + fun `should return false when state creation fails`(){ + // Given + every { stateRepository.addState(any()) } returns Result.failure(Exception()) + // When + val result = stateUseCase.createNewState(createStateHelper()) + // Then + assertThat(result).isFalse() + } + +}