epic-12: after epic audit and init commit
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
import com.correx.core.context.DefaultContextReducer
|
||||
import com.correx.core.context.state.ContextState
|
||||
import com.correx.core.events.events.ContextBuildingFailedEvent
|
||||
import com.correx.core.events.events.ContextBuildingInterruptedEvent
|
||||
import com.correx.core.events.events.ContextBuildingStartedEvent
|
||||
import com.correx.core.events.events.ContextPackBuiltEvent
|
||||
import com.correx.core.events.types.ContextPackId
|
||||
import com.correx.core.events.types.SessionId
|
||||
import com.correx.core.events.types.StageId
|
||||
import com.correx.testing.fixtures.EventFixtures.stored
|
||||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.jupiter.api.Assertions.assertFalse
|
||||
import org.junit.jupiter.api.Assertions.assertTrue
|
||||
import org.junit.jupiter.api.Test
|
||||
|
||||
class DefaultContextReducerTest {
|
||||
|
||||
private val reducer = DefaultContextReducer()
|
||||
private val sessionId = SessionId("s1")
|
||||
private val stageId = StageId("stage-1")
|
||||
private val packId = ContextPackId("pack-1")
|
||||
|
||||
@Test
|
||||
fun `ContextBuildingStartedEvent sets buildingInProgress to true`() {
|
||||
val state = reducer.reduce(
|
||||
ContextState(),
|
||||
stored(payload = ContextBuildingStartedEvent(sessionId, stageId))
|
||||
)
|
||||
assertTrue(state.buildingInProgress)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `ContextPackBuiltEvent records pack and clears buildingInProgress`() {
|
||||
val started = reducer.reduce(
|
||||
ContextState(),
|
||||
stored(payload = ContextBuildingStartedEvent(sessionId, stageId))
|
||||
)
|
||||
val built = reducer.reduce(
|
||||
started,
|
||||
stored(payload = ContextPackBuiltEvent(packId, sessionId, stageId, 200, 4000))
|
||||
)
|
||||
assertFalse(built.buildingInProgress)
|
||||
assertEquals(1, built.builtPackIds.size)
|
||||
assertTrue(built.builtPackIds.contains(packId))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `ContextBuildingFailedEvent clears buildingInProgress`() {
|
||||
val started = reducer.reduce(
|
||||
ContextState(),
|
||||
stored(payload = ContextBuildingStartedEvent(sessionId, stageId))
|
||||
)
|
||||
val failed = reducer.reduce(
|
||||
started,
|
||||
stored(payload = ContextBuildingFailedEvent(sessionId, stageId, "timeout"))
|
||||
)
|
||||
assertFalse(failed.buildingInProgress)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `ContextBuildingInterruptedEvent clears buildingInProgress and sets interrupted`() {
|
||||
val started = reducer.reduce(
|
||||
ContextState(),
|
||||
stored(payload = ContextBuildingStartedEvent(sessionId, stageId))
|
||||
)
|
||||
val interrupted = reducer.reduce(
|
||||
started,
|
||||
stored(payload = ContextBuildingInterruptedEvent(sessionId, stageId))
|
||||
)
|
||||
assertFalse(interrupted.buildingInProgress)
|
||||
assertTrue(interrupted.interrupted)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `ContextBuildingFailedEvent does not set interrupted`() {
|
||||
val started = reducer.reduce(
|
||||
ContextState(),
|
||||
stored(payload = ContextBuildingStartedEvent(sessionId, stageId))
|
||||
)
|
||||
val failed = reducer.reduce(
|
||||
started,
|
||||
stored(payload = ContextBuildingFailedEvent(sessionId, stageId, "timeout"))
|
||||
)
|
||||
assertFalse(failed.interrupted)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `unrelated events leave state unchanged`() {
|
||||
val state = ContextState()
|
||||
val after = reducer.reduce(state, stored())
|
||||
assertEquals(state, after)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user