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

Function TestSendMessageQueuesEffectiveModelConfigID

coderd/exp_chats_test.go:6543–6592  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

6541}
6542
6543func TestSendMessageQueuesEffectiveModelConfigID(t *testing.T) {
6544 t.Parallel()
6545
6546 ctx := testutil.Context(t, testutil.WaitLong)
6547 client, db := newChatClientWithDatabase(t)
6548 user := coderdtest.CreateFirstUser(t, client.Client)
6549 modelConfigA := createChatModelConfig(t, client)
6550 modelConfigB := createAdditionalChatModelConfig(t, client, modelConfigA.Provider, "gpt-4o-mini-queued-"+uuid.NewString())
6551
6552 chat := dbgen.Chat(t, db, database.Chat{
6553 OrganizationID: user.OrganizationID,
6554 OwnerID: user.UserID,
6555 LastModelConfigID: modelConfigA.ID,
6556 Title: "mid-chat model switch queued send",
6557 })
6558
6559 _, err := db.UpdateChatStatus(dbauthz.AsSystemRestricted(ctx), database.UpdateChatStatusParams{
6560 ID: chat.ID,
6561 Status: database.ChatStatusRunning,
6562 WorkerID: uuid.NullUUID{UUID: uuid.New(), Valid: true},
6563 StartedAt: sql.NullTime{Time: time.Now(), Valid: true},
6564 HeartbeatAt: sql.NullTime{Time: time.Now(), Valid: true},
6565 LastError: pqtype.NullRawMessage{},
6566 })
6567 require.NoError(t, err)
6568
6569 resp, err := client.CreateChatMessage(ctx, chat.ID, codersdk.CreateChatMessageRequest{
6570 Content: []codersdk.ChatInputPart{{
6571 Type: codersdk.ChatInputPartTypeText,
6572 Text: "queue this with model b",
6573 }},
6574 ModelConfigID: ptr.Ref(modelConfigB.ID),
6575 BusyBehavior: codersdk.ChatBusyBehaviorQueue,
6576 })
6577 require.NoError(t, err)
6578 require.True(t, resp.Queued)
6579 require.NotNil(t, resp.QueuedMessage)
6580 require.NotNil(t, resp.QueuedMessage.ModelConfigID)
6581 require.Equal(t, modelConfigB.ID, *resp.QueuedMessage.ModelConfigID)
6582
6583 queuedMessages, err := db.GetChatQueuedMessages(dbauthz.AsSystemRestricted(ctx), chat.ID)
6584 require.NoError(t, err)
6585 require.Len(t, queuedMessages, 1)
6586 require.True(t, queuedMessages[0].ModelConfigID.Valid)
6587 require.Equal(t, modelConfigB.ID, queuedMessages[0].ModelConfigID.UUID)
6588
6589 storedChat, err := db.GetChatByID(dbauthz.AsSystemRestricted(ctx), chat.ID)
6590 require.NoError(t, err)
6591 require.Equal(t, modelConfigA.ID, storedChat.LastModelConfigID)
6592}
6593
6594func TestQueuedMessageWithoutOverrideCapturesEnqueueTimeModel(t *testing.T) {
6595 t.Parallel()

Callers

nothing calls this directly

Calls 15

ContextFunction · 0.92
CreateFirstUserFunction · 0.92
ChatFunction · 0.92
AsSystemRestrictedFunction · 0.92
RefFunction · 0.92
createChatModelConfigFunction · 0.70
UpdateChatStatusMethod · 0.65
NewMethod · 0.65
CreateChatMessageMethod · 0.65
GetChatQueuedMessagesMethod · 0.65

Tested by

no test coverage detected