Skip to content

Commit e9463c2

Browse files
committed
add test for async validator
1 parent 806080e commit e9463c2

File tree

2 files changed

+76
-4
lines changed

2 files changed

+76
-4
lines changed

test/unit/specs/VueFormGenerator.spec.js

+72
Original file line numberDiff line numberDiff line change
@@ -893,4 +893,76 @@ describe("VueFormGenerator.vue", () => {
893893
});
894894
});
895895

896+
897+
describe("check async validator", () => {
898+
let schema = {
899+
fields: [
900+
{
901+
type: "input",
902+
inputType: "text",
903+
label: "Name",
904+
model: "name",
905+
validator(value) {
906+
return new Promise((resolve, reject) => {
907+
setTimeout(() => {
908+
if (value.length >= 3)
909+
resolve();
910+
else
911+
resolve([ "Invalid name" ]);
912+
}, 50);
913+
});
914+
}
915+
}
916+
]
917+
};
918+
919+
let model = { name: "Bob" };
920+
let form;
921+
let field;
922+
let onValidated = sinon.spy();
923+
924+
before( (done) => {
925+
let elm = document.createElement("div");
926+
vm = new Vue({
927+
// eslint-disable-next-line quotes
928+
template: `<vue-form-generator :schema="schema" :model="model" :options="options" :multiple="false" ref="form" @validated="onValidated"></vue-form-generator>`,
929+
data: {
930+
schema,
931+
model,
932+
options: {}
933+
},
934+
methods: {
935+
onValidated
936+
}
937+
}).$mount(elm);
938+
939+
el = vm.$el;
940+
vm.$nextTick( () => {
941+
form = vm.$refs.form;
942+
field = form.$children[0];
943+
done();
944+
});
945+
});
946+
947+
it("should no errors after mounted()", (done) => {
948+
vm.$nextTick( () => {
949+
expect(form.errors).to.be.length(0);
950+
done();
951+
});
952+
});
953+
954+
it("should be validation error if model value is not valid", cb => {
955+
onValidated.reset();
956+
vm.model.name = "A";
957+
field.validate();
958+
959+
setTimeout(() => {
960+
expect(form.errors).to.be.length(1);
961+
expect(onValidated.calledWith(false, [{ field: schema.fields[0], error: "Invalid name"}] )).to.be.true;
962+
963+
cb();
964+
}, 100);
965+
});
966+
});
967+
896968
});

test/unit/webpack.test.config.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ module.exports = {
66
devtool: "eval-source-map",
77

88
module: {
9-
preLoaders: [
9+
/*preLoaders: [
1010
{
1111
test: /\.js$/,
1212
loader: "isparta",
1313
include: sourceDir,
1414
exclude: /node_modules/
1515
}
16-
],
16+
],*/
1717

1818
loaders: [
1919
{
@@ -70,9 +70,9 @@ module.exports = {
7070
},
7171

7272
// Comment out this, if you would like to debug under `npm run ci`
73-
loaders: {
73+
/*loaders: {
7474
js: "isparta"
75-
}
75+
}*/
7676
}
7777

7878
};

0 commit comments

Comments
 (0)