test(tui-03): add gap detection test for SnapshotPhaseReducer
This commit is contained in:
@@ -33,6 +33,60 @@ class SnapshotPhaseReducerTest {
|
|||||||
assertTrue(state.sessions.sessions.isEmpty())
|
assertTrue(state.sessions.sessions.isEmpty())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `live event with sessionSequence at or below cursor is dropped`() {
|
||||||
|
val state = TuiState(snapshotPhase = false, cursors = mapOf("s1" to 5L))
|
||||||
|
val action = Action.ServerEventReceived(
|
||||||
|
ServerMessage.SessionStarted(
|
||||||
|
sessionId = SessionId("s1"),
|
||||||
|
workflowId = "wf",
|
||||||
|
sequence = 5L,
|
||||||
|
sessionSequence = 5L,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
val result = SnapshotPhaseReducer.process(state, action)
|
||||||
|
|
||||||
|
assertTrue(result.actionsToDispatch.isEmpty())
|
||||||
|
assertEquals(5L, result.state.cursors["s1"])
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `live event with sessionSequence one above cursor is applied and cursor advances`() {
|
||||||
|
val state = TuiState(snapshotPhase = false, cursors = mapOf("s1" to 5L))
|
||||||
|
val action = Action.ServerEventReceived(
|
||||||
|
ServerMessage.SessionStarted(
|
||||||
|
sessionId = SessionId("s1"),
|
||||||
|
workflowId = "wf",
|
||||||
|
sequence = 6L,
|
||||||
|
sessionSequence = 6L,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
val result = SnapshotPhaseReducer.process(state, action)
|
||||||
|
|
||||||
|
assertEquals(listOf(action), result.actionsToDispatch)
|
||||||
|
assertEquals(6L, result.state.cursors["s1"])
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `gap event is applied and cursor advances to incoming sequence`() {
|
||||||
|
val state = TuiState(snapshotPhase = false, cursors = mapOf("s1" to 5L))
|
||||||
|
val action = Action.ServerEventReceived(
|
||||||
|
ServerMessage.SessionStarted(
|
||||||
|
sessionId = SessionId("s1"),
|
||||||
|
workflowId = "wf",
|
||||||
|
sequence = 8L,
|
||||||
|
sessionSequence = 8L,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
val result = SnapshotPhaseReducer.process(state, action)
|
||||||
|
|
||||||
|
assertEquals(listOf(action), result.actionsToDispatch)
|
||||||
|
assertEquals(8L, result.state.cursors["s1"])
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `during snapshotPhase SessionSnapshot installs cursor and is forwarded to sub-reducers`() {
|
fun `during snapshotPhase SessionSnapshot installs cursor and is forwarded to sub-reducers`() {
|
||||||
val state = TuiState(snapshotPhase = true)
|
val state = TuiState(snapshotPhase = true)
|
||||||
|
|||||||
Reference in New Issue
Block a user