MCPcopy Create free account
hub / github.com/coder/coder / TestWorker_MarkStale_NilChatID_Broadcasts

Function TestWorker_MarkStale_NilChatID_Broadcasts

coderd/x/gitsync/worker_test.go:872–931  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

870}
871
872func TestWorker_MarkStale_NilChatID_Broadcasts(t *testing.T) {
873 t.Parallel()
874 ctx := testutil.Context(t, testutil.WaitShort)
875
876 workspaceID := uuid.New()
877 ownerID := uuid.New()
878 chat1 := uuid.New()
879
880 var mu sync.Mutex
881 var upsertRefCalls []database.UpsertChatDiffStatusReferenceParams
882 var publishedIDs []uuid.UUID
883
884 ctrl := gomock.NewController(t)
885 store := dbmock.NewMockStore(ctrl)
886
887 // Broadcast path: GetChatsByWorkspaceIDs scopes the query to
888 // the workspace directly; no post-filtering needed.
889 store.EXPECT().GetChatsByWorkspaceIDs(gomock.Any(), gomock.Any()).
890 DoAndReturn(func(_ context.Context, ids []uuid.UUID) ([]database.Chat, error) {
891 require.Equal(t, []uuid.UUID{workspaceID}, ids)
892 return []database.Chat{
893 {ID: chat1, OwnerID: ownerID, WorkspaceID: uuid.NullUUID{UUID: workspaceID, Valid: true}},
894 }, nil
895 })
896 store.EXPECT().UpsertChatDiffStatusReference(gomock.Any(), gomock.Any()).DoAndReturn(func(_ context.Context, arg database.UpsertChatDiffStatusReferenceParams) (database.ChatDiffStatus, error) {
897 mu.Lock()
898 upsertRefCalls = append(upsertRefCalls, arg)
899 mu.Unlock()
900 return database.ChatDiffStatus{ChatID: arg.ChatID}, nil
901 }).Times(1)
902
903 pub := func(_ context.Context, chatID uuid.UUID) error {
904 mu.Lock()
905 publishedIDs = append(publishedIDs, chatID)
906 mu.Unlock()
907 return nil
908 }
909
910 mClock := quartz.NewMock(t)
911 logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: true})
912 refresher := newTestRefresher(t, mClock)
913 worker := gitsync.NewWorker(store, refresher, pub, mClock, logger)
914
915 // Zero-value ChatID (uuid.Nil) triggers broadcast.
916 worker.MarkStale(ctx, gitsync.MarkStaleParams{
917 WorkspaceID: workspaceID,
918 Branch: "main",
919 Origin: "https://github.com/org/repo",
920 })
921
922 mu.Lock()
923 defer mu.Unlock()
924
925 require.Len(t, upsertRefCalls, 1)
926 assert.Equal(t, chat1, upsertRefCalls[0].ChatID)
927 assert.Equal(t, "main", upsertRefCalls[0].GitBranch)
928
929 require.Len(t, publishedIDs, 1)

Callers

nothing calls this directly

Calls 13

EXPECTMethod · 0.95
MarkStaleMethod · 0.95
ContextFunction · 0.92
NewMockStoreFunction · 0.92
NewWorkerFunction · 0.92
newTestRefresherFunction · 0.85
NewMethod · 0.65
EqualMethod · 0.45
LockMethod · 0.45
UnlockMethod · 0.45

Tested by

no test coverage detected