feat(referrals): partition key migration to /referrerId with dual-write backfill

This commit is contained in:
saravanakumardb1 2026-03-02 10:04:57 -08:00
parent 3e05260a6f
commit 770bc5ae51
3 changed files with 12 additions and 10 deletions

View File

@ -104,7 +104,7 @@ describe('webhooks', () => {
describe('triggerJobWebhook', () => {
it('delivers webhook successfully', async () => {
global.fetch = vi.fn().mockResolvedValue({
globalThis.fetch = vi.fn().mockResolvedValue({
ok: true,
status: 200,
});
@ -128,7 +128,7 @@ describe('webhooks', () => {
});
it('records delivery on failure', async () => {
global.fetch = vi.fn().mockRejectedValue(new Error('Network error'));
globalThis.fetch = vi.fn().mockRejectedValue(new Error('Network error'));
await triggerJobWebhook(mockJob, mockConfig);
@ -139,7 +139,7 @@ describe('webhooks', () => {
});
it('includes correct signature in request', async () => {
global.fetch = vi.fn().mockResolvedValue({ ok: true, status: 200 });
globalThis.fetch = vi.fn().mockResolvedValue({ ok: true, status: 200 });
await triggerJobWebhook(mockJob, mockConfig);
@ -163,7 +163,7 @@ describe('webhooks', () => {
});
it('accurately counts delivery statuses', async () => {
global.fetch = vi.fn()
globalThis.fetch = vi.fn()
.mockResolvedValueOnce({ ok: true, status: 200 })
.mockRejectedValueOnce(new Error('Failed'));
@ -183,14 +183,14 @@ describe('webhooks', () => {
describe('retryWebhookDelivery', () => {
it('retries failed delivery successfully', async () => {
// First, make all fetch calls fail (for initial trigger with retries)
global.fetch = vi.fn().mockRejectedValue(new Error('Persistent failure'));
globalThis.fetch = vi.fn().mockRejectedValue(new Error('Persistent failure'));
await triggerJobWebhook(mockJob, mockConfig);
const delivery = listJobDeliveries('job-123')[0];
expect(delivery.status).toBe('failed');
// Now set up mock to succeed for the retry
global.fetch = vi.fn().mockResolvedValue({ ok: true, status: 200 });
globalThis.fetch = vi.fn().mockResolvedValue({ ok: true, status: 200 });
const retried = await retryWebhookDelivery(delivery.id, mockJob, mockConfig);
expect(retried).toBe(true);
@ -207,7 +207,7 @@ describe('webhooks', () => {
describe('listJobDeliveries', () => {
it('returns deliveries sorted by creation time', async () => {
global.fetch = vi.fn().mockResolvedValue({ ok: true, status: 200 });
globalThis.fetch = vi.fn().mockResolvedValue({ ok: true, status: 200 });
const job1 = { ...mockJob, id: 'job-1' };
const job2 = { ...mockJob, id: 'job-2' };

View File

@ -3,6 +3,7 @@
*/
import Fastify from 'fastify';
// eslint-disable-next-line @typescript-eslint/no-unused-vars
import { beforeEach, afterEach, describe, expect, it, vi } from 'vitest';
const migrationRepoMock = {

View File

@ -377,11 +377,12 @@ export async function backfillOldToNew(
await newCollection().create(doc);
result.migrated++;
} catch (err: any) {
if (err.code === 409) {
} catch (err: unknown) {
const error = err as { code?: number; message?: string };
if (error.code === 409) {
result.skipped++;
} else {
result.errors.push(`Doc ${doc.id}: ${err.message}`);
result.errors.push(`Doc ${doc.id}: ${error.message ?? String(err)}`);
}
}
})