| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import test from 'node:test'
- import assert from 'node:assert/strict'
- import { readFileSync } from 'node:fs'
- import { reactive, ref, computed } from 'vue'
- import { parse } from '@vue/compiler-sfc'
- const source = parse(readFileSync(new URL('../src/views/subSystem/pipeNetwork/ops/workOrder/dispose.vue', import.meta.url), 'utf8')).descriptor.scriptSetup.content
- const code = source.slice(source.indexOf('const dispatchVisible = ref(false)'), source.indexOf('/* ============ 通用操作'))
- function setup(users = async () => ({ data: [] }), tree = async () => ({ data: [] })) {
- return new Function('ref', 'reactive', 'computed', 'userStore', 'workOrderUsers', 'workOrderDeptTree',
- `${code}; return { openDispatch, dispatchVisible, dispatchForm, openUserSelect, clearVerifier, deptTree, deptUserList, loadDeptUsers }`)(
- ref, reactive, computed, { id: 66 }, users, tree)
- }
- const user = id => ({ userId: id, nickName: `昵称${id}` })
- test('工单核验人只在服务端合格候选中默认当前用户', async () => {
- for (const eligible of [true, false]) {
- const s = setup(async params => {
- assert.deepEqual(params, { orderId: 1, type: 'reviewer' })
- return { data: eligible ? [user(66)] : [user(77)] }
- })
- await s.openDispatch({ orderId: 1 })
- assert.equal(s.dispatchForm.verifyUser, eligible ? 66 : null)
- }
- })
- test('迟到的默认核验结果不覆盖改选、清除及新工单', async () => {
- const pending = []
- const s = setup(() => new Promise(resolve => pending.push(resolve)))
- const first = s.openDispatch({ orderId: 1 })
- s.clearVerifier()
- pending.shift()({ data: [user(66)] })
- await first
- assert.equal(s.dispatchForm.verifyUser, null)
- const old = s.openDispatch({ orderId: 1 })
- const next = s.openDispatch({ orderId: 2 })
- pending.shift()({ data: [user(66)] })
- await old
- assert.equal(s.dispatchForm.verifyUser, null)
- pending.shift()({ data: [] })
- await next
- })
- test('选人携带工单及角色,部门切换迟到结果不能覆盖新列表', async () => {
- const pending = []
- const s = setup(params => params.type === 'reviewer'
- ? Promise.resolve({ data: [] }) : new Promise(resolve => pending.push({ params, resolve })))
- await s.openDispatch({ orderId: 2 })
- const open = s.openUserSelect('handler')
- const all = pending.shift()
- assert.deepEqual(all.params, { orderId: 2, type: 'handler', deptId: undefined })
- const dept = s.loadDeptUsers(101)
- const filtered = pending.shift()
- assert.equal(filtered.params.deptId, 101)
- filtered.resolve({ data: [user(88)] })
- await dept
- all.resolve({ data: [user(99)] })
- await open
- assert.equal(s.deptUserList.value[0].userId, 88)
- })
|