Files
waoowaoo/tests/unit/task/error-message.test.ts

61 lines
1.9 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import { resolveTaskErrorMessage, resolveTaskErrorSummary } from '@/lib/task/error-message'
describe('task error message normalization', () => {
it('maps TASK_CANCELLED to unified cancelled message', () => {
const summary = resolveTaskErrorSummary({
errorCode: 'TASK_CANCELLED',
errorMessage: 'whatever',
})
expect(summary.cancelled).toBe(true)
expect(summary.code).toBe('CONFLICT')
expect(summary.message).toBe('Task cancelled by user')
})
it('keeps cancelled semantics from normalized task error details', () => {
const summary = resolveTaskErrorSummary({
error: {
code: 'CONFLICT',
message: 'Task cancelled by user',
details: { cancelled: true, originalCode: 'TASK_CANCELLED' },
},
})
expect(summary.cancelled).toBe(true)
expect(summary.code).toBe('CONFLICT')
expect(summary.message).toBe('Task cancelled by user')
})
it('extracts nested error message from payload', () => {
const message = resolveTaskErrorMessage({
error: {
details: {
message: 'provider failed',
},
},
}, 'fallback')
expect(message).toBe('provider failed')
})
it('supports flat error/details string payload', () => {
expect(resolveTaskErrorMessage({
error: 'provider failed',
}, 'fallback')).toBe('provider failed')
expect(resolveTaskErrorMessage({
details: 'provider failed',
}, 'fallback')).toBe('provider failed')
})
it('uses fallback when payload has no structured error', () => {
expect(resolveTaskErrorMessage({}, 'fallback')).toBe('fallback')
})
it('recognizes cancelled semantics from message-only payload', () => {
const summary = resolveTaskErrorSummary({
message: 'Task cancelled by user',
})
expect(summary.cancelled).toBe(true)
expect(summary.message).toBe('Task cancelled by user')
})
})