/** * 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.');