cowboy's notebooks

  • Yup: greaterThanOrEqualTo - /cowboy/yup-greater-than-or-equal-to
    Last edited 4 years ago
    const Yup = require('yup') const greaterThanOrEqualTo = function (ref, msg) { return this.test({ name: 'greaterThanOrEqualTo', message: msg || '${path} must be greater than or equal to ${reference}', params: { reference: ref.path }, test(value) { return value >= this.resolve(ref) } }) } Yup.addMethod(Yup.number, 'greaterThanOrEqualTo', greaterThanOrEqualTo); const selectionAmountValidation = Yup.number() .min(0) .max(24) .required() .typeError('This must be a number.') const nameValidation = Yup.string() .min(1) .max(255) .required() const contactSchema = Yup.object({ name: nameValidation, selections: Yup.object() .shape({ minSelection: selectionAmountValidation, maxSelections: selectionAmountValidation .greaterThanOrEqualTo(Yup.ref('minSelection')) }), modifiers: Yup.array().of( Yup.object() .shape({ name: nameValidation, calories: Yup.number(), pricing: Yup.object() .shape({ basePrice: Yup.number() }) }) ) }) await contactSchema.validate({ name: 'foo', selections: { minSelection: 3, maxSelections: 4 }, modifiers: [ ] })