All files / src/features/setting/schemas profile.schema.ts

100% Statements 1/1
100% Branches 0/0
100% Functions 0/0
100% Lines 1/1

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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        3x                                                        
import { z } from 'zod';
import { VALIDATION, PROFILE_SECTION } from '@/constants/setting';
 
// Profile form schema
export const profileSchema = z.object({
  name: z
    .string()
    .min(1, VALIDATION.PROFILE.NAME_REQUIRED)
    .min(
      PROFILE_SECTION.FIELDS.NAME.MIN_LENGTH,
      VALIDATION.PROFILE.NAME_MIN_LENGTH
    )
    .max(
      PROFILE_SECTION.FIELDS.NAME.MAX_LENGTH,
      VALIDATION.PROFILE.NAME_MAX_LENGTH
    ),
  email: z
    .string()
    .min(1, VALIDATION.PROFILE.EMAIL_REQUIRED)
    .email(VALIDATION.PROFILE.EMAIL_INVALID),
  phone: z
    .string()
    .min(1, VALIDATION.PROFILE.PHONE_REQUIRED)
    .regex(/^[+]?[\d\s\-()]+$/, VALIDATION.PROFILE.PHONE_INVALID)
    .min(
      PROFILE_SECTION.FIELDS.PHONE.MIN_DIGITS,
      VALIDATION.PROFILE.PHONE_MIN_DIGITS
    ),
  nationality: z.string().min(1, VALIDATION.PROFILE.NATIONALITY_REQUIRED),
});
 
export type ProfileFormData = z.infer<typeof profileSchema>;