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', () => { // 依赖失败/删除走 adapter:DELETE /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, '品牌数据库模型保持纯逻辑') })