优化
This commit is contained in:
@@ -111,6 +111,46 @@ describe('FinanceCustomerStatementsView', () => {
|
||||
expect(source).not.toContain('<el-descriptions :column="3" border>')
|
||||
})
|
||||
|
||||
it('uses entity buttons for row actions and only folds the fourth action into more', () => {
|
||||
const source = readFileSync(resolve(process.cwd(), 'src/modules/finance/pages/FinanceCustomerStatementsView.vue'), 'utf8')
|
||||
const actions = source.slice(source.indexOf('<template #actions="{ row }">'), source.indexOf('<template #status="{ row }">'))
|
||||
expect(actions).not.toContain(' link')
|
||||
for (const label of ['详情', '提交', '通过', '驳回', '出账', '调整', '重开']) {
|
||||
const actionLine = actions.split('\n').find((line) => line.includes(`${label}</el-button>`))
|
||||
expect(actionLine).toContain('size="small" plain type="primary"')
|
||||
}
|
||||
expect(actions).toContain('size="small" plain type="danger"')
|
||||
expect(actions).toContain('aria-label="更多对账单操作" title="更多对账单操作"')
|
||||
expect(actions).toContain("row.status === 'PENDING_REVIEW' && canReview && canVoid")
|
||||
expect(actions.match(/<el-dropdown-item/g)).toHaveLength(1)
|
||||
expect(actions).toContain('class="danger-menu-item"')
|
||||
})
|
||||
|
||||
it('keeps three available row actions visible with primary and danger semantics', async () => {
|
||||
const { wrapper } = await mountPage([
|
||||
'platform:finance:customer-statement:list',
|
||||
'platform:finance:reconciliation:adjust',
|
||||
'platform:finance:reconciliation:void',
|
||||
])
|
||||
const actionButtons = [...document.querySelectorAll('button')].filter((button) => ['详情', '调整', '作废'].includes(button.textContent?.trim() || ''))
|
||||
const detailButton = actionButtons.find((button) => button.textContent?.trim() === '详情')
|
||||
const adjustButton = actionButtons.find((button) => button.textContent?.trim() === '调整')
|
||||
const voidButton = actionButtons.find((button) => button.textContent?.trim() === '作废')
|
||||
expect(new Set(actionButtons.map((button) => button.textContent?.trim()))).toEqual(new Set(['详情', '调整', '作废']))
|
||||
expect(detailButton?.classList).toContain('el-button--small')
|
||||
expect(detailButton?.classList).toContain('is-plain')
|
||||
expect(detailButton?.classList).toContain('el-button--primary')
|
||||
expect(adjustButton?.classList).toContain('el-button--primary')
|
||||
expect(voidButton?.classList).toContain('el-button--danger')
|
||||
|
||||
const vm = wrapper.vm as unknown as { actionBusy: boolean; adjustBusy: boolean }
|
||||
vm.actionBusy = true
|
||||
vm.adjustBusy = true
|
||||
await flushPromises()
|
||||
expect(adjustButton?.hasAttribute('disabled')).toBe(true)
|
||||
expect(voidButton?.hasAttribute('disabled')).toBe(true)
|
||||
})
|
||||
|
||||
it('keeps the payment history in the desktop detail layout without duplicating a card container', async () => {
|
||||
const { wrapper } = await mountPage()
|
||||
const vm = wrapper.vm as unknown as { openDetail(row: FinanceStatementReadModel): Promise<void>; activeDetailTab: 'lines' | 'payments' }
|
||||
|
||||
Reference in New Issue
Block a user