Make scheduling and dates timezone-safe
This commit is contained in:
@@ -11,6 +11,7 @@ import {
|
||||
type BackgroundJob,
|
||||
} from "../../web/src/server/jobs/queue";
|
||||
import { sendScheduledInvoice } from "./send-invoice";
|
||||
import { sendInvoiceReminder } from "../../web/src/server/jobs/handlers/invoice-reminder";
|
||||
|
||||
const workerId = `beenvoice-worker:${randomUUID()}`;
|
||||
const pollMs = Number(process.env.WORKER_POLL_MS ?? 2_000);
|
||||
@@ -69,6 +70,10 @@ async function handleJob(job: BackgroundJob) {
|
||||
await sendScheduledInvoice(job);
|
||||
return;
|
||||
}
|
||||
if (job.type === jobTypes.sendInvoiceReminder) {
|
||||
await sendInvoiceReminder(job);
|
||||
return;
|
||||
}
|
||||
throw new Error(`No handler registered for ${job.type}`);
|
||||
}
|
||||
|
||||
|
||||
@@ -5,14 +5,14 @@ import { nextDueDate } from "../../web/src/server/services/recurring-invoices";
|
||||
describe("recurring invoice scheduling", () => {
|
||||
test("advances weekly schedules from their scheduled occurrence", () => {
|
||||
const scheduledFor = new Date("2026-08-17T12:00:00.000Z");
|
||||
expect(nextDueDate("weekly", scheduledFor).toISOString()).toBe(
|
||||
"2026-08-24T12:00:00.000Z",
|
||||
);
|
||||
expect(
|
||||
nextDueDate("weekly", scheduledFor, "America/New_York").toISOString(),
|
||||
).toBe("2026-08-24T12:00:00.000Z");
|
||||
});
|
||||
|
||||
test("does not mutate the source date", () => {
|
||||
const scheduledFor = new Date("2026-08-17T12:00:00.000Z");
|
||||
nextDueDate("monthly", scheduledFor);
|
||||
nextDueDate("monthly", scheduledFor, "America/New_York");
|
||||
expect(scheduledFor.toISOString()).toBe("2026-08-17T12:00:00.000Z");
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user