diff --git a/coderd/exp_chats_test.go b/coderd/exp_chats_test.go index 07f5581d7f..34438f895b 100644 --- a/coderd/exp_chats_test.go +++ b/coderd/exp_chats_test.go @@ -128,6 +128,17 @@ func newChatClientWithAPIAndDatabase(t testing.TB, overrides ...func(*coderdtest return codersdk.NewExperimentalClient(client), api.Database, api } +// findUserMessage returns the first user-role message from a slice of chat +// messages, failing the test if none is found. +func findUserMessage(t testing.TB, messages []database.ChatMessage) database.ChatMessage { + t.Helper() + idx := slices.IndexFunc(messages, func(m database.ChatMessage) bool { + return m.Role == database.ChatMessageRoleUser + }) + require.NotEqual(t, -1, idx, "expected to find a user message") + return messages[idx] +} + type failNextChatSystemPromptStore struct { database.Store @@ -6391,9 +6402,10 @@ func TestSendMessageWithModelOverrideUpdatesLastModelConfigID(t *testing.T) { AfterID: 0, }) require.NoError(t, err) - require.Len(t, messages, 1) - require.True(t, messages[0].ModelConfigID.Valid) - require.Equal(t, modelConfigB.ID, messages[0].ModelConfigID.UUID) + // The chat daemon may insert an assistant response before this runs. + userMsg := findUserMessage(t, messages) + require.True(t, userMsg.ModelConfigID.Valid) + require.Equal(t, modelConfigB.ID, userMsg.ModelConfigID.UUID) } func TestSendMessageQueuesEffectiveModelConfigID(t *testing.T) { @@ -6532,9 +6544,10 @@ func TestSubsequentSendWithoutOverrideUsesPersistedModel(t *testing.T) { AfterID: 0, }) require.NoError(t, err) - require.Len(t, messages, 1) - require.True(t, messages[0].ModelConfigID.Valid) - require.Equal(t, modelConfigB.ID, messages[0].ModelConfigID.UUID) + // The chat daemon may insert an assistant response before this runs. + userMsg := findUserMessage(t, messages) + require.True(t, userMsg.ModelConfigID.Valid) + require.Equal(t, modelConfigB.ID, userMsg.ModelConfigID.UUID) } func TestWatchChatsStatusChangeCarriesUpdatedLastModelConfigID(t *testing.T) {