From abc3b5569c821e3b83866c94ecb69df46e87ee0b Mon Sep 17 00:00:00 2001 From: Muhammad Ali Date: Thu, 21 Sep 2023 14:04:20 +0500 Subject: [PATCH] core: fix upcoming reminder time calculation (#3341) * core: added missing equality sign * core: added test --- packages/core/__tests__/reminders.test.js | 20 ++++++++++++++++++++ packages/core/src/collections/reminders.js | 4 ++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/packages/core/__tests__/reminders.test.js b/packages/core/__tests__/reminders.test.js index bb059563e..1ed4a9f57 100644 --- a/packages/core/__tests__/reminders.test.js +++ b/packages/core/__tests__/reminders.test.js @@ -94,6 +94,16 @@ describe("format reminder time", () => { expect(formatReminderTime(reminder)).toBe("Upcoming: Today, 09:00 PM"); }); + test("weekly reminder [current week, today with multiple days]", () => { + const reminder = { + recurringMode: "week", + date: new Date(5).setHours(21), + selectedDays: [1, 2, 5, 6], + mode: "repeat" + }; + expect(formatReminderTime(reminder)).toBe("Upcoming: Today, 09:00 PM"); + }); + test("monthly reminder [current month]", () => { const reminder = { recurringMode: "month", @@ -128,6 +138,16 @@ describe("format reminder time", () => { expect(formatReminderTime(reminder)).toBe("Upcoming: Today, 09:00 PM"); }); + test("monthly reminder [current month, today with multiple days]", () => { + const reminder = { + recurringMode: "month", + date: new Date(0).setHours(21), + selectedDays: [6, 7, 8], + mode: "repeat" + }; + expect(formatReminderTime(reminder)).toBe("Upcoming: Today, 09:00 PM"); + }); + test("today", () => { const reminder = { date: new Date(2022, 5, 6, 8, 5).getTime(), diff --git a/packages/core/src/collections/reminders.js b/packages/core/src/collections/reminders.js index d1c00393c..6d9e18c18 100644 --- a/packages/core/src/collections/reminders.js +++ b/packages/core/src/collections/reminders.js @@ -227,14 +227,14 @@ function getUpcomingReminderTime(reminder) { return relativeTime.day(sorted[0]).add(1, "week").valueOf(); else { for (const day of reminder.selectedDays) - if (now.day() < day) return relativeTime.day(day).valueOf(); + if (now.day() <= day) return relativeTime.day(day).valueOf(); } } else if (isMonth) { if (now.date() > lastSelectedDay || isPast) return relativeTime.date(sorted[0]).add(1, "month").valueOf(); else { for (const day of reminder.selectedDays) - if (now.date() < day) return relativeTime.date(day).valueOf(); + if (now.date() <= day) return relativeTime.date(day).valueOf(); } }