(t *testing.T)
| 598 | } |
| 599 | |
| 600 | func TestWorker_MarkStale_UpsertAndPublish(t *testing.T) { |
| 601 | t.Parallel() |
| 602 | ctx := testutil.Context(t, testutil.WaitShort) |
| 603 | |
| 604 | workspaceID := uuid.New() |
| 605 | ownerID := uuid.New() |
| 606 | chat1 := uuid.New() |
| 607 | chat2 := uuid.New() |
| 608 | |
| 609 | var mu sync.Mutex |
| 610 | var upsertRefCalls []database.UpsertChatDiffStatusReferenceParams |
| 611 | var publishedIDs []uuid.UUID |
| 612 | |
| 613 | ctrl := gomock.NewController(t) |
| 614 | store := dbmock.NewMockStore(ctrl) |
| 615 | |
| 616 | store.EXPECT().GetChatsByWorkspaceIDs(gomock.Any(), gomock.Any()). |
| 617 | DoAndReturn(func(_ context.Context, ids []uuid.UUID) ([]database.Chat, error) { |
| 618 | require.Equal(t, []uuid.UUID{workspaceID}, ids) |
| 619 | return []database.Chat{ |
| 620 | {ID: chat1, OwnerID: ownerID, WorkspaceID: uuid.NullUUID{UUID: workspaceID, Valid: true}}, |
| 621 | {ID: chat2, OwnerID: ownerID, WorkspaceID: uuid.NullUUID{UUID: workspaceID, Valid: true}}, |
| 622 | }, nil |
| 623 | }) |
| 624 | store.EXPECT().UpsertChatDiffStatusReference(gomock.Any(), gomock.Any()).DoAndReturn(func(_ context.Context, arg database.UpsertChatDiffStatusReferenceParams) (database.ChatDiffStatus, error) { |
| 625 | mu.Lock() |
| 626 | upsertRefCalls = append(upsertRefCalls, arg) |
| 627 | mu.Unlock() |
| 628 | return database.ChatDiffStatus{ChatID: arg.ChatID}, nil |
| 629 | }).Times(2) |
| 630 | |
| 631 | pub := func(_ context.Context, chatID uuid.UUID) error { |
| 632 | mu.Lock() |
| 633 | publishedIDs = append(publishedIDs, chatID) |
| 634 | mu.Unlock() |
| 635 | return nil |
| 636 | } |
| 637 | |
| 638 | mClock := quartz.NewMock(t) |
| 639 | now := mClock.Now() |
| 640 | logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: true}) |
| 641 | refresher := newTestRefresher(t, mClock) |
| 642 | worker := gitsync.NewWorker(store, refresher, pub, mClock, logger) |
| 643 | |
| 644 | worker.MarkStale(ctx, gitsync.MarkStaleParams{ |
| 645 | WorkspaceID: workspaceID, |
| 646 | Branch: "feature", |
| 647 | Origin: "https://github.com/owner/repo", |
| 648 | }) |
| 649 | |
| 650 | mu.Lock() |
| 651 | defer mu.Unlock() |
| 652 | |
| 653 | require.Len(t, upsertRefCalls, 2) |
| 654 | for _, call := range upsertRefCalls { |
| 655 | assert.Equal(t, "feature", call.GitBranch) |
| 656 | assert.Equal(t, "https://github.com/owner/repo", call.GitRemoteOrigin) |
| 657 | assert.True(t, call.StaleAt.Before(now), |
nothing calls this directly
no test coverage detected