1package soy.iko.opencode.di
3import org.junit.Assert.assertEquals
4import org.junit.Assert.assertNull
6import soy.iko.opencode.data.model.AssistantMessage
7import soy.iko.opencode.data.model.MessagePartRemoved
8import soy.iko.opencode.data.model.MessagePartUpdated
9import soy.iko.opencode.data.model.MessageUpdated
10import soy.iko.opencode.data.model.SessionIdle
11import soy.iko.opencode.data.model.TextPart
13class UnreadTrackingTest {
15 private val session = "s1"
18 fun extractsSessionFromMessageUpdated() {
19 val event = MessageUpdated(MessageUpdated.Props(AssistantMessage(id = "a1", sessionID = session)))
20 assertEquals(session, sessionOfEvent(event))
24 fun extractsSessionFromPartSessionId() {
25 val event = MessagePartUpdated(
26 MessagePartUpdated.Props(
27 part = TextPart(id = "p1", messageID = "m1", sessionID = session, text = "hi"),
32 assertEquals(session, sessionOfEvent(event))
36 fun fallsBackToEnvelopeSessionIdWhenPartSessionIdMissing() {
37 // Some events omit the session id on the nested part; the envelope value must
38 // still badge the right session.
39 val event = MessagePartUpdated(
40 MessagePartUpdated.Props(
41 part = TextPart(id = "p1", messageID = "m1", sessionID = null, text = "hi"),
46 assertEquals(session, sessionOfEvent(event))
50 fun returnsNullForNonMessageEvents() {
51 // Idle/error/etc. events describe session lifecycle, not message activity, so
52 // they must not badge a session.
53 assertNull(sessionOfEvent(SessionIdle(SessionIdle.Props(sessionID = session))))
54 assertNull(sessionOfEvent(MessagePartRemoved(MessagePartRemoved.Props(sessionID = session, messageID = "m1", partID = "p1"))))
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list