import test from 'node:test' import assert from 'node:assert/strict' import { readSource } from './helpers.ts' // module 13 task 254:去重汇总页对齐 admin panel-dedupe-total-data —— 筛选扩充(用户名/分组/日期)、 // 行编辑/删除、新增导入/删除导入(轮询)、导出(日期校验+等待) 接线既有孤儿模块。 test('test_task_254_dedupe_normal_primary_path', () => { const page = readSource('src/pages/asin/DedupeRegistryPage.vue') assert.match(page, /新增导入/, '页头需有新增导入按钮') assert.match(page, /删除导入/, '页头需有删除导入按钮') assert.match(page, /导出/, '页头需有导出入口') assert.match(page, /编辑/, '行内需有编辑操作') assert.match(page, /删除/, '行内需有删除操作') }) test('test_task_254_dedupe_normal_variant_input', () => { const page = readSource('src/pages/asin/DedupeRegistryPage.vue') assert.match(page, /fetchDedupeTotalGroups/, '需接线分组列表源') assert.match(page, /toDedupeListParams/, '需走共享筛选归一(dedupe-total-filter)') assert.match(page, /importFinished|importTaskFinished/, '需用导入终态判断停止轮询') assert.match(page, /importOutcomeText/, '需展示导入/删除进度文案') }) test('test_task_254_dedupe_normal_repeated_operation_is_idempotent', () => { const page = readSource('src/pages/asin/DedupeRegistryPage.vue') assert.ok(page.includes('新增导入')) assert.ok(page.includes('新增导入')) }) test('test_task_254_dedupe_boundary_empty_input', () => { const page = readSource('src/pages/asin/DedupeRegistryPage.vue') assert.match(page, /开始日期/, '筛选需含开始日期') assert.match(page, /结束日期/, '筛选需含结束日期') assert.match(page, /上传人|用户名/, '筛选需含用户名') assert.match(page, /分组/, '筛选需含分组下拉') assert.match(page, /国家/, '筛选需含国家下拉') }) test('test_task_254_dedupe_boundary_single_item', () => { const page = readSource('src/pages/asin/DedupeRegistryPage.vue') assert.match(page, /开始日期不能晚于结束日期|晚于结束日期/, '导出需做日期区间校验') assert.match(page, /确定删除总数据/, '行删除确认文案应对齐 admin') }) test('test_task_254_dedupe_boundary_limit_or_missing_field', () => { const page = readSource('src/pages/asin/DedupeRegistryPage.vue') assert.match(page, /\.xlsx|\.xls|xlsx/, '导入需 Excel 文件类型提示') assert.match(page, /mounted|onMounted/, '需首屏加载') }) test('test_task_254_dedupe_invalid_input_rejected', () => { // 异常:不得出现空操作按钮(无 @click 的页头主按钮)。 const page = readSource('src/pages/asin/DedupeRegistryPage.vue') const headerButtons = page.match(/type="primary"[^>]*>([^<]*?)([^<]*?) { // 依赖失败:api 模块须暴露单行更新/删除端点;导入/删除导入复用既有常量(防假接线)。 const api = readSource('src/pages/asin/dedupe-total-api.ts') assert.match(api, /updateDedupeTotal|method: 'PUT'|\.put