Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/main/kotlin/presentation/task_state/UpdateTaskStateUI.kt
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,9 @@ class UpdateTaskStateUI(
newName,
state.projectId
)
viewer.show(" $newName is updated Successfully")
viewer.show("$newName is updated Successfully")

} catch (ex: InvalidStateNameException) {
} catch (_: InvalidStateNameException) {
viewer.show("State Name must not be empty or blank")
} catch (_: InputCancelledException) {
viewer.show("Cancelled!")
Expand Down
62 changes: 56 additions & 6 deletions src/test/kotlin/presentation/task_state/UpdateTaskStateUITest.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.berlin.presentation.task_state

import com.berlin.domain.exception.InputCancelledException
import com.berlin.domain.exception.InvalidSelectionException
import com.berlin.domain.exception.InvalidStateNameException
import com.berlin.domain.model.TaskState
import com.berlin.domain.usecase.task_state.GetAllTaskStatesUseCase
Expand All @@ -26,13 +28,11 @@ class UpdateTaskStateUITest {
updateTaskStateUI = UpdateTaskStateUI(updateTaskStateUseCase, getAllTaskStatesUseCase, viewer, reader)
}



@Test
fun `run should throw InvalidStateNameException when State Name is empty or blank`() {
fun `run should throw InvalidStateNameException when State Name is null, empty, or blank`() {
//Given
every { getAllTaskStatesUseCase() } returns listOf(TaskState("Q1", "Menna", "P5"))
every { reader.read() } returnsMany listOf("1", " ")
every { getAllTaskStatesUseCase() } returns states
every { reader.read() } returnsMany listOf("1", null)
every {
updateTaskStateUseCase(any(), emptyStateName, any())
} throws InvalidStateNameException("State Name must not be empty or blank")
Expand All @@ -44,10 +44,60 @@ class UpdateTaskStateUITest {
verify { viewer.show("State Name must not be empty or blank") }
}

@Test
fun `updateState should cancel the update when user enters x`() {
//Given
every { getAllTaskStatesUseCase() } returns states
every { reader.read() } returnsMany listOf("1", "x")
every {
updateTaskStateUseCase(any(), "x", any())
} throws InputCancelledException("Cancelled!")

//When
updateTaskStateUI.run()

//Then
verify { viewer.show("Cancelled!") }
}


@Test
fun `updateState should trow invalid selection exception when the user choose invalid selection`() {
//Given
every { getAllTaskStatesUseCase() } returns states
every { reader.read() } returnsMany listOf("00", newValidStateName)
every {
updateTaskStateUseCase(any(), newValidStateName, any())
} throws InvalidSelectionException("invalid selection")

//When
updateTaskStateUI.run()

//Then
verify { viewer.show("invalid selection") }
}

@Test
fun `updateState should return success when the new state name is valid`() {
//Given
every { getAllTaskStatesUseCase() } returns states
every { reader.read() } returnsMany listOf("1", newValidStateName)
every {
updateTaskStateUseCase(any(), newValidStateName, any())
} returns "$newValidStateName is updated Successfully"

//When
updateTaskStateUI.run()

//Then
verify { viewer.show("$newValidStateName is updated Successfully") }
}


private companion object {
private val state = TaskState("Q1", "Menna", "P5")
private val states = listOf(state)
private const val successfullyStateNewName = "done"
private const val newValidStateName = "new state"
private const val emptyStateName = ""
}

Expand Down