60 lines
2.0 KiB
JavaScript
60 lines
2.0 KiB
JavaScript
const { describe, it } = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
const { detectSeries, loadJourFixeAgenda, buildMeetingNote, buildFileName } = require('../lib/meeting-builder.js');
|
|
|
|
describe('detectSeries', () => {
|
|
const jourFixeFolders = ['IT Team', 'Christian Hermann', 'SAP Team'];
|
|
|
|
it('matches event title to Jour Fixe folder', () => {
|
|
assert.equal(detectSeries('IT Team Weekly', jourFixeFolders), 'IT Team');
|
|
});
|
|
|
|
it('matches partial title containing folder name', () => {
|
|
assert.equal(detectSeries('Jour Fixe Christian Hermann', jourFixeFolders), 'Christian Hermann');
|
|
});
|
|
|
|
it('returns empty string for no match', () => {
|
|
assert.equal(detectSeries('Call mit LANdata', jourFixeFolders), '');
|
|
});
|
|
});
|
|
|
|
describe('buildFileName', () => {
|
|
it('builds date-prefixed filename', () => {
|
|
assert.equal(buildFileName('2026-04-14', 'IT Team Weekly'), '2026-04-14 IT Team Weekly.md');
|
|
});
|
|
|
|
it('sanitizes invalid filename characters', () => {
|
|
assert.equal(
|
|
buildFileName('2026-04-14', 'Review: Q2/Q3 Plan'),
|
|
'2026-04-14 Review - Q2-Q3 Plan.md'
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('buildMeetingNote', () => {
|
|
it('generates complete meeting note markdown', () => {
|
|
const data = {
|
|
title: 'IT Team Weekly',
|
|
date: '2026-04-14',
|
|
start: '09:00',
|
|
end: '10:00',
|
|
serie: 'IT Team',
|
|
o365_id: 'AAMkAG123',
|
|
teilnehmer: [
|
|
{ wikilink: '[[Christopher Klein]]', name: 'Christopher Klein', isNew: false },
|
|
{ wikilink: '[[Philip Losch]]', name: 'Philip Losch', isNew: false }
|
|
],
|
|
agenda: '- Allgemeiner Status-Update KIT'
|
|
};
|
|
|
|
const note = buildMeetingNote(data);
|
|
|
|
assert.ok(note.includes('tags: [meeting]'));
|
|
assert.ok(note.includes('date: 2026-04-14'));
|
|
assert.ok(note.includes('serie: "IT Team"'));
|
|
assert.ok(note.includes('- "[[Christopher Klein]]"'));
|
|
assert.ok(note.includes('# IT Team Weekly'));
|
|
assert.ok(note.includes('- Allgemeiner Status-Update KIT'));
|
|
});
|
|
});
|