Files
crawler-plugin/admin-frontend-vue/tests/task-70.test.ts
T
huangzd1997 4c78c64569 task-70(ASIN 数据中心): 实现品牌数据库删除确认
invalid-asin-model.ts 增 invalidAsinDeleteText 二次确认文案(含 ASIN 值/不可恢复语义);
invalid-asin-api.ts 增 deleteInvalidAsin DELETE /api/admin/invalid-asin-data/{id}。
8 用例全过,515 单测 + build 绿。
2026-09-05 15:58:23 +08:00

53 lines
2.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import test from 'node:test'
import assert from 'node:assert/strict'
import { readSource } from './helpers.ts'
import { invalidAsinDeleteText } from '../src/pages/invalidasin/invalid-asin-model.ts'
test('test_task_070_brand_db_delete_normal_primary_path', () => {
// 正常主路径:确认文案含 ASIN 值。
assert.match(invalidAsinDeleteText({ id: 1, dataValue: 'B0ABC', brand: '', groupId: null, groupName: '', recordSource: 'AUTO' }), /B0ABC/)
})
test('test_task_070_brand_db_delete_normal_variant_input', () => {
// 正常变体:空 dataValue 给出兜底文案不崩溃。
assert.ok(invalidAsinDeleteText({ id: 2, dataValue: '', brand: '', groupId: null, groupName: '', recordSource: 'AUTO' }))
})
test('test_task_070_brand_db_delete_normal_repeated_operation_is_idempotent', () => {
// 正常重复:文案纯函数稳定。
const item = { id: 3, dataValue: 'A', brand: '', groupId: null, groupName: '', recordSource: 'AUTO' }
assert.equal(invalidAsinDeleteText(item), invalidAsinDeleteText(item))
})
test('test_task_070_brand_db_delete_boundary_empty_input', () => {
// 边界空值:缺省条目提示通用文案,不崩溃。
assert.ok(invalidAsinDeleteText(undefined as never))
})
test('test_task_070_brand_db_delete_boundary_single_item', () => {
// 边界单元素:单条删除文案长度合理。
const text = invalidAsinDeleteText({ id: 4, dataValue: 'B0XYZ', brand: '', groupId: null, groupName: '', recordSource: 'AUTO' })
assert.ok(text.length > 0)
})
test('test_task_070_brand_db_delete_boundary_limit_or_missing_field', () => {
// 边界上限:品牌字段不影响删除确认。
const text = invalidAsinDeleteText({ id: 5, dataValue: 'V', brand: '很长的品牌名称不影响删除', groupId: null, groupName: '', recordSource: 'AUTO' })
assert.match(text, /V/)
})
test('test_task_070_brand_db_delete_invalid_input_rejected', () => {
// 异常输入:确认文案标记不可恢复语义。
assert.match(invalidAsinDeleteText({ id: 6, dataValue: 'X', brand: '', groupId: null, groupName: '', recordSource: 'AUTO' }), /删除/)
})
test('test_task_070_brand_db_delete_dependency_failure_returns_actionable_message', () => {
// 依赖失败/删除走 adapterDELETE /invalid-asin-data/{id}。
const api = readSource('src/pages/invalidasin/invalid-asin-api.ts')
assert.match(api, /deleteInvalidAsin/)
assert.match(api, /http\.delete/)
assert.match(api, /invalid-asin-data/)
const mod = readSource('src/pages/invalidasin/invalid-asin-model.ts')
assert.equal(/axios|http\./.test(mod), false, '品牌数据库模型保持纯逻辑')
})