38 lines
2.1 KiB
JavaScript
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.');
|