test: 💍 add journal unit test

This commit is contained in:
Jin 2025-04-03 01:02:05 +02:00
parent ad3e7d611e
commit 0e3e8233e3
2 changed files with 117 additions and 1 deletions

View File

@ -0,0 +1,113 @@
import { describe, it, expect, vi, beforeAll } from 'vitest';
import dayjs from "dayjs";
import type BNote from "../becca/entities/bnote.js";
import dateNotesService from "./date_notes.js";
import i18next from "i18next";
// Mock becca_loader
vi.mock("../becca/becca_loader.js", () => ({
default: {
load: vi.fn(),
loaded: Promise.resolve()
}
}));
// Mock SQL init
vi.mock("../services/sql.js", () => ({
default: {
dbReady: Promise.resolve(),
transactional: vi.fn((callback) => callback())
}
}));
// Mock BNote
const mockRootNote = {
getOwnedLabelValue: (key: string) => {
const patterns: Record<string, string> = {
"yearPattern": "{year}",
"quarterPattern": "Quarter {quarterNumber}",
"monthPattern": "{monthNumberPadded} - {month}",
"weekPattern": "Week {weekNumber}",
"datePattern": "{dateNumberPadded} - {weekDay}"
};
return patterns[key] || null;
}
} as unknown as BNote;
describe("date_notes", () => {
beforeAll(async () => {
await i18next.init({
lng: "en",
resources: {
en: {
translation: {
"months.march": "March",
"weekdays.saturday": "Saturday"
}
}
}
});
});
describe("getJournalNoteTitle", () => {
const testDate = dayjs("2025-03-15"); // Saturday
it("should generate year note title", () => {
const title = dateNotesService.getJournalNoteTitle(mockRootNote, "year", testDate, 2025);
expect(title).toBe("2025");
});
it("should generate quarter note title", () => {
const title = dateNotesService.getJournalNoteTitle(mockRootNote, "quarter", testDate, 1);
expect(title).toBe("Quarter 1");
});
it("should generate month note title", () => {
const title = dateNotesService.getJournalNoteTitle(mockRootNote, "month", testDate, 3);
expect(title).toBe("03 - March");
});
it("should generate week note title", () => {
const title = dateNotesService.getJournalNoteTitle(mockRootNote, "week", testDate, 11);
expect(title).toBe("Week 11");
});
it("should generate day note title", () => {
const title = dateNotesService.getJournalNoteTitle(mockRootNote, "day", testDate, 15);
expect(title).toBe("15 - Saturday");
});
it("should respect custom patterns", () => {
const customRootNote = {
getOwnedLabelValue: (key: string) => {
const patterns: Record<string, string> = {
"yearPattern": "{year}",
"quarterPattern": "{quarterNumber} {shortQuarter}",
"monthPattern": "{isoMonth} {monthNumber} {monthNumberPadded} {month} {shortMonth3} {shortMonth4}",
"weekPattern": "{weekNumber} {weekNumberPadded} {shortWeek} {shortWeek3}",
"datePattern": "{isoDate} {dateNumber} {dateNumberPadded} {ordinal} {weekDay} {weekDay3} {weekDay2}"
};
return patterns[key] || null;
}
} as unknown as BNote;
const testDate = dayjs("2025-03-01"); // Saturday
const yearTitle = dateNotesService.getJournalNoteTitle(customRootNote, "year", testDate, 2025);
expect(yearTitle).toBe("2025");
const quarterTitle = dateNotesService.getJournalNoteTitle(customRootNote, "quarter", testDate, 1);
expect(quarterTitle).toBe("1 Q1");
const monthTitle = dateNotesService.getJournalNoteTitle(customRootNote, "month", testDate, 3);
expect(monthTitle).toBe("2025-03 3 03 March Mar Marc");
const weekTitle = dateNotesService.getJournalNoteTitle(customRootNote, "week", testDate, 9);
expect(weekTitle).toBe("9 09 W9 W09");
const dayTitle = dateNotesService.getJournalNoteTitle(customRootNote, "day", testDate, 1);
expect(dayTitle).toBe("2025-03-01 1 01 1st Saturday Sat Sa");
});
});
});

View File

@ -453,5 +453,8 @@ export default {
getWeekNote,
getWeekFirstDayNote,
getDayNote,
getTodayNote
getTodayNote,
getJournalNoteTitle,
getWeekStartDate,
getWeekNumberStr
};