outlook-mcp/tests/folder-list.test.js

38 lines
2.1 KiB
JavaScript

/**
* Unit tests for folder/list formatters
* Run with: node tests/folder-list.test.js
*/
const assert = require('assert');
const { formatFolderList, formatFolderHierarchy } = require('../folder/list');
const mockFolders = [
{ id: 'inbox-id', displayName: 'Inbox', isTopLevel: true },
{ id: 'recoverable-id', displayName: 'Recoverable Items', isTopLevel: true },
{ id: 'junk-1', displayName: 'Junk Email', isTopLevel: true },
{ id: 'junk-2', displayName: 'Junk Email', parentFolderId: 'recoverable-id', parentFolder: 'Recoverable Items', isTopLevel: false },
{ id: 'archive-id', displayName: 'Archive', isTopLevel: true },
{ id: 'custom-id', displayName: 'Custom Folder', isTopLevel: true },
{ id: 'custom-id', displayName: 'Custom Folder', isTopLevel: true } // duplicate ID
];
// Simulate deduplication/duplicate marking done by getAllFoldersHierarchy
const folders = Array.from(new Map(mockFolders.map(f => [f.id, f])).values());
const displayNameCounts = new Map();
for (const f of folders) displayNameCounts.set(f.displayName, (displayNameCounts.get(f.displayName) || 0) + 1);
for (const f of folders) if (displayNameCounts.get(f.displayName) > 1) f.hasDuplicateName = true;
// Test flat list deduplication and duplicate ID display
const flat = formatFolderList(folders, false);
assert(!flat.includes('Custom Folder\nCustom Folder'), 'Duplicate IDs should be deduplicated');
assert(flat.includes('Junk Email [id: junk-1]'), 'Duplicate displayName should include id');
assert(flat.includes('Junk Email [id: junk-2]'), 'Duplicate displayName should include id');
assert(!flat.includes('[id: inbox-id]'), 'Unique displayName should not include id');
console.log('✅ formatFolderList duplicate/id assertions passed');
// Test hierarchy respects duplicate IDs
const hierarchy = formatFolderHierarchy(folders, false);
assert(hierarchy.includes('Junk Email [id: junk-1]'), 'Hierarchy should show duplicate id');
assert(hierarchy.includes('Junk Email [id: junk-2]'), 'Hierarchy should show duplicate id for child duplicate');
console.log('✅ formatFolderHierarchy duplicate/id assertions passed');
console.log('\nAll folder-list tests passed.');