/** * Unit tests for rules/list formatter * Run with: node tests/rules-list.test.js */ const assert = require('assert'); const { formatRulesList, formatRuleActions } = require('../rules/list'); const folderMap = new Map([ ['AAMkAGI5...', 'Project A'], ['AAMkAGI6...', 'Newsletters'] ]); const rules = [ { id: 'rule-1', displayName: 'Project A emails', sequence: 1, isEnabled: true, conditions: { fromAddresses: [{ emailAddress: { address: 'team@example.com' } }] }, actions: { moveToFolder: 'AAMkAGI5...', markAsRead: true } }, { id: 'rule-2', displayName: 'Newsletter rule', sequence: 2, isEnabled: true, conditions: { subjectContains: ['newsletter'] }, actions: { copyToFolder: 'AAMkAGI6...' } }, { id: 'rule-3', displayName: 'Unknown folder rule', sequence: 3, isEnabled: true, actions: { moveToFolder: 'AAMkUNKNOWN' } } ]; // Test action formatter resolves known IDs and falls back to raw IDs const actions1 = formatRuleActions(rules[0], folderMap); assert(actions1.includes('Move to folder: Project A'), `Expected "Move to folder: Project A", got: ${actions1}`); assert(actions1.includes('Mark as read'), `Expected "Mark as read", got: ${actions1}`); const actions2 = formatRuleActions(rules[1], folderMap); assert(actions2.includes('Copy to folder: Newsletters'), `Expected "Copy to folder: Newsletters", got: ${actions2}`); const actions3 = formatRuleActions(rules[2], folderMap); assert(actions3.includes('Move to folder: AAMkUNKNOWN'), `Expected raw ID fallback, got: ${actions3}`); console.log('✅ formatRuleActions folder-name resolution assertions passed'); // Test full detailed list includes resolved folder names const detailed = formatRulesList(rules, true, folderMap); assert(detailed.includes('Move to folder: Project A'), `Detailed list should contain resolved folder name, got: ${detailed}`); assert(detailed.includes('Copy to folder: Newsletters'), `Detailed list should contain resolved folder name, got: ${detailed}`); assert(detailed.includes('Move to folder: AAMkUNKNOWN'), `Detailed list should fall back to raw ID, got: ${detailed}`); console.log('✅ formatRulesList detailed output assertions passed'); console.log('\nAll rules-list tests passed.');