Compare commits
No commits in common. "4ae4427e8e595667c39c762f3cac062e1cef1ce3" and "109f8a9655068dd8f95edf5fc20c62fb1e803082" have entirely different histories.
4ae4427e8e
...
109f8a9655
@ -1,6 +1,5 @@
|
||||
const Base = require('./base.js')
|
||||
const util = require('util')
|
||||
const validate = require('../validate.js')
|
||||
|
||||
class TypeArray extends Base {
|
||||
constructor () {
|
||||
@ -9,10 +8,6 @@ class TypeArray extends Base {
|
||||
this._empty = false
|
||||
this._min = null
|
||||
this._max = null
|
||||
/**
|
||||
* @type {Base[]}
|
||||
*/
|
||||
this._itemTypes = []
|
||||
}
|
||||
|
||||
/**
|
||||
@ -35,11 +30,6 @@ class TypeArray extends Base {
|
||||
return this
|
||||
}
|
||||
|
||||
items (...args) {
|
||||
this._itemTypes.push(...args)
|
||||
return this
|
||||
}
|
||||
|
||||
/**
|
||||
* set max length
|
||||
* @param {number} num
|
||||
@ -60,23 +50,6 @@ class TypeArray extends Base {
|
||||
if (!this._empty && value.length === 0) return `not allow empty`
|
||||
if (this._min !== null && value.length < this._min) return `value length < ${this._min}`
|
||||
if (this._max !== null && value.length > this._max) return `value length > ${this._max}`
|
||||
|
||||
for (const item of value) {
|
||||
let verified = false
|
||||
let fail = ''
|
||||
for (const type of this._itemTypes) {
|
||||
const result = type.validate(item)
|
||||
if (result) {
|
||||
fail = result
|
||||
} else {
|
||||
verified = true
|
||||
fail = ''
|
||||
break
|
||||
}
|
||||
}
|
||||
if (!verified || fail) return fail || `item type not match`
|
||||
}
|
||||
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,5 @@
|
||||
/* eslint-disable no-undef */
|
||||
const TypeArray = require('./array.js')
|
||||
const TypeString = require('./string.js')
|
||||
const TypeObject = require('./object.js')
|
||||
|
||||
describe('test validate schema type array', () => {
|
||||
function throwFunc (val) {
|
||||
@ -61,15 +59,4 @@ describe('test validate schema type array', () => {
|
||||
|
||||
expect(throwFunc(arr.validate([1, 2, 3]))).toThrow()
|
||||
})
|
||||
|
||||
it('test array contains value', async () => {
|
||||
const arr = new TypeArray().items(new TypeString())
|
||||
|
||||
expect(throwFunc(arr.validate([1, 2, 3]))).toThrow()
|
||||
throwFunc(arr.validate(['asd']))
|
||||
|
||||
const arr2 = new TypeArray().items(new TypeString(), new TypeObject())
|
||||
expect(throwFunc(arr2.validate([123, true]))).toThrow()
|
||||
throwFunc(arr2.validate(['asd', '33', {}]))
|
||||
})
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user