refactor: 收拢客户列表次要操作

This commit is contained in:
2026-08-08 11:21:56 +08:00
parent 4835904507
commit cb0792963c
2 changed files with 75 additions and 7 deletions
@@ -100,6 +100,16 @@ function tableButtonByText(text: string) {
.find((button) => button.textContent?.trim() === text)
}
async function clickMoreAction(text: string) {
tableButtonByText('更多')?.click()
await flushPromises()
const item = [...document.querySelectorAll<HTMLElement>('.el-dropdown-menu__item')]
.find((candidate) => candidate.textContent?.trim() === text && !candidate.classList.contains('is-disabled'))
expect(item).toBeDefined()
item!.dispatchEvent(new MouseEvent('click', { bubbles: true }))
await flushPromises()
}
enableAutoUnmount(afterEach)
describe('CustomersView', () => {
@@ -445,8 +455,7 @@ describe('CustomersView', () => {
mount(CustomersView, { attachTo: document.body, global: { plugins: [pinia, ElementPlus] } })
await flushPromises()
tableButtonByText('重置密码')?.click()
await flushPromises()
await clickMoreAction('重置密码')
const password = document.querySelector<HTMLInputElement>('input[autocomplete="new-password"]')
const confirmation = document.querySelector<HTMLInputElement>('input[placeholder="请再次输入新密码"]')
@@ -470,9 +479,11 @@ describe('CustomersView', () => {
useAccessPreviewStore().initializeAfterLogin()
vi.mocked(archivePlatformTenant).mockResolvedValue({ ...fullTenant, status: 'DISABLED' })
mount(CustomersView, { attachTo: document.body, global: { plugins: [pinia, ElementPlus] } })
const wrapper = mount(CustomersView, { attachTo: document.body, global: { plugins: [pinia, ElementPlus] } })
await flushPromises()
tableButtonByText('删除')?.click()
const dropdowns = wrapper.findAllComponents({ name: 'ElDropdown' })
expect(dropdowns.length).toBeGreaterThan(0)
dropdowns.at(-1)!.vm.$emit('command', 'delete')
await flushPromises()
const confirmation = document.querySelector<HTMLInputElement>('input[placeholder="TEN8"]')
@@ -496,4 +507,21 @@ describe('CustomersView', () => {
expect(document.querySelector('.el-table__fixed')).toBeNull()
})
it('keeps frequent actions visible and groups secondary customer actions under more', async () => {
const auth = useAuthStore()
auth.permissions = [...auth.permissions, 'platform:customer:reset-password', 'platform:customer:impersonate', 'platform:customer:status', 'platform:customer:delete']
useAccessPreviewStore().initializeAfterLogin()
vi.mocked(listPlatformTenants).mockResolvedValue({ records: [{ ...fullTenant, status: 'ACTIVE' }], page: 1, size: 10, total: 1, pages: 1 })
mount(CustomersView, { attachTo: document.body, global: { plugins: [pinia, ElementPlus] } })
await flushPromises()
expect(tableButtonByText('详情')).toBeDefined()
expect(tableButtonByText('编辑')).toBeDefined()
expect(tableButtonByText('更多')).toBeDefined()
expect(tableButtonByText('重置密码')).toBeUndefined()
await clickMoreAction('重置密码')
expect(document.querySelector('input[autocomplete="new-password"]')).toBeTruthy()
})
})