diff --git a/frontend/src/views/Materials.test.js b/frontend/src/views/Materials.test.js index 2a76caad..3411c495 100644 --- a/frontend/src/views/Materials.test.js +++ b/frontend/src/views/Materials.test.js @@ -1,6 +1,6 @@ import { flushPromises, mount } from '@vue/test-utils' import ElementPlus, { ElMessage, ElMessageBox } from 'element-plus' -import { beforeEach, describe, expect, test, vi } from 'vitest' +import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest' import Materials from './Materials.vue' import { codeRulesApi, materialCategoriesApi, unitsApi } from '../api/masterData' @@ -324,3 +324,41 @@ describe('物料检索框的候选项', () => { wrapper.unmount() }) }) + +describe('物料列表的作废入口文案', () => { + beforeEach(() => { + materialCategoriesApi.list.mockResolvedValue({ data: categories }) + unitsApi.list.mockResolvedValue({ data: [] }) + materialsStore.materials = [ + { id: 1, material_code: 'A010201', name: '作废物料', status: 'obsolete' }, + { id: 2, material_code: 'A010202', name: '有效物料', status: 'active' } + ] + }) + + afterEach(() => { + materialsStore.materials = [] + }) + + // 按钮文案得精确匹配:「撤销作废」里也含「作废」,用 includes 会把两个按钮看成同一个。 + function exactButton(wrapper, text) { + return wrapper.findAll('button').find(button => button.text().trim() === text) + } + + // 这一页没有状态列(文案即状态),所以按钮文案本身得说清这条物料怎么了。 + // 「撤销」在中文 UI 里默认指撤销上一步(Ctrl+Z),看不出在撤销什么;「撤销作废」 + // 才读得出「这条被作废了,点这里撤销那次作废」。 + test('作废的那行显示「撤销作废」,有效的那行显示「作废」', async () => { + const wrapper = mountMaterials() + await flushPromises() + + const restore = exactButton(wrapper, '撤销作废') + const obsolete = exactButton(wrapper, '作废') + + expect(restore).toBeTruthy() + expect(obsolete).toBeTruthy() + // 两个入口互斥:作废的那行不该再有「作废」,有效的那行不该有「撤销作废」。 + expect(restore.element.closest('tr').textContent).toContain('作废物料') + expect(obsolete.element.closest('tr').textContent).toContain('有效物料') + wrapper.unmount() + }) +}) diff --git a/frontend/src/views/Materials.vue b/frontend/src/views/Materials.vue index f2a12e9e..f1743286 100644 --- a/frontend/src/views/Materials.vue +++ b/frontend/src/views/Materials.vue @@ -62,7 +62,7 @@ 详情 编辑 作废 - 撤销 + 撤销作废