From e9463c251d78d995cdf854544d4c397e7ef11a84 Mon Sep 17 00:00:00 2001 From: Icebob Date: Tue, 28 Mar 2017 21:35:43 +0200 Subject: [PATCH] add test for async validator --- test/unit/specs/VueFormGenerator.spec.js | 72 ++++++++++++++++++++++++ test/unit/webpack.test.config.js | 8 +-- 2 files changed, 76 insertions(+), 4 deletions(-) diff --git a/test/unit/specs/VueFormGenerator.spec.js b/test/unit/specs/VueFormGenerator.spec.js index 44949377..2b62c5f2 100644 --- a/test/unit/specs/VueFormGenerator.spec.js +++ b/test/unit/specs/VueFormGenerator.spec.js @@ -893,4 +893,76 @@ describe("VueFormGenerator.vue", () => { }); }); + + describe("check async validator", () => { + let schema = { + fields: [ + { + type: "input", + inputType: "text", + label: "Name", + model: "name", + validator(value) { + return new Promise((resolve, reject) => { + setTimeout(() => { + if (value.length >= 3) + resolve(); + else + resolve([ "Invalid name" ]); + }, 50); + }); + } + } + ] + }; + + let model = { name: "Bob" }; + let form; + let field; + let onValidated = sinon.spy(); + + before( (done) => { + let elm = document.createElement("div"); + vm = new Vue({ + // eslint-disable-next-line quotes + template: ``, + data: { + schema, + model, + options: {} + }, + methods: { + onValidated + } + }).$mount(elm); + + el = vm.$el; + vm.$nextTick( () => { + form = vm.$refs.form; + field = form.$children[0]; + done(); + }); + }); + + it("should no errors after mounted()", (done) => { + vm.$nextTick( () => { + expect(form.errors).to.be.length(0); + done(); + }); + }); + + it("should be validation error if model value is not valid", cb => { + onValidated.reset(); + vm.model.name = "A"; + field.validate(); + + setTimeout(() => { + expect(form.errors).to.be.length(1); + expect(onValidated.calledWith(false, [{ field: schema.fields[0], error: "Invalid name"}] )).to.be.true; + + cb(); + }, 100); + }); + }); + }); \ No newline at end of file diff --git a/test/unit/webpack.test.config.js b/test/unit/webpack.test.config.js index 3396473f..68ecf236 100644 --- a/test/unit/webpack.test.config.js +++ b/test/unit/webpack.test.config.js @@ -6,14 +6,14 @@ module.exports = { devtool: "eval-source-map", module: { - preLoaders: [ + /*preLoaders: [ { test: /\.js$/, loader: "isparta", include: sourceDir, exclude: /node_modules/ } - ], + ],*/ loaders: [ { @@ -70,9 +70,9 @@ module.exports = { }, // Comment out this, if you would like to debug under `npm run ci` - loaders: { + /*loaders: { js: "isparta" - } + }*/ } };