Ver a proveniência

Add validateMaximum & validateMinimum

This address some of the validation requested on Issue #993
bubble
HelderSepu há 7 anos
ascendente
cometimento
7d40d72281
2 ficheiros alterados com 57 adições e 2 eliminações
  1. +24
    -0
      src/core/utils.js
  2. +33
    -2
      test/core/utils.js

+ 24
- 0
src/core/utils.js Ver ficheiro

@@ -470,6 +470,18 @@ export const propChecker = (props, nextProps, objectList=[], ignoreList=[]) => {
|| objectList.some( objectPropName => !eq(props[objectPropName], nextProps[objectPropName])))
}

export const validateMaximum = ( val, max ) => {
if (val > max) {
return "Value must be less than Maximum"
}
}

export const validateMinimum = ( val, min ) => {
if (val < min) {
return "Value must be greater than Minimum"
}
}

export const validateNumber = ( val ) => {
if (!/^-?\d+(\.?\d+)?$/.test(val)) {
return "Value must be a number"
@@ -517,6 +529,8 @@ export const validateParam = (param, isXml) => {
let errors = []
let value = isXml && param.get("in") === "body" ? param.get("value_xml") : param.get("value")
let required = param.get("required")
let maximum = param.get("maximum")
let minimum = param.get("minimum")
let type = param.get("type")
let format = param.get("format")

@@ -539,6 +553,16 @@ export const validateParam = (param, isXml) => {
errors.push("Required field is not provided")
return errors
}
if (maximum) {
let err = validateMaximum(value, maximum)
if (err) errors.push(err)
}

if (minimum) {
let err = validateMinimum(value, minimum)
if (err) errors.push(err)
}

if ( type === "string" ) {
let err


+ 33
- 2
test/core/utils.js Ver ficheiro

@@ -2,6 +2,7 @@
import expect from "expect"
import { fromJS, OrderedMap } from "immutable"
import { mapToList, validateDateTime, validateGuid, validateNumber, validateInteger, validateParam, validateFile, fromJSOrdered, getAcceptControllingResponse, createDeepLinkPath, escapeDeepLinkPath } from "core/utils"
import { validateMaximum, validateMinimum } from "core/utils"
import win from "core/window"

describe("utils", function() {
@@ -72,6 +73,34 @@ describe("utils", function() {

})

describe("validateMaximum", function() {
let errorMessage = "Value must be less than Maximum"

it("doesn't return for valid input", function() {
expect(validateMaximum(9, 10)).toBeFalsy()
expect(validateMaximum(19, 20)).toBeFalsy()
})

it("returns a message for invalid input", function() {
expect(validateMaximum(10, 9)).toEqual(errorMessage)
expect(validateMaximum(20, 19)).toEqual(errorMessage)
})
})
describe("validateMinimum", function() {
let errorMessage = "Value must be greater than Minimum"

it("doesn't return for valid input", function() {
expect(validateMinimum(2, 1)).toBeFalsy()
expect(validateMinimum(20, 10)).toBeFalsy()
})

it("returns a message for invalid input", function() {
expect(validateMinimum(1, 2)).toEqual(errorMessage)
expect(validateMinimum(10, 20)).toEqual(errorMessage)
})
})

describe("validateNumber", function() {
let errorMessage = "Value must be a number"

@@ -485,11 +514,13 @@ describe("utils", function() {
result = validateParam( param, false )
expect( result ).toEqual( ["Required field is not provided"] )

// valid number
// valid number with min and max
param = fromJS({
required: true,
type: "number",
value: 10
value: 10,
minimum: 5,
maximum: 99
})
result = validateParam( param, false )
expect( result ).toEqual( [] )


Carregando…
Cancelar
Guardar