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

Function TestChatCostUsers

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

Source from the content-addressed store, hash-verified

10283}
10284
10285func TestChatCostUsers(t *testing.T) {
10286 t.Parallel()
10287
10288 seedCtx := testutil.Context(t, testutil.WaitLong)
10289 client, db := newChatClientWithDatabase(t)
10290 firstUser := coderdtest.CreateFirstUser(t, client.Client)
10291 memberClientRaw, member := coderdtest.CreateAnotherUser(t, client.Client, firstUser.OrganizationID)
10292 memberClient := codersdk.NewExperimentalClient(memberClientRaw)
10293 firstUserRecord, err := db.GetUserByID(dbauthz.AsSystemRestricted(seedCtx), firstUser.UserID)
10294 require.NoError(t, err)
10295 modelConfig := createChatModelConfig(t, client)
10296
10297 adminChat := dbgen.Chat(t, db, database.Chat{
10298 OrganizationID: firstUser.OrganizationID,
10299 OwnerID: firstUser.UserID,
10300 LastModelConfigID: modelConfig.ID,
10301 Title: "admin chat",
10302 })
10303 _ = dbgen.ChatMessage(t, db, database.ChatMessage{
10304 ChatID: adminChat.ID,
10305 ModelConfigID: uuid.NullUUID{UUID: modelConfig.ID, Valid: true},
10306 Role: database.ChatMessageRoleAssistant,
10307 InputTokens: sql.NullInt64{Int64: 100, Valid: true},
10308 OutputTokens: sql.NullInt64{Int64: 50, Valid: true},
10309 TotalCostMicros: sql.NullInt64{Int64: 300, Valid: true},
10310 })
10311
10312 memberChat := dbgen.Chat(t, db, database.Chat{
10313 OrganizationID: firstUser.OrganizationID,
10314 OwnerID: member.ID,
10315 LastModelConfigID: modelConfig.ID,
10316 Title: "member chat",
10317 })
10318 _ = dbgen.ChatMessage(t, db, database.ChatMessage{
10319 ChatID: memberChat.ID,
10320 ModelConfigID: uuid.NullUUID{UUID: modelConfig.ID, Valid: true},
10321 Role: database.ChatMessageRoleAssistant,
10322 InputTokens: sql.NullInt64{Int64: 200, Valid: true},
10323 OutputTokens: sql.NullInt64{Int64: 100, Valid: true},
10324 TotalCostMicros: sql.NullInt64{Int64: 800, Valid: true},
10325 })
10326
10327 t.Run("AdminCanListUsers", func(t *testing.T) {
10328 t.Parallel()
10329
10330 ctx := testutil.Context(t, testutil.WaitLong)
10331 resp, err := client.GetChatCostUsers(ctx, codersdk.ChatCostUsersOptions{})
10332 require.NoError(t, err)
10333 require.Equal(t, int64(2), resp.Count)
10334 require.Len(t, resp.Users, 2)
10335 require.Equal(t, member.ID, resp.Users[0].UserID)
10336 require.Equal(t, member.Username, resp.Users[0].Username)
10337 require.Equal(t, int64(800), resp.Users[0].TotalCostMicros)
10338 require.Equal(t, int64(1), resp.Users[0].MessageCount)
10339 require.Equal(t, int64(1), resp.Users[0].ChatCount)
10340 require.Equal(t, firstUser.UserID, resp.Users[1].UserID)
10341 require.Equal(t, firstUserRecord.Username, resp.Users[1].Username)
10342 require.Equal(t, int64(300), resp.Users[1].TotalCostMicros)

Callers

nothing calls this directly

Calls 15

GetChatCostUsersMethod · 0.95
StatusCodeMethod · 0.95
ContextFunction · 0.92
CreateFirstUserFunction · 0.92
CreateAnotherUserFunction · 0.92
NewExperimentalClientFunction · 0.92
AsSystemRestrictedFunction · 0.92
ChatFunction · 0.92
ChatMessageFunction · 0.92
createChatModelConfigFunction · 0.70
GetUserByIDMethod · 0.65

Tested by

no test coverage detected