import test from 'node:test' import assert from 'node:assert/strict' import { readSource } from './helpers.ts' import { nextShopManagePageAfterDelete, shopManageDeleteConfirmText, shopManageDeleteTargetName, } from '../src/pages/shop/shop-manage-delete.ts' import type { ShopSummary } from '../src/pages/shop/shop-dto.ts' function row(id: number, shopName = ''): ShopSummary { return { id, groupId: 1, groupName: '', shopName, mallName: '', znUsername: '', account: '' } } test('test_task_095_shop_manage_delete_normal_primary_path', () => { // 正常主路径:删除确认以店铺名落文案,随成功删除刷新到有效页。 assert.equal(shopManageDeleteTargetName(row(1, 'BlueWave')), 'BlueWave') assert.equal(shopManageDeleteConfirmText(row(1, 'BlueWave')), '确定删除店铺“BlueWave”吗?') assert.equal(nextShopManagePageAfterDelete(2, 15, 31), 2) }) test('test_task_095_shop_manage_delete_normal_variant_input', () => { // 正常变体:店铺名为空用 #id 兜底;末页删除后回退一页。 assert.equal(shopManageDeleteTargetName(row(12)), '#12') assert.equal(nextShopManagePageAfterDelete(2, 15, 16), 1) }) test('test_task_095_shop_manage_delete_repeated_is_idempotent', () => { // 正常重复:文案/翻页稳定、不改入参。 assert.equal(shopManageDeleteConfirmText(row(2, 'A店')), shopManageDeleteConfirmText(row(2, 'A店'))) const input = { page: 3, pageSize: 15, totalBefore: 40 } assert.equal(nextShopManagePageAfterDelete(input.page, input.pageSize, input.totalBefore), 3) assert.deepEqual(input, { page: 3, pageSize: 15, totalBefore: 40 }) }) test('test_task_095_shop_manage_delete_boundary_empty_input', () => { // 边界空值:删除后恰为空时回到第 1 页。 assert.equal(nextShopManagePageAfterDelete(2, 15, 0), 1) assert.equal(nextShopManagePageAfterDelete(1, 15, 1), 1) }) test('test_task_095_shop_manage_delete_boundary_single_item', () => { // 边界单元素:首页单条删除后仍为第 1 页。 assert.equal(nextShopManagePageAfterDelete(1, 15, 1), 1) }) test('test_task_095_shop_manage_delete_boundary_limit_or_missing_field', () => { // 边界上限/缺字段:页大小无效按默认参与末页判断。 assert.equal(nextShopManagePageAfterDelete(2, 0, 16), 1) }) test('test_task_095_shop_manage_delete_invalid_input_rejected', () => { // 异常输入:空记录不产出可误删的确认文案。 assert.equal(shopManageDeleteTargetName(null as unknown as ShopSummary), '') assert.equal(shopManageDeleteConfirmText(null as unknown as ShopSummary), null) }) test('test_task_095_shop_manage_delete_dependency_failure_returns_actionable_message', () => { // 依赖失败/删除走 adapter:删除模型纯逻辑;adapter DELETE /api/admin/shop-manages/{id}。 const model = readSource('src/pages/shop/shop-manage-delete.ts') assert.equal(/axios|http\.|vue/.test(model), false, '删除模型保持纯逻辑') const api = readSource('src/pages/shop/shop-manage-api.ts') assert.match(api, /deleteShopManage/) assert.match(api, /http\.delete/) assert.match(api, /\/api\/admin\/shop-manages/) })