From 5acb3e8f97ab026564abcad3408bfa22b0ccdd6f Mon Sep 17 00:00:00 2001 From: Alex van Andel Date: Mon, 12 Feb 2024 18:25:49 +0000 Subject: [PATCH] fix: Missing date ranges when specifying a specific slot time (#13645) --- packages/lib/date-ranges.test.ts | 20 ++++++++++++++++++++ packages/lib/date-ranges.ts | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/packages/lib/date-ranges.test.ts b/packages/lib/date-ranges.test.ts index f9d862ca0c..b2346a60d4 100644 --- a/packages/lib/date-ranges.test.ts +++ b/packages/lib/date-ranges.test.ts @@ -317,6 +317,26 @@ describe("buildDateRanges", () => { end: dayjs("2023-06-14T16:00:00Z").tz(timeZone), }); }); + it("should return correct date ranges for specific time slot in date override", () => { + const items = [ + { + date: new Date(Date.UTC(2023, 5, 13)), + startTime: new Date(Date.UTC(0, 0, 0, 9, 0)), + endTime: new Date(Date.UTC(0, 0, 0, 14, 0)), + }, + ]; + const timeZone = "Europe/London"; + + const dateFrom = dayjs("2023-06-13T10:00:00Z"); + const dateTo = dayjs("2023-06-13T10:30:00Z"); + + const results = buildDateRanges({ availability: items, timeZone, dateFrom, dateTo }); + + expect(results[0]).toEqual({ + start: dayjs("2023-06-13T08:00:00Z").tz(timeZone), + end: dayjs("2023-06-13T13:00:00Z").tz(timeZone), + }); + }); it("should return correct date ranges if date override would already already be the next day in utc timezone", () => { const items = [ { diff --git a/packages/lib/date-ranges.ts b/packages/lib/date-ranges.ts index be09444d12..f2bc57bb2c 100644 --- a/packages/lib/date-ranges.ts +++ b/packages/lib/date-ranges.ts @@ -116,7 +116,7 @@ export function buildDateRanges({ availability.reduce((processed: DateRange[], item) => { if ("date" in item && !!item.date) { const itemDateAsUtc = dayjs.utc(item.date); - if (itemDateAsUtc.isBetween(dateFrom, dateTo, null, "[]")) { + if (itemDateAsUtc.isBetween(dateFrom.startOf("day"), dateTo.endOf("day"), null, "[]")) { processed.push(processDateOverride({ item, itemDateAsUtc, timeZone })); } }