-
Notifications
You must be signed in to change notification settings - Fork 3.7k
Expand file tree
/
Copy pathfieldErrors.spec.ts
More file actions
47 lines (34 loc) · 1.59 KB
/
fieldErrors.spec.ts
File metadata and controls
47 lines (34 loc) · 1.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import { describe, expect, it } from 'vitest'
import { createErrorsFromMessage } from './fieldErrors.js'
describe('createErrorsFromMessage', () => {
it('should return the full message when there is no colon', () => {
const result = createErrorsFromMessage('Something went wrong')
expect(result).toEqual({ message: 'Something went wrong' })
})
it('should split a single field error after the colon', () => {
const result = createErrorsFromMessage('Validation failed: email')
expect(result).toEqual({ errors: ['email'], message: 'Validation failed: ' })
})
it('should split multiple comma-separated field errors after the colon', () => {
const result = createErrorsFromMessage('The following fields are invalid: email, name')
expect(result).toEqual({
errors: ['email', 'name'],
message: 'The following fields are invalid (2):',
})
})
it('should preserve the full message when it contains multiple colons', () => {
const result = createErrorsFromMessage('With: multiple: colons')
expect(result).toEqual({ errors: ['multiple: colons'], message: 'With: ' })
})
it('should replace " > " with " → " in error paths', () => {
const result = createErrorsFromMessage('Invalid: parent > child')
expect(result).toEqual({ errors: ['parent → child'], message: 'Invalid: ' })
})
it('should group similar errors and count them', () => {
const result = createErrorsFromMessage('Invalid: blocks > 0, blocks > 1, other')
expect(result).toEqual({
errors: ['blocks → 0', 'blocks → 1', 'other'],
message: 'Invalid (3):',
})
})
})