Skip to content

Commit

Permalink
Merge branch 'release/2.5.2' of github.com:wearebraid/vue-formulate i…
Browse files Browse the repository at this point in the history
…nto release/2.5.2
  • Loading branch information
justin-schroeder committed Mar 5, 2021
2 parents aaeca79 + a6f066e commit 5eb3753
Show file tree
Hide file tree
Showing 4 changed files with 142 additions and 92 deletions.
212 changes: 131 additions & 81 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
"build:umd": "rollup --config build/rollup.config.js --format umd --file dist/formulate.umd.js",
"build:iife": "rollup --config build/rollup.iife.config.js --format iife --file dist/formulate.min.js",
"build:css": "node-sass themes/snow/snow.scss dist/snow.css && postcss --use autoprefixer -b '> 2%' < dist/snow.css | postcss --no-map --use cssnano > dist/snow.min.css",
"test": "NODE_ENV=test jest --config test/jest.conf.js --coverage",
"test": "cross-env NODE_ENV=test jest --config test/jest.conf.js --coverage",
"test:watch": "NODE_ENV=test jest --config test/jest.conf.js --watch",
"test:coverage": "NODE_ENV=test jest --config test/jest.conf.js --coverage",
"cypress": "cypress open",
Expand Down Expand Up @@ -59,6 +59,7 @@
"babel-core": "^7.0.0-bridge.0",
"babel-eslint": "^10.1.0",
"babel-jest": "^25.5.1",
"cross-env": "^7.0.3",
"cssnano": "^4.1.10",
"cypress": "^6.0.1",
"cypress-file-upload": "^4.1.1",
Expand Down
9 changes: 3 additions & 6 deletions src/libs/rules.js
Original file line number Diff line number Diff line change
Expand Up @@ -237,21 +237,18 @@ export default {
},

/**
* Rule: must be a value
* Rule: must be a value - allows for an optional argument "whitespace" with a possible value 'trim' and default 'pre'.
*/
required: function ({ value }, isRequired = true) {
required: function ({ value }, whitespace = 'pre') {
return Promise.resolve((() => {
if (!isRequired || ['no', 'false'].includes(isRequired)) {
return true
}
if (Array.isArray(value)) {
return !!value.length
}
if (value instanceof FileUpload) {
return value.getFiles().length > 0
}
if (typeof value === 'string') {
return !!value
return whitespace === 'trim' ? !!value.trim() : !!value
}
if (typeof value === 'object') {
return (!value) ? false : !!Object.keys(value).length
Expand Down
10 changes: 6 additions & 4 deletions test/unit/rules.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -448,12 +448,18 @@ describe('number', () => {
describe('required', () => {
it('fails on empty string', async () => expect(await rules.required({ value: '' })).toBe(false))

it('fails with only whitespace as value when second argument is "trim"', async () => expect(await rules.required({ value: ' ' }, 'trim')).toBe(false))

it('fails on empty array', async () => expect(await rules.required({ value: [] })).toBe(false))

it('fails on empty object', async () => expect(await rules.required({ value: {} })).toBe(false))

it('fails on null', async () => expect(await rules.required({ value: null })).toBe(false))

it('passes with only whitespace as value', async () => expect(await rules.required({ value: ' ' })).toBe(true))

it('passes with only whitespace as value when second argument is not "trim"', async () => expect(await rules.required({ value: ' ' }, 'pre')).toBe(true))

it('passes with the number zero', async () => expect(await rules.required({ value: 0 })).toBe(true))

it('passes with the boolean false', async () => expect(await rules.required({ value: false })).toBe(true))
Expand All @@ -462,10 +468,6 @@ describe('required', () => {

it('passes with a non empty object', async () => expect(await rules.required({ value: { a: 'b' } })).toBe(true))

it('passes with empty value if second argument is false', async () => expect(await rules.required({ value: '' }, false)).toBe(true))

it('passes with empty value if second argument is false string', async () => expect(await rules.required({ value: '' }, 'false')).toBe(true))

it('passes with FileUpload', async () => expect(await rules.required({ value: new FileUpload({ files: [{ name: 'j.png' }] }) })).toBe(true))

it('fails with empty FileUpload', async () => expect(await rules.required({ value: new FileUpload({ files: [] }) })).toBe(false))
Expand Down

0 comments on commit 5eb3753

Please sign in to comment.