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

Function TestEditMessageWithModelConfigOverride

coderd/x/chatd/chatd_test.go:8945–8993  ·  view source on GitHub ↗

TestEditMessageWithModelConfigOverride verifies that callers can change the model when editing a previous user message. The replacement message must persist with the new model and the chat's LastModelConfigID must be advanced so the assistant turn that follows runs against the new selection.

(t *testing.T)

Source from the content-addressed store, hash-verified

8943// LastModelConfigID must be advanced so the assistant turn that follows
8944// runs against the new selection.
8945func TestEditMessageWithModelConfigOverride(t *testing.T) {
8946 t.Parallel()
8947
8948 db, ps := dbtestutil.NewDB(t)
8949 replica := newTestServer(t, db, ps, uuid.New())
8950
8951 ctx := testutil.Context(t, testutil.WaitLong)
8952 user, org, modelA := seedChatDependencies(t, db)
8953 modelB := insertChatModelConfigWithCallConfig(
8954 t,
8955 db,
8956 user.ID,
8957 "openai",
8958 "gpt-4o-mini-edit-"+uuid.NewString(),
8959 codersdk.ChatModelCallConfig{},
8960 )
8961
8962 chat, err := replica.CreateChat(ctx, chatd.CreateOptions{
8963 OwnerID: user.ID,
8964 OrganizationID: org.ID,
8965 Title: "edit-with-model-override",
8966 ModelConfigID: modelA.ID,
8967 InitialUserContent: []codersdk.ChatMessagePart{codersdk.ChatMessageText("original")},
8968 })
8969 require.NoError(t, err)
8970
8971 initial, err := db.GetChatMessagesByChatID(ctx, database.GetChatMessagesByChatIDParams{
8972 ChatID: chat.ID,
8973 AfterID: 0,
8974 })
8975 require.NoError(t, err)
8976 require.Len(t, initial, 1)
8977 require.Equal(t, modelA.ID, initial[0].ModelConfigID.UUID)
8978
8979 result, err := replica.EditMessage(ctx, chatd.EditMessageOptions{
8980 ChatID: chat.ID,
8981 EditedMessageID: initial[0].ID,
8982 Content: []codersdk.ChatMessagePart{codersdk.ChatMessageText("edited")},
8983 ModelConfigID: modelB.ID,
8984 })
8985 require.NoError(t, err)
8986 require.True(t, result.Message.ModelConfigID.Valid)
8987 require.Equal(t, modelB.ID, result.Message.ModelConfigID.UUID)
8988
8989 storedChat, err := db.GetChatByID(ctx, chat.ID)
8990 require.NoError(t, err)
8991 require.Equal(t, modelB.ID, storedChat.LastModelConfigID,
8992 "edit must update last_model_config_id so the assistant turn picks up the new model")
8993}
8994
8995// TestEditMessagePreservesModelConfigByDefault verifies that omitting
8996// ModelConfigID on edit keeps the original message's model. This is the

Callers

nothing calls this directly

Calls 13

NewDBFunction · 0.92
ContextFunction · 0.92
ChatMessageTextFunction · 0.92
EditMessageMethod · 0.80
newTestServerFunction · 0.70
seedChatDependenciesFunction · 0.70
NewMethod · 0.65
CreateChatMethod · 0.65
GetChatByIDMethod · 0.65
LenMethod · 0.45

Tested by

no test coverage detected