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

Function TestService_UpdateStep

coderd/x/chatd/chatdebug/service_test.go:443–497  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

441}
442
443func TestService_UpdateStep(t *testing.T) {
444 t.Parallel()
445
446 fixture := newFixture(t)
447 run := createRun(t, fixture)
448 step, err := fixture.svc.CreateStep(fixture.ctx, chatdebug.CreateStepParams{
449 RunID: run.ID,
450 ChatID: fixture.chat.ID,
451 StepNumber: 1,
452 Operation: chatdebug.OperationStream,
453 Status: chatdebug.StatusInProgress,
454 })
455 require.NoError(t, err)
456
457 assistantMsg := insertMessage(t, fixture.db, fixture.chat.ID,
458 fixture.owner.ID, fixture.model.ID, database.ChatMessageRoleAssistant,
459 "assistant")
460 finishedAt := time.Now().UTC().Round(time.Microsecond)
461 updated, err := fixture.svc.UpdateStep(fixture.ctx, chatdebug.UpdateStepParams{
462 ID: step.ID,
463 ChatID: fixture.chat.ID,
464 Status: chatdebug.StatusCompleted,
465 AssistantMessageID: assistantMsg.ID,
466 NormalizedResponse: map[string]any{"text": "done"},
467 Usage: map[string]any{"input_tokens": 10, "output_tokens": 5},
468 Attempts: []chatdebug.Attempt{{
469 Number: 1,
470 ResponseStatus: 200,
471 DurationMs: 25,
472 }},
473 Metadata: map[string]any{"provider": fixture.model.Provider},
474 FinishedAt: finishedAt,
475 })
476 require.NoError(t, err)
477 require.Equal(t, string(chatdebug.StatusCompleted), updated.Status)
478 require.True(t, updated.AssistantMessageID.Valid)
479 require.Equal(t, assistantMsg.ID, updated.AssistantMessageID.Int64)
480 require.True(t, updated.NormalizedResponse.Valid)
481 require.JSONEq(t, `{"text":"done"}`,
482 string(updated.NormalizedResponse.RawMessage))
483 require.True(t, updated.Usage.Valid)
484 require.JSONEq(t, `{"input_tokens":10,"output_tokens":5}`,
485 string(updated.Usage.RawMessage))
486 require.JSONEq(t,
487 `[{"number":1,"response_status":200,"duration_ms":25}]`,
488 string(updated.Attempts),
489 )
490 require.JSONEq(t, `{"provider":"`+fixture.model.Provider+`"}`,
491 string(updated.Metadata))
492 require.True(t, updated.FinishedAt.Valid)
493 storedSteps, err := fixture.db.GetChatDebugStepsByRunID(fixture.ctx, run.ID)
494 require.NoError(t, err)
495 require.Len(t, storedSteps, 1)
496 require.Equal(t, updated.ID, storedSteps[0].ID)
497}
498
499func TestService_UpdateStep_AutoFillsFinishedAtOnTerminalStatus(t *testing.T) {
500 t.Parallel()

Callers

nothing calls this directly

Calls 8

newFixtureFunction · 0.85
createRunFunction · 0.85
insertMessageFunction · 0.85
CreateStepMethod · 0.80
UpdateStepMethod · 0.80
EqualMethod · 0.45
LenMethod · 0.45

Tested by

no test coverage detected