mirror of
https://github.com/fsolla/teqo.git
synced 2026-11-13 23:45:18 +00:00
35 lines
1.3 KiB
TypeScript
35 lines
1.3 KiB
TypeScript
// @vitest-environment node
|
|
|
|
import { describe, expect, it } from 'vitest'
|
|
|
|
import {
|
|
brazilianMobile,
|
|
nullablePersistedEmail,
|
|
optionalPersistedEmail,
|
|
positiveRelationshipId,
|
|
trimmedNullableText,
|
|
trimmedOptionalText,
|
|
} from '@/lib/schemas/primitives'
|
|
|
|
describe('persisted schema primitives', () => {
|
|
it('accepts positive numeric relationship IDs but not numeric strings', () => {
|
|
expect(positiveRelationshipId.parse(4)).toBe(4)
|
|
expect(() => positiveRelationshipId.parse('4')).toThrow()
|
|
})
|
|
|
|
it('preserves optional and nullable trimmed text semantics', () => {
|
|
expect(trimmedOptionalText(20).parse(' texto ')).toBe('texto')
|
|
expect(trimmedOptionalText(20).parse(' ')).toBeUndefined()
|
|
expect(trimmedNullableText(20).parse(' ')).toBeNull()
|
|
expect(trimmedNullableText(20).parse(null)).toBeNull()
|
|
expect(trimmedNullableText(20).parse(undefined)).toBeUndefined()
|
|
})
|
|
|
|
it('normalizes Brazilian mobile phones and keeps email clearing semantics distinct', () => {
|
|
expect(brazilianMobile.parse('(71) 99999-0000')).toBe('71999990000')
|
|
expect(() => brazilianMobile.parse('7199990000')).toThrow('Celular brasileiro inválido.')
|
|
expect(optionalPersistedEmail.parse('')).toBeUndefined()
|
|
expect(nullablePersistedEmail.parse('')).toBeNull()
|
|
expect(nullablePersistedEmail.parse(null)).toBeNull()
|
|
})
|
|
})
|