MCPcopy Index your code
hub / github.com/coder/coder / TestClaimCommittedParts

Function TestClaimCommittedParts

coderd/x/chatd/chatd_internal_test.go:6019–6130  ·  view source on GitHub ↗

TestClaimCommittedParts covers the per-role behavior of claimCommittedParts: - assistant messages claim every in-progress part with the committed message ID. - tool / user messages do not claim parts. - parts already claimed by an earlier assistant message are not re-claimed. - a chat with no live s

(t *testing.T)

Source from the content-addressed store, hash-verified

6017// re-claimed.
6018// - a chat with no live state is a no-op (does not panic).
6019func TestClaimCommittedParts(t *testing.T) {
6020 t.Parallel()
6021
6022 t.Run("AssistantClaimsAllInProgressParts", func(t *testing.T) {
6023 t.Parallel()
6024
6025 server := &Server{
6026 logger: slogtest.Make(t, nil),
6027 clock: quartz.NewMock(t),
6028 }
6029 chatID := uuid.New()
6030 state := server.getOrCreateStreamState(chatID)
6031 state.mu.Lock()
6032 state.buffer = []bufferedStreamPart{
6033 makeCommittedPart(100, "old-1"),
6034 makeInProgressPart("new-1"),
6035 makeInProgressPart("new-2"),
6036 }
6037 state.mu.Unlock()
6038
6039 server.claimCommittedParts(chatID, database.ChatMessage{
6040 ID: 200,
6041 Role: database.ChatMessageRoleAssistant,
6042 })
6043
6044 state.mu.Lock()
6045 defer state.mu.Unlock()
6046 require.Equal(t, int64(100), state.buffer[0].committedMessageID,
6047 "already-claimed parts must keep their original message ID")
6048 require.Equal(t, int64(200), state.buffer[1].committedMessageID,
6049 "in-progress parts must be claimed by the new message ID")
6050 require.Equal(t, int64(200), state.buffer[2].committedMessageID,
6051 "in-progress parts must be claimed by the new message ID")
6052 })
6053
6054 t.Run("ToolMessageIsNoOp", func(t *testing.T) {
6055 t.Parallel()
6056
6057 server := &Server{
6058 logger: slogtest.Make(t, nil),
6059 clock: quartz.NewMock(t),
6060 }
6061 chatID := uuid.New()
6062 state := server.getOrCreateStreamState(chatID)
6063 state.mu.Lock()
6064 state.buffer = []bufferedStreamPart{
6065 makeInProgressPart("a"),
6066 makeInProgressPart("b"),
6067 }
6068 state.mu.Unlock()
6069
6070 server.claimCommittedParts(chatID, database.ChatMessage{
6071 ID: 300,
6072 Role: database.ChatMessageRoleTool,
6073 })
6074
6075 state.mu.Lock()
6076 defer state.mu.Unlock()

Callers

nothing calls this directly

Calls 10

claimCommittedPartsMethod · 0.95
makeCommittedPartFunction · 0.85
makeInProgressPartFunction · 0.85
RunMethod · 0.65
NewMethod · 0.65
LockMethod · 0.45
UnlockMethod · 0.45
EqualMethod · 0.45
LoadMethod · 0.45

Tested by

no test coverage detected