import assert from 'node:assert/strict'; import { applyVocabularySummaryItemFilters, buildVocabularySummaryFilters } from './vocabularyAuditFilters'; const uniqueWordFilter = buildVocabularySummaryFilters({ minUniqueWords: '40' }); assert.deepEqual(uniqueWordFilter, { minUniqueWords: 40, userMatchStages: [], baseMatch: {} }); const legacyFilter = buildVocabularySummaryFilters({ minCorrectWords: '35' }); assert.deepEqual(legacyFilter, { minUniqueWords: 35, userMatchStages: [], baseMatch: {} }); const emptyFilter = buildVocabularySummaryFilters({}); assert.deepEqual(emptyFilter, { minUniqueWords: undefined, userMatchStages: [], baseMatch: {} }); const studentFilter = buildVocabularySummaryFilters({ studentNo: 'A.12' }); assert.deepEqual(studentFilter.userMatchStages, [{ $match: { 'user.username': { $regex: 'A\\.12', $options: 'i' } } }]); const invalidFilter = buildVocabularySummaryFilters({ minUniqueWords: '4.5' }); assert.deepEqual(invalidFilter, { error: '去重单词数量必须是正整数' }); const filteredItems = applyVocabularySummaryItemFilters([ { userId: 'below', uniqueWords: 39 }, { userId: 'equal', uniqueWords: 40 }, { userId: 'above', uniqueWords: 41 } ], 40); assert.deepEqual(filteredItems.map(item => item.userId), ['equal', 'above']); console.log('vocabularyAuditFilters tests passed');