diff --git a/src/public/app/test/easy-froca.ts b/src/public/app/test/easy-froca.ts new file mode 100644 index 000000000..99ac13f1c --- /dev/null +++ b/src/public/app/test/easy-froca.ts @@ -0,0 +1,64 @@ +import utils from "../services/utils.js"; +import FNote from "../entities/fnote.js"; +import froca from "../services/froca.js"; +import FAttribute from "../entities/fattribute.js"; + +interface NoteDefinition { + title: string; + [key: string]: string; +} + +/** + * Creates the given notes with the given title and optionally one or more attributes. + * + * For a label to be created, simply pass on a key prefixed with `#` and any desired value. + * + * The notes and attributes will be injected in the froca. + * + * @param notes + * @returns an array containing the IDs of the created notes. + * @example + * buildNotes([ + * { title: "A", "#startDate": "2025-05-05" }, + * { title: "B", "#startDate": "2025-05-07" } + * ]); + */ +export function buildNotes(notes: NoteDefinition[]) { + const ids = []; + + for (const noteDef of notes) { + const fakeNoteId = utils.randomString(6); + const note = new FNote(froca, { + noteId: fakeNoteId, + title: noteDef.title, + type: "text", + mime: "text/html", + isProtected: false, + blobId: "" + }); + froca.notes[note.noteId] = note; + ids.push(note.noteId); + + let position = 0; + for (const [ key, value ] of Object.entries(noteDef)) { + if (key.startsWith("#")) { + const attributeId = utils.randomString(12); + const attribute = new FAttribute(froca, { + noteId: note.noteId, + attributeId: attributeId, + type: "label", + name: key.substring(1), + value: value, + position: position, + isInheritable: false + }); + froca.attributes[attributeId] = attribute; + note.attributes.push(attributeId); + } + + position++; + } + } + + return ids; +} diff --git a/src/public/app/widgets/view_widgets/calendar_view.spec.ts b/src/public/app/widgets/view_widgets/calendar_view.spec.ts index e9bfbf8af..75eb67079 100644 --- a/src/public/app/widgets/view_widgets/calendar_view.spec.ts +++ b/src/public/app/widgets/view_widgets/calendar_view.spec.ts @@ -1,61 +1,13 @@ import { describe, it } from "vitest"; -import utils from "../../services/utils.js"; -import FNote from "../../entities/fnote.js"; -import froca from "../../services/froca.js"; -import FAttribute from "../../entities/fattribute.js"; - -interface NoteDefinition { - title: string; - [key: string]: string; -} - -async function buildNotes(notes: NoteDefinition[]) { - const ids = []; - - for (const noteDef of notes) { - const fakeNoteId = utils.randomString(6); - const note = new FNote(froca, { - noteId: fakeNoteId, - title: noteDef.title, - type: "text", - mime: "text/html", - isProtected: false, - blobId: "" - }); - froca.notes[note.noteId] = note; - ids.push(note.noteId); - - let position = 0; - for (const [ key, value ] of Object.entries(noteDef)) { - if (key.startsWith("#")) { - const attributeId = utils.randomString(12); - const attribute = new FAttribute(froca, { - noteId: note.noteId, - attributeId: attributeId, - type: "label", - name: key.substring(1), - value: value, - position: position, - isInheritable: false - }); - froca.attributes[attributeId] = attribute; - note.attributes.push(attributeId); - } - - position++; - } - } - - return ids; -} +import { buildNotes } from "../../test/easy-froca.js"; describe("Building events", () => { it("supports start date", async () => { - const noteIds = await buildNotes([ - { title: "A", "#startDate": "2025-05-05" } + const noteIds = buildNotes([ + { title: "A", "#startDate": "2025-05-05" }, + { title: "A", "#startDate": "2025-05-07" }, ]); - // import CalendarView from "./calendar_view.js"; const CalendarView = (await import("./calendar_view.js")).default; const events = await CalendarView.buildEvents(noteIds); console.log(noteIds, events);