get-error-message.test.ts46 lines · main
1import { describe, expect, it } from 'vitest'
2
3import { getErrorMessage } from './get-error-message'
4
5describe('getErrorMessage', () => {
6 it('returns null for null', () => {
7 expect(getErrorMessage(null)).toBe(null)
8 })
9
10 it('returns null for undefined', () => {
11 expect(getErrorMessage(undefined)).toBe(null)
12 })
13
14 it('returns the string for string errors', () => {
15 expect(getErrorMessage('Something went wrong')).toBe('Something went wrong')
16 expect(getErrorMessage('')).toBe('')
17 })
18
19 it('returns the message for Error instances', () => {
20 expect(getErrorMessage(new Error('Failed to load'))).toBe('Failed to load')
21 expect(getErrorMessage(new TypeError('Invalid type'))).toBe('Invalid type')
22 })
23
24 it('returns the message property for objects with message', () => {
25 expect(getErrorMessage({ message: 'Custom error' })).toBe('Custom error')
26 expect(getErrorMessage({ message: 123 })).toBe('123')
27 expect(getErrorMessage({ message: null })).toBe('null')
28 })
29
30 it('converts other types to string', () => {
31 expect(getErrorMessage(123)).toBe('123')
32 expect(getErrorMessage(true)).toBe('true')
33 expect(getErrorMessage(false)).toBe('false')
34 expect(getErrorMessage({})).toBe('[object Object]')
35 expect(getErrorMessage([])).toBe('')
36 })
37
38 it('handles objects without message property', () => {
39 expect(getErrorMessage({ code: 500 })).toBe('[object Object]')
40 expect(getErrorMessage({ error: 'test' })).toBe('[object Object]')
41 })
42
43 it('handles nested error objects', () => {
44 expect(getErrorMessage({ message: { nested: 'error' } })).toBe('[object Object]')
45 })
46})