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

Function TestService_PublishesEvents

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

Source from the content-addressed store, hash-verified

1014}
1015
1016func TestService_PublishesEvents(t *testing.T) {
1017 t.Parallel()
1018
1019 ctx := testutil.Context(t, testutil.WaitLong)
1020 db, _ := dbtestutil.NewDB(t)
1021 _, owner, chat, model := seedChat(t, db)
1022 require.NotEqual(t, uuid.Nil, owner.ID)
1023
1024 memoryPubsub := dbpubsub.NewInMemory()
1025 svc := chatdebug.NewService(db, testutil.Logger(t), memoryPubsub)
1026 type eventResult struct {
1027 event chatdebug.DebugEvent
1028 err error
1029 }
1030 events := make(chan eventResult, 1)
1031 cancel, err := memoryPubsub.Subscribe(chatdebug.PubsubChannel(chat.ID),
1032 func(_ context.Context, message []byte) {
1033 var event chatdebug.DebugEvent
1034 unmarshalErr := json.Unmarshal(message, &event)
1035 events <- eventResult{event: event, err: unmarshalErr}
1036 },
1037 )
1038 require.NoError(t, err)
1039 defer cancel()
1040
1041 run, err := svc.CreateRun(ctx, chatdebug.CreateRunParams{
1042 ChatID: chat.ID,
1043 ModelConfigID: model.ID,
1044 Kind: chatdebug.KindChatTurn,
1045 Status: chatdebug.StatusInProgress,
1046 })
1047 require.NoError(t, err)
1048
1049 select {
1050 case received := <-events:
1051 require.NoError(t, received.err)
1052 require.Equal(t, chatdebug.EventKindRunUpdate, received.event.Kind)
1053 require.Equal(t, chat.ID, received.event.ChatID)
1054 require.Equal(t, run.ID, received.event.RunID)
1055 require.Equal(t, uuid.Nil, received.event.StepID)
1056 case <-time.After(testutil.WaitShort):
1057 t.Fatal("timed out waiting for debug event")
1058 }
1059
1060 select {
1061 case received := <-events:
1062 t.Fatalf("unexpected extra event: %+v", received.event)
1063 default:
1064 }
1065}
1066
1067func newFixture(t *testing.T) testFixture {
1068 t.Helper()

Callers

nothing calls this directly

Calls 12

CreateRunMethod · 0.95
ContextFunction · 0.92
NewDBFunction · 0.92
NewServiceFunction · 0.92
LoggerFunction · 0.92
PubsubChannelFunction · 0.92
seedChatFunction · 0.85
FatalMethod · 0.80
SubscribeMethod · 0.65
UnmarshalMethod · 0.45
EqualMethod · 0.45
FatalfMethod · 0.45

Tested by

no test coverage detected