get-error-message.test.ts 1.6 KB

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