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

Function TestEditMessageRejectsWhenUsageLimitReached

coderd/x/chatd/chatd_test.go:3280–3348  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

3278}
3279
3280func TestEditMessageRejectsWhenUsageLimitReached(t *testing.T) {
3281 t.Parallel()
3282
3283 db, ps := dbtestutil.NewDB(t)
3284 replica := newTestServer(t, db, ps, uuid.New())
3285
3286 ctx := testutil.Context(t, testutil.WaitLong)
3287 user, org, model := seedChatDependencies(t, db)
3288
3289 _, err := db.UpsertChatUsageLimitConfig(ctx, database.UpsertChatUsageLimitConfigParams{
3290 Enabled: true,
3291 DefaultLimitMicros: 100,
3292 Period: string(codersdk.ChatUsageLimitPeriodDay),
3293 })
3294 require.NoError(t, err)
3295
3296 chat, err := replica.CreateChat(ctx, chatd.CreateOptions{
3297 OrganizationID: org.ID,
3298 OwnerID: user.ID,
3299 Title: "edit-limit-reached",
3300 ModelConfigID: model.ID,
3301 InitialUserContent: []codersdk.ChatMessagePart{codersdk.ChatMessageText("original")},
3302 })
3303 require.NoError(t, err)
3304
3305 messages, err := db.GetChatMessagesByChatID(ctx, database.GetChatMessagesByChatIDParams{
3306 ChatID: chat.ID,
3307 AfterID: 0,
3308 })
3309 require.NoError(t, err)
3310 require.Len(t, messages, 1)
3311 editedMessageID := messages[0].ID
3312
3313 assistantContent, err := chatprompt.MarshalParts([]codersdk.ChatMessagePart{
3314 codersdk.ChatMessageText("assistant"),
3315 })
3316 require.NoError(t, err)
3317
3318 _ = dbgen.ChatMessage(t, db, database.ChatMessage{
3319 ChatID: chat.ID,
3320 ModelConfigID: uuid.NullUUID{UUID: model.ID, Valid: true},
3321 Role: database.ChatMessageRoleAssistant,
3322 ContentVersion: chatprompt.CurrentContentVersion,
3323 Content: assistantContent,
3324 TotalCostMicros: sql.NullInt64{Int64: 100, Valid: true},
3325 })
3326
3327 _, err = replica.EditMessage(ctx, chatd.EditMessageOptions{
3328 ChatID: chat.ID,
3329 EditedMessageID: editedMessageID,
3330 Content: []codersdk.ChatMessagePart{codersdk.ChatMessageText("edited")},
3331 })
3332 require.Error(t, err)
3333
3334 var limitErr *chatd.UsageLimitExceededError
3335 require.ErrorAs(t, err, &limitErr)
3336 require.Equal(t, int64(100), limitErr.LimitMicros)
3337 require.Equal(t, int64(100), limitErr.ConsumedMicros)

Callers

nothing calls this directly

Calls 15

NewDBFunction · 0.92
ContextFunction · 0.92
ChatMessageTextFunction · 0.92
MarshalPartsFunction · 0.92
ChatMessageFunction · 0.92
ChatMessageFunction · 0.92
EditMessageMethod · 0.80
newTestServerFunction · 0.70
seedChatDependenciesFunction · 0.70
NewMethod · 0.65
CreateChatMethod · 0.65

Tested by

no test coverage detected