import assert from 'node:assert/strict' import test from 'node:test' import prisma from '../../utils/prisma' import { cancelQueuedPrintJob, PrintServiceError } from '../printService' test('非管理员只能取消本人仍在排队的打印任务', async () => { const originalFindUnique = prisma.printJob.findUnique const originalUpdateMany = prisma.printJob.updateMany let capturedWhere: any = null ;(prisma.printJob.findUnique as any) = async () => ({ id: 12, status: 'queued', requested_by: 7, payload_json: '{}' }) ;(prisma.printJob.updateMany as any) = async ({ where }: any) => { capturedWhere = where return { count: 1 } } try { await assert.rejects( () => cancelQueuedPrintJob(12, 8, false), (error: unknown) => error instanceof PrintServiceError && error.statusCode === 403 ) await cancelQueuedPrintJob(12, 7, false) assert.equal(capturedWhere.requested_by, 7) await cancelQueuedPrintJob(12, 99, true) assert.equal('requested_by' in capturedWhere, false) } finally { ;(prisma.printJob.findUnique as any) = originalFindUnique ;(prisma.printJob.updateMany as any) = originalUpdateMany } }) test('取消打印任务使用 queued 条件更新防止与打印终端领取竞争', async () => { const originalFindUnique = prisma.printJob.findUnique const originalUpdateMany = prisma.printJob.updateMany ;(prisma.printJob.findUnique as any) = async () => ({ id: 12, status: 'queued', requested_by: 7, payload_json: '{}' }) ;(prisma.printJob.updateMany as any) = async () => ({ count: 0 }) try { await assert.rejects( () => cancelQueuedPrintJob(12, 7, false), (error: unknown) => error instanceof PrintServiceError && error.statusCode === 409 ) } finally { ;(prisma.printJob.findUnique as any) = originalFindUnique ;(prisma.printJob.updateMany as any) = originalUpdateMany } })