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

Function TestChatCostSummary_UnpricedMessages

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

Source from the content-addressed store, hash-verified

10425}
10426
10427func TestChatCostSummary_UnpricedMessages(t *testing.T) {
10428 t.Parallel()
10429
10430 ctx := testutil.Context(t, testutil.WaitLong)
10431 client, db := newChatClientWithDatabase(t)
10432 firstUser := coderdtest.CreateFirstUser(t, client.Client)
10433 modelConfig := createChatModelConfig(t, client)
10434
10435 chat := dbgen.Chat(t, db, database.Chat{
10436 OrganizationID: firstUser.OrganizationID,
10437 OwnerID: firstUser.UserID,
10438 LastModelConfigID: modelConfig.ID,
10439 Title: "unpriced test",
10440 })
10441
10442 pricedMessage := dbgen.ChatMessage(t, db, database.ChatMessage{
10443 ChatID: chat.ID,
10444 ModelConfigID: uuid.NullUUID{UUID: modelConfig.ID, Valid: true},
10445 Role: database.ChatMessageRoleAssistant,
10446 InputTokens: sql.NullInt64{Int64: 100, Valid: true},
10447 OutputTokens: sql.NullInt64{Int64: 50, Valid: true},
10448 TotalCostMicros: sql.NullInt64{Int64: 500, Valid: true},
10449 })
10450
10451 unpricedMessage := dbgen.ChatMessage(t, db, database.ChatMessage{
10452 ChatID: chat.ID,
10453 ModelConfigID: uuid.NullUUID{UUID: modelConfig.ID, Valid: true},
10454 Role: database.ChatMessageRoleAssistant,
10455 InputTokens: sql.NullInt64{Int64: 200, Valid: true},
10456 OutputTokens: sql.NullInt64{Int64: 75, Valid: true},
10457 })
10458
10459 earliestCreatedAt := pricedMessage.CreatedAt
10460 latestCreatedAt := pricedMessage.CreatedAt
10461 if unpricedMessage.CreatedAt.Before(earliestCreatedAt) {
10462 earliestCreatedAt = unpricedMessage.CreatedAt
10463 }
10464 if unpricedMessage.CreatedAt.After(latestCreatedAt) {
10465 latestCreatedAt = unpricedMessage.CreatedAt
10466 }
10467 options := codersdk.ChatCostSummaryOptions{
10468 // Pad the DB-assigned timestamps to avoid time boundary flakes.
10469 StartDate: earliestCreatedAt.Add(-time.Minute),
10470 EndDate: latestCreatedAt.Add(time.Minute),
10471 }
10472
10473 summary, err := client.GetChatCostSummary(ctx, "me", options)
10474 require.NoError(t, err)
10475
10476 require.Equal(t, int64(500), summary.TotalCostMicros)
10477 require.Equal(t, int64(1), summary.PricedMessageCount)
10478 require.Equal(t, int64(1), summary.UnpricedMessageCount)
10479 require.Equal(t, int64(300), summary.TotalInputTokens)
10480 require.Equal(t, int64(125), summary.TotalOutputTokens)
10481}
10482
10483func requireChatModelPricing(
10484 t *testing.T,

Callers

nothing calls this directly

Calls 9

ContextFunction · 0.92
CreateFirstUserFunction · 0.92
ChatFunction · 0.92
ChatMessageFunction · 0.92
createChatModelConfigFunction · 0.70
AddMethod · 0.65
GetChatCostSummaryMethod · 0.65
EqualMethod · 0.45

Tested by

no test coverage detected