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

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

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        2x                                       15x            
import { z } from 'zod';
import { VALIDATION, PASSWORD_SECTION } from '@/constants/setting';
 
// Password form schema
export const passwordSchema = z
  .object({
    currentPassword: z
      .string()
      .min(1, VALIDATION.PASSWORD.CURRENT_PASSWORD_REQUIRED),
    newPassword: z
      .string()
      .min(1, VALIDATION.PASSWORD.NEW_PASSWORD_REQUIRED)
      .min(
        PASSWORD_SECTION.FIELDS.NEW_PASSWORD.MIN_LENGTH,
        VALIDATION.PASSWORD.NEW_PASSWORD_MIN_LENGTH
      )
      .regex(
        PASSWORD_SECTION.FIELDS.NEW_PASSWORD.PATTERN,
        PASSWORD_SECTION.FIELDS.NEW_PASSWORD.PATTERN_MESSAGE
      ),
    confirmPassword: z
      .string()
      .min(1, VALIDATION.PASSWORD.CONFIRM_PASSWORD_REQUIRED),
  })
  .refine(data => data.newPassword === data.confirmPassword, {
    message: VALIDATION.PASSWORD.PASSWORDS_MUST_MATCH,
    path: ['confirmPassword'],
  });
 
export type PasswordFormData = z.infer<typeof passwordSchema>;