import test from 'node:test' import assert from 'node:assert/strict' import { readSource } from './helpers.ts' import { keysEmptyText, manageEmptyText, requestErrorFeedback, } from '../src/pages/shop/shop-list-feedback.ts' test('test_task_097_shop_list_feedback_normal_primary_path', () => { // 正常主路径:无数据且未筛选时给出默认空态文案。 assert.equal(manageEmptyText({ hasFilter: false, total: 0 }), '暂无店铺') assert.equal(keysEmptyText({ hasFilter: false }), '暂无店铺密钥') }) test('test_task_097_shop_list_feedback_normal_variant_input', () => { // 正常变体:启用筛选仍无结果时提示放宽条件。 assert.equal(manageEmptyText({ hasFilter: true, total: 0 }), '暂无符合条件的店铺,请调整筛选条件') assert.equal(keysEmptyText({ hasFilter: true }), '没有匹配的店铺密钥,请调整关键词') }) test('test_task_097_shop_list_feedback_repeated_is_idempotent', () => { // 正常重复:同一输入文案稳定。 assert.equal(manageEmptyText({ hasFilter: false, total: 0 }), manageEmptyText({ hasFilter: false, total: 0 })) assert.equal(keysEmptyText({ hasFilter: true }), keysEmptyText({ hasFilter: true })) }) test('test_task_097_shop_list_feedback_boundary_empty_input', () => { // 边界空值:非空数据不产出空态文案。 assert.equal(manageEmptyText({ hasFilter: false, total: 1 }), '') assert.equal(keysEmptyText({ hasFilter: false }), '暂无店铺密钥') }) test('test_task_097_shop_list_feedback_boundary_single_item', () => { // 边界单元素:错误反馈取后端 message。 assert.equal(requestErrorFeedback({ message: '无权访问店铺数据' }), '无权访问店铺数据') }) test('test_task_097_shop_list_feedback_boundary_limit_or_missing_field', () => { // 边界上限/缺字段:无 message 的错误对象回兜底可操作文案。 const fallback = requestErrorFeedback(new Error('')) assert.ok(fallback.length > 0) assert.equal(requestErrorFeedback(undefined), fallback) }) test('test_task_097_shop_list_feedback_invalid_input_rejected', () => { // 异常输入:Error 对象与纯对象统一归一为字符串。 assert.match(requestErrorFeedback(new Error('网络异常,请稍后重试')), /网络异常/) }) test('test_task_097_shop_list_feedback_dependency_failure_returns_actionable_message', () => { // 依赖失败/可操作:反馈纯逻辑,无框架/http。 const mod = readSource('src/pages/shop/shop-list-feedback.ts') assert.equal(/axios|http\.|vue/.test(mod), false, '反馈模块保持纯逻辑') assert.match(mod, /requestErrorMessage/) })