Phase 18: Auto timezone detection and ability to change timezone #21
@@ -22,9 +22,7 @@ import { appConfig } from '../db/schema.js';
|
||||
* This is the D-05 single source of truth for the server-side all-day "9 AM local"
|
||||
* reminder computation in reminderScheduler.ts and outboxWorker.ts.
|
||||
*/
|
||||
export async function getHouseholdTimezone(
|
||||
db: MySql2Database<typeof schema>,
|
||||
): Promise<string> {
|
||||
export async function getHouseholdTimezone(db: MySql2Database<typeof schema>): Promise<string> {
|
||||
const [row] = await db
|
||||
.select({ value: appConfig.value })
|
||||
.from(appConfig)
|
||||
|
||||
@@ -1196,7 +1196,14 @@ describe('runOutboxDrain — Plan 18-03: stored household_timezone drives all-da
|
||||
end: '2026-06-20',
|
||||
reminderLeadMinutes: 1440,
|
||||
});
|
||||
mockPendingRows = [makeRow({ operation: 'update', calendarObjectUrl: 'https://example.com/event.ics', etag: 'W/"abc"', payload })];
|
||||
mockPendingRows = [
|
||||
makeRow({
|
||||
operation: 'update',
|
||||
calendarObjectUrl: 'https://example.com/event.ics',
|
||||
etag: 'W/"abc"',
|
||||
payload,
|
||||
}),
|
||||
];
|
||||
|
||||
// Provide etag so WR-02 re-read path resolves (no rawVevent → falls through to all-day branch)
|
||||
mockWhereCalEvents.mockResolvedValue([{ etag: 'W/"abc"' }]);
|
||||
|
||||
Reference in New Issue
Block a user