Skip to content

Commit

Permalink
fix(validation): add number support minValue and maxValue (#452)
Browse files Browse the repository at this point in the history
  • Loading branch information
NozomuIkuta committed Jan 25, 2024
1 parent 6d0c94f commit e6df3f5
Show file tree
Hide file tree
Showing 6 changed files with 20 additions and 8 deletions.
4 changes: 3 additions & 1 deletion lib/validation/validators/maxValue.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import { isNumber, isString } from '../../support/Utils'

export function maxValue(value: unknown, max: number) {
if (typeof value === 'string' || value instanceof Date) {
if (isNumber(value) || isString(value) || value instanceof Date) {
return +value <= max
}

Expand Down
4 changes: 3 additions & 1 deletion lib/validation/validators/minValue.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import { isNumber, isString } from '../../support/Utils'

export function minValue(value: unknown, min: number) {
if (typeof value === 'string' || value instanceof Date) {
if (isNumber(value) || isString(value) || value instanceof Date) {
return +value >= min
}

Expand Down
4 changes: 3 additions & 1 deletion tests/validation/rules/maxValue.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,14 @@ describe('validation/rules/maxValue', () => {
expect(rule.$validator(undefined, null, null)).toBe(true)
expect(rule.$validator(null, null, null)).toBe(true)
expect(rule.$validator([], null, null)).toBe(true)
expect(rule.$validator(0, null, null)).toBe(true)
expect(rule.$validator(10, null, null)).toBe(true)
expect(rule.$validator('0', null, null)).toBe(true)
expect(rule.$validator('10', null, null)).toBe(true)

expect(rule.$validator(true, null, null)).toBe(false)
expect(rule.$validator(false, null, null)).toBe(false)
expect(rule.$validator(10, null, null)).toBe(false)
expect(rule.$validator(11, null, null)).toBe(false)
expect(rule.$validator('11', null, null)).toBe(false)
expect(rule.$validator({}, null, null)).toBe(false)
})
Expand Down
4 changes: 3 additions & 1 deletion tests/validation/rules/minValue.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,13 @@ describe('validation/rules/minValue', () => {
expect(rule.$validator(undefined, null, null)).toBe(true)
expect(rule.$validator(null, null, null)).toBe(true)
expect(rule.$validator([], null, null)).toBe(true)
expect(rule.$validator(10, null, null)).toBe(true)
expect(rule.$validator('10', null, null)).toBe(true)

expect(rule.$validator(true, null, null)).toBe(false)
expect(rule.$validator(false, null, null)).toBe(false)
expect(rule.$validator(10, null, null)).toBe(false)
expect(rule.$validator(0, null, null)).toBe(false)
expect(rule.$validator(9, null, null)).toBe(false)
expect(rule.$validator('0', null, null)).toBe(false)
expect(rule.$validator('9', null, null)).toBe(false)
expect(rule.$validator({}, null, null)).toBe(false)
Expand Down
6 changes: 4 additions & 2 deletions tests/validation/validators/maxValue.spec.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
import { maxValue } from 'sefirot/validation/validators'

describe('validation/validators/maxValue', () => {
test('it validates whether the value is valid string', () => {
test('it validates whether the value is valid number or string', () => {
const max = 10

expect(maxValue(0, max)).toBe(true)
expect(maxValue(10, max)).toBe(true)
expect(maxValue('0', max)).toBe(true)
expect(maxValue('10', max)).toBe(true)

expect(maxValue(undefined, max)).toBe(false)
expect(maxValue(null, max)).toBe(false)
expect(maxValue(true, max)).toBe(false)
expect(maxValue(false, max)).toBe(false)
expect(maxValue(10, max)).toBe(false)
expect(maxValue(11, max)).toBe(false)
expect(maxValue('11', max)).toBe(false)
expect(maxValue({}, max)).toBe(false)
expect(maxValue([], max)).toBe(false)
Expand Down
6 changes: 4 additions & 2 deletions tests/validation/validators/minValue.spec.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
import { minValue } from 'sefirot/validation/validators'

describe('validation/validators/minValue', () => {
test('it validates whether the value is valid string', () => {
test('it validates whether the value is valid number or string', () => {
const min = 10

expect(minValue(10, min)).toBe(true)
expect(minValue('10', min)).toBe(true)

expect(minValue(undefined, min)).toBe(false)
expect(minValue(null, min)).toBe(false)
expect(minValue(true, min)).toBe(false)
expect(minValue(false, min)).toBe(false)
expect(minValue(10, min)).toBe(false)
expect(minValue(0, min)).toBe(false)
expect(minValue(9, min)).toBe(false)
expect(minValue('0', min)).toBe(false)
expect(minValue('9', min)).toBe(false)
expect(minValue({}, min)).toBe(false)
Expand Down

0 comments on commit e6df3f5

Please sign in to comment.