| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- 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, 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 first = s.openUserSelect('handler')
- const old = pending.shift()
- assert.deepEqual(old.params, { orderId: 2, type: 'handler' })
- const second = s.loadDeptUsers()
- const latest = pending.shift()
- latest.resolve({ data: [user(88)] })
- await second
- old.resolve({ data: [user(99)] })
- await first
- assert.equal(s.deptUserList.value[0].userId, 88)
- })
|