fix: address P0-4 chat zombie, P0-5 double SessionStarted, P0-6 steering wrong content
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
import com.correx.core.context.model.ContextPack
|
||||
import com.correx.core.context.model.TokenBudget
|
||||
import com.correx.core.events.events.NewEvent
|
||||
import com.correx.core.events.events.SteeringNoteAddedEvent
|
||||
import com.correx.core.events.events.StoredEvent
|
||||
import com.correx.core.events.stores.EventStore
|
||||
import com.correx.core.events.types.ContextPackId
|
||||
@@ -36,7 +35,6 @@ import kotlinx.coroutines.runBlocking
|
||||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.jupiter.api.Assertions.assertFalse
|
||||
import org.junit.jupiter.api.Assertions.assertNotNull
|
||||
import org.junit.jupiter.api.Assertions.assertNull
|
||||
import org.junit.jupiter.api.Assertions.assertTrue
|
||||
import org.junit.jupiter.api.Test
|
||||
|
||||
@@ -83,20 +81,17 @@ class RouterFacadeTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `STEERING mode appends SteeringNoteAddedEvent with correct session id and user input`(): Unit = runBlocking {
|
||||
fun `STEERING mode does not append events to store`(): Unit = runBlocking {
|
||||
// SteeringNoteAddedEvent emission is deferred to P4-1 (see P0-6).
|
||||
// The steeringEmitted flag still informs the TUI that steering mode was used.
|
||||
val mockStore = mockEventStore()
|
||||
val facade = facadeWithMocks(eventStore = mockStore, chatMode = ChatMode.STEERING)
|
||||
facade.onUserInput(sessionId = SessionId("session-xyz"), input = "steer this way")
|
||||
assertEquals(1, mockStore.appendedEvents.size)
|
||||
val event = mockStore.appendedEvents[0]
|
||||
assertTrue(event.payload is SteeringNoteAddedEvent)
|
||||
val steeringEvent = event.payload as SteeringNoteAddedEvent
|
||||
assertEquals(SessionId("session-xyz"), steeringEvent.sessionId)
|
||||
assertEquals("steer this way", steeringEvent.content)
|
||||
assertTrue(mockStore.appendedEvents.isEmpty())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `STEERING mode appends SteeringNoteAddedEvent with stageId from state`(): Unit = runBlocking {
|
||||
fun `STEERING mode does not append events regardless of state stageId`(): Unit = runBlocking {
|
||||
val mockStore = mockEventStore()
|
||||
val stageId = StageId("stage-A")
|
||||
val facade = DefaultRouterFacade(
|
||||
@@ -116,28 +111,7 @@ class RouterFacadeTest {
|
||||
config = RouterConfig(tokenBudget = TokenBudget(limit = 5000)),
|
||||
)
|
||||
facade.onUserInput(sessionId = SessionId("test-session"), input = "Hello!", mode = ChatMode.STEERING)
|
||||
val steeringEvent = mockStore.appendedEvents[0].payload as SteeringNoteAddedEvent
|
||||
assertEquals(stageId, steeringEvent.stageId)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `STEERING mode appends SteeringNoteAddedEvent with null stageId when state has none`(): Unit = runBlocking {
|
||||
val mockStore = mockEventStore()
|
||||
val facade = DefaultRouterFacade(
|
||||
routerRepository = object : RouterRepository {
|
||||
override suspend fun getRouterState(sessionId: SessionId): RouterState =
|
||||
RouterState(sessionId = sessionId, workflowStatus = WorkflowStatus.IDLE, currentStageId = null)
|
||||
},
|
||||
routerContextBuilder = object : RouterContextBuilder {
|
||||
override suspend fun build(state: RouterState, budget: TokenBudget): ContextPack = emptyContextPack()
|
||||
},
|
||||
inferenceRouter = mockInferenceRouter("response"),
|
||||
eventStore = mockStore,
|
||||
config = RouterConfig(tokenBudget = TokenBudget(limit = 5000)),
|
||||
)
|
||||
facade.onUserInput(sessionId = SessionId("test-session"), input = "Hello!", mode = ChatMode.STEERING)
|
||||
val steeringEvent = mockStore.appendedEvents[0].payload as SteeringNoteAddedEvent
|
||||
assertNull(steeringEvent.stageId)
|
||||
assertTrue(mockStore.appendedEvents.isEmpty())
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
@@ -475,7 +449,8 @@ class RouterFacadeTest {
|
||||
assertNotNull(response)
|
||||
assertEquals("inference response", response.content)
|
||||
assertTrue(response.steeringEmitted)
|
||||
assertTrue(mockStore.appendedEvents.isNotEmpty())
|
||||
// Steering events are deferred to P4-1; no events appended yet.
|
||||
assertTrue(mockStore.appendedEvents.isEmpty())
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user