edited notes: allow spaces between keyword and delta in #dateNote

to be compatible with existing search syntax
This commit is contained in:
contributor 2025-11-17 12:42:05 +02:00
parent f083908293
commit 2a65b85302
2 changed files with 11 additions and 5 deletions

View File

@ -19,7 +19,7 @@ const expectedYear = "2025";
const expectedYearMinus1 = "2024"; const expectedYearMinus1 = "2024";
function keywordResolvesToDate(dateStrOrKeyword: string, expectedDate: string) { function keywordResolvesToDate(dateStrOrKeyword: string, expectedDate: string) {
cls.init(() => { cls.init(() => {
cls.set("localNowDateTime", clientDate); cls.set("localNowDateTime", clientDate);
const dateFilter = dateNoteLabelKeywordToDateFilter(dateStrOrKeyword); const dateFilter = dateNoteLabelKeywordToDateFilter(dateStrOrKeyword);
expect(dateFilter.date).toBe(expectedDate); expect(dateFilter.date).toBe(expectedDate);
@ -27,7 +27,7 @@ function keywordResolvesToDate(dateStrOrKeyword: string, expectedDate: string) {
} }
function keywordDoesNotResolve(dateStrOrKeyword: string) { function keywordDoesNotResolve(dateStrOrKeyword: string) {
cls.init(() => { cls.init(() => {
cls.set("localNowDateTime", clientDate); cls.set("localNowDateTime", clientDate);
const dateFilter = dateNoteLabelKeywordToDateFilter(dateStrOrKeyword); const dateFilter = dateNoteLabelKeywordToDateFilter(dateStrOrKeyword);
expect(dateFilter.date).toBe(null); expect(dateFilter.date).toBe(null);
@ -36,7 +36,7 @@ function keywordDoesNotResolve(dateStrOrKeyword: string) {
describe("edited-notes::dateNoteLabelKeywordToDateFilter", () => { describe("edited-notes::dateNoteLabelKeywordToDateFilter", () => {
beforeEach(() => { beforeEach(() => {
vi.stubEnv('TZ', 'UTC'); vi.stubEnv("TZ", "UTC");
vi.useFakeTimers(); vi.useFakeTimers();
vi.setSystemTime(new Date(serverDate)); vi.setSystemTime(new Date(serverDate));
}); });
@ -67,6 +67,12 @@ describe("edited-notes::dateNoteLabelKeywordToDateFilter", () => {
keywordResolvesToDate("TODAY-1", expectedTodayMinus1); keywordResolvesToDate("TODAY-1", expectedTodayMinus1);
}); });
it("resolves 'TODAY - 1' (with spaces) to yesterday's date", () => {
keywordResolvesToDate("TODAY - 1", expectedTodayMinus1);
keywordResolvesToDate("TODAY- 1", expectedTodayMinus1);
keywordResolvesToDate("TODAY -1", expectedTodayMinus1);
});
it("resolves 'MONTH-2' to 2 months ago", () => { it("resolves 'MONTH-2' to 2 months ago", () => {
keywordResolvesToDate("MONTH-2", expectedMonthMinus2); keywordResolvesToDate("MONTH-2", expectedMonthMinus2);
}); });

View File

@ -155,11 +155,11 @@ type DateFilter = DateValue;
* @returns A `DateFilter` object containing the resolved date string. * @returns A `DateFilter` object containing the resolved date string.
*/ */
export function dateNoteLabelKeywordToDateFilter(dateStr: string): DateFilter { export function dateNoteLabelKeywordToDateFilter(dateStr: string): DateFilter {
const keywordAndDelta = dateStr.match(/^(today|month|year)([+-]\d+)?$/i); const keywordAndDelta = dateStr.match(/^(today|month|year)\s*([+-]\s*\d+)?$/i);
if (keywordAndDelta) { if (keywordAndDelta) {
const keyword = keywordAndDelta[1].toLowerCase(); const keyword = keywordAndDelta[1].toLowerCase();
const delta = keywordAndDelta[2] ? parseInt(keywordAndDelta[2]) : 0; const delta = parseInt(keywordAndDelta[2]?.replace(/\s/g, "") ?? "0");
const clientDate = dayjs(dateUtils.localNowDate()); const clientDate = dayjs(dateUtils.localNowDate());
const date = formatDateFromKeywordAndDelta(clientDate, keyword, delta); const date = formatDateFromKeywordAndDelta(clientDate, keyword, delta);