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

Function TestAdvisorRunAdvice

coderd/x/chatd/chatadvisor/runner_test.go:20–64  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

18)
19
20func TestAdvisorRunAdvice(t *testing.T) {
21 t.Parallel()
22
23 const (
24 question = "What is the smallest safe change?"
25 maxOutputTokens = int64(321)
26 )
27
28 var capturedCall fantasy.Call
29 runtime, err := chatadvisor.NewRuntime(chatadvisor.RuntimeConfig{
30 Model: &chattest.FakeModel{
31 ProviderName: "test-provider",
32 ModelName: "test-model",
33 StreamFn: func(_ context.Context, call fantasy.Call) (fantasy.StreamResponse, error) {
34 capturedCall = call
35 return streamFromParts([]fantasy.StreamPart{
36 {Type: fantasy.StreamPartTypeTextStart, ID: "text-1"},
37 {Type: fantasy.StreamPartTypeTextDelta, ID: "text-1", Delta: "Take the smallest safe change."},
38 {Type: fantasy.StreamPartTypeTextEnd, ID: "text-1"},
39 {Type: fantasy.StreamPartTypeFinish, FinishReason: fantasy.FinishReasonStop},
40 }), nil
41 },
42 },
43 MaxUsesPerRun: 2,
44 MaxOutputTokens: maxOutputTokens,
45 })
46 require.NoError(t, err)
47
48 result, err := runtime.RunAdvisor(t.Context(), question, []fantasy.Message{
49 textMessage(fantasy.MessageRoleSystem, "existing system"),
50 textMessage(fantasy.MessageRoleUser, "hello"),
51 }, nil)
52 require.NoError(t, err)
53 require.Equal(t, chatadvisor.ResultTypeAdvice, result.Type)
54 require.Equal(t, "Take the smallest safe change.", result.Advice)
55 require.Equal(t, "test-provider/test-model", result.AdvisorModel)
56 require.Equal(t, 1, result.RemainingUses)
57
58 require.Empty(t, capturedCall.Tools)
59 require.NotNil(t, capturedCall.MaxOutputTokens)
60 require.Equal(t, maxOutputTokens, *capturedCall.MaxOutputTokens)
61 require.NotEmpty(t, capturedCall.Prompt)
62 require.Equal(t, fantasy.MessageRoleUser, capturedCall.Prompt[len(capturedCall.Prompt)-1].Role)
63 require.Equal(t, question, singleText(t, capturedCall.Prompt[len(capturedCall.Prompt)-1]))
64}
65
66func TestAdvisorRunTruncatesLongQuestion(t *testing.T) {
67 t.Parallel()

Callers

nothing calls this directly

Calls 9

RunAdvisorMethod · 0.95
NewRuntimeFunction · 0.92
singleTextFunction · 0.85
NotEmptyMethod · 0.80
streamFromPartsFunction · 0.70
textMessageFunction · 0.70
ContextMethod · 0.65
EqualMethod · 0.45
EmptyMethod · 0.45

Tested by

no test coverage detected