All files / src/features/setting/schemas billing.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 34        3x                                                          
import { z } from 'zod';
import { VALIDATION, BILLING_SECTION } from '@/constants/setting';
 
// Billing form schema
export const billingSchema = z.object({
  cardNumber: z
    .string()
    .min(1, VALIDATION.BILLING.CARD_NUMBER_REQUIRED)
    .regex(
      BILLING_SECTION.FIELDS.CARD_NUMBER.PATTERN,
      VALIDATION.BILLING.CARD_NUMBER_INVALID
    ),
  expiryDate: z
    .string()
    .min(1, VALIDATION.BILLING.EXPIRY_DATE_REQUIRED)
    .regex(
      BILLING_SECTION.FIELDS.EXPIRY_DATE.PATTERN,
      VALIDATION.BILLING.EXPIRY_DATE_INVALID
    ),
  cvv: z
    .string()
    .min(1, VALIDATION.BILLING.CVV_REQUIRED)
    .regex(BILLING_SECTION.FIELDS.CVV.PATTERN, VALIDATION.BILLING.CVV_INVALID),
  holderName: z
    .string()
    .min(1, VALIDATION.BILLING.HOLDER_NAME_REQUIRED)
    .min(
      BILLING_SECTION.FIELDS.HOLDER_NAME.MIN_LENGTH,
      VALIDATION.BILLING.HOLDER_NAME_MIN_LENGTH
    ),
});
 
export type BillingFormData = z.infer<typeof billingSchema>;