mirror of
https://github.com/TriliumNext/Notes.git
synced 2025-08-09 17:52:32 +08:00
test: 💍 add journal unit test
This commit is contained in:
parent
ad3e7d611e
commit
0e3e8233e3
113
src/services/date_notes.spec.ts
Normal file
113
src/services/date_notes.spec.ts
Normal 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");
|
||||
});
|
||||
});
|
||||
});
|
@ -453,5 +453,8 @@ export default {
|
||||
getWeekNote,
|
||||
getWeekFirstDayNote,
|
||||
getDayNote,
|
||||
getTodayNote
|
||||
getTodayNote,
|
||||
getJournalNoteTitle,
|
||||
getWeekStartDate,
|
||||
getWeekNumberStr
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user