useApproval.spec.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import { describe, it, expect } from 'vitest'
  2. import { nextTick } from 'vue'
  3. import { useApproval } from '@/composables/useApproval'
  4. describe('useApproval', () => {
  5. it('initial state is reset', () => {
  6. const approval = useApproval()
  7. expect(approval.form.action).toBe('pass')
  8. expect(approval.form.comment).toBe('')
  9. expect(approval.submitting.value).toBe(false)
  10. expect(approval.batchMode.value).toBe(false)
  11. expect(approval.nextNodes.value).toEqual([])
  12. })
  13. it('buildActionData includes targetNodeId and attachmentUrls', async () => {
  14. const approval = useApproval()
  15. approval.form.action = 'pass'
  16. approval.form.comment = '同意'
  17. approval.form.targetNodeId = 'node_2'
  18. approval.attachmentList.value = [
  19. { response: '/uploads/a.pdf' },
  20. { url: '/uploads/b.pdf' }
  21. ]
  22. await nextTick()
  23. const data = approval.buildActionData()
  24. expect(data.action).toBe('pass')
  25. expect(data.comment).toBe('同意')
  26. expect(data.targetNodeId).toBe('node_2')
  27. expect(data.attachmentUrls).toContain('/uploads/a.pdf')
  28. expect(data.attachmentUrls).toContain('/uploads/b.pdf')
  29. })
  30. it('reset clears form and attachments', () => {
  31. const approval = useApproval()
  32. approval.form.action = 'reject'
  33. approval.form.comment = '拒绝'
  34. approval.attachmentList.value = [{ response: '/uploads/a.pdf' }]
  35. approval.reset()
  36. expect(approval.form.action).toBe('pass')
  37. expect(approval.form.comment).toBe('')
  38. expect(approval.attachmentList.value).toHaveLength(0)
  39. })
  40. })