Skip to content

Commit adb4f88

Browse files
committed
✅ test: Add field test cases
1 parent d0be50b commit adb4f88

13 files changed

+863
-5
lines changed

src/fields/fieldCheckbox.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<template lang="jade">
2-
input(type="checkbox", :disabled="disabled", v-model="value")
2+
input(type="checkbox", v-model="value", :readonly="schema.readonly", :disabled="disabled")
33
</template>
44

55
<script>

src/fields/fieldEmail.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<template lang="jade">
2-
input.form-control(type="email", v-model="value", :disabled="disabled", :placeholder="schema.placeholder")
2+
input.form-control(type="email", v-model="value", :readonly="schema.readonly", :disabled="disabled", :placeholder="schema.placeholder")
33
</template>
44

55
<script>

src/fields/fieldNumber.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<template lang="jade">
2-
input.form-control(type="number", v-model="value", number, :min="schema.min", :max="schema.max", :disabled="disabled", :placeholder="schema.placeholder")
2+
input.form-control(type="number", v-model="value", number, :min="schema.min", :max="schema.max", :readonly="schema.readonly", :disabled="disabled", :placeholder="schema.placeholder")
33
</template>
44

55
<script>

src/fields/fieldTextArea.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<template lang="jade">
2-
textarea.form-control(v-model="value", :rows="schema.rows || 2", :placeholder="schema.placeholder", :disabled="disabled", :maxlength="schema.max")
2+
textarea.form-control(v-model="value", :rows="schema.rows || 2", :readonly="schema.readonly", :placeholder="schema.placeholder", :disabled="disabled", :maxlength="schema.max")
33
</template>
44

55
<script>

test/unit/specs/fields/abstractField.spec.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ function createField(schema = {}, model = null, disabled = false, options) {
2727
return [el, vm];
2828
}
2929

30-
describe("abstractField", () => {
30+
describe("abstractField.vue", () => {
3131

3232
describe("check static value", () => {
3333
let schema = {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
import { expect } from "chai";
2+
import { trigger } from "../util";
3+
4+
import Vue from "vue";
5+
import FieldCheckbox from "src/fields/fieldCheckbox.vue";
6+
7+
Vue.component("FieldCheckbox", FieldCheckbox);
8+
9+
let el, vm, field;
10+
11+
function createField(schema = {}, model = null, disabled = false, options) {
12+
el = document.createElement("div");
13+
el.innerHTML = `<field-checkbox :schema.sync="schema" :model.sync="model" :disabled="disabled" v-ref:field></field-checkbox>`;
14+
vm = new Vue({
15+
el: el,
16+
data: {
17+
schema,
18+
model,
19+
disabled,
20+
options
21+
}
22+
});
23+
24+
field = vm.$refs.field;
25+
//console.log(el);
26+
}
27+
28+
describe("FieldCheckbox.vue", () => {
29+
30+
describe("check template", () => {
31+
let schema = {
32+
type: "checkbox",
33+
label: "Status",
34+
model: "status",
35+
readonly: false
36+
};
37+
let model = { status: true };
38+
let input;
39+
40+
before( () => {
41+
createField(schema, model, false);
42+
input = el.getElementsByTagName("input")[0];
43+
});
44+
45+
it("should contain az input text element", () => {
46+
expect(field).to.be.exist;
47+
expect(field.$el).to.be.exist;
48+
49+
expect(input).to.be.defined;
50+
expect(input.type).to.be.equal("checkbox");
51+
expect(input.readOnly).to.be.false;
52+
expect(input.disabled).to.be.false;
53+
});
54+
55+
it("should contain the value", (done) => {
56+
vm.$nextTick( () => {
57+
expect(input.checked).to.be.true;
58+
done();
59+
});
60+
});
61+
62+
it("should set readOnly", (done) => {
63+
schema.readonly = true;
64+
vm.$nextTick( () => {
65+
expect(input.readOnly).to.be.true;
66+
done();
67+
});
68+
});
69+
70+
it("should set disabled", (done) => {
71+
field.disabled = true;
72+
vm.$nextTick( () => {
73+
expect(input.disabled).to.be.true;
74+
done();
75+
});
76+
});
77+
78+
it("input value should be the model value after changed", (done) => {
79+
model.status = false;
80+
vm.$nextTick( () => {
81+
expect(input.checked).to.be.false;
82+
done();
83+
});
84+
85+
});
86+
87+
it("model value should be the input value if changed", (done) => {
88+
input.checked = true;
89+
trigger(input, "change");
90+
91+
vm.$nextTick( () => {
92+
expect(model.status).to.be.true;
93+
done();
94+
});
95+
96+
});
97+
98+
});
99+
100+
});
+103
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
import { expect } from "chai";
2+
import { trigger } from "../util";
3+
4+
import Vue from "vue";
5+
import FieldEmail from "src/fields/fieldEmail.vue";
6+
7+
Vue.component("FieldEmail", FieldEmail);
8+
9+
let el, vm, field;
10+
11+
function createField(schema = {}, model = null, disabled = false, options) {
12+
el = document.createElement("div");
13+
el.innerHTML = `<field-email :schema.sync="schema" :model.sync="model" :disabled="disabled" v-ref:field></field-email>`;
14+
vm = new Vue({
15+
el: el,
16+
data: {
17+
schema,
18+
model,
19+
disabled,
20+
options
21+
}
22+
});
23+
24+
field = vm.$refs.field;
25+
//console.log(el);
26+
}
27+
28+
describe("fieldEmail.vue", () => {
29+
30+
describe("check template", () => {
31+
let schema = {
32+
type: "text",
33+
label: "E-mail",
34+
model: "email",
35+
readonly: false,
36+
placeholder: "Field placeholder"
37+
};
38+
let model = { email: "[email protected]" };
39+
let input;
40+
41+
before( () => {
42+
createField(schema, model, false);
43+
input = el.getElementsByTagName("input")[0];
44+
});
45+
46+
it("should contain az input email element", () => {
47+
expect(field).to.be.exist;
48+
expect(field.$el).to.be.exist;
49+
50+
expect(input).to.be.defined;
51+
expect(input.type).to.be.equal("email");
52+
expect(input.classList.contains("form-control")).to.be.true;
53+
expect(input.placeholder).to.be.equal(schema.placeholder);
54+
expect(input.readOnly).to.be.false;
55+
expect(input.disabled).to.be.false;
56+
});
57+
58+
it("should contain the value", (done) => {
59+
vm.$nextTick( () => {
60+
expect(input.value).to.be.equal("[email protected]");
61+
done();
62+
});
63+
});
64+
65+
it("should set readOnly", (done) => {
66+
schema.readonly = true;
67+
vm.$nextTick( () => {
68+
expect(input.readOnly).to.be.true;
69+
done();
70+
});
71+
});
72+
73+
it("should set disabled", (done) => {
74+
field.disabled = true;
75+
vm.$nextTick( () => {
76+
expect(input.disabled).to.be.true;
77+
done();
78+
});
79+
});
80+
81+
it("input value should be the model value after changed", (done) => {
82+
model.email = "[email protected]";
83+
vm.$nextTick( () => {
84+
expect(input.value).to.be.equal("[email protected]");
85+
done();
86+
});
87+
88+
});
89+
90+
it("model value should be the input value if changed", (done) => {
91+
input.value = "[email protected]";
92+
trigger(input, "input");
93+
94+
vm.$nextTick( () => {
95+
expect(model.email).to.be.equal("[email protected]");
96+
done();
97+
});
98+
99+
});
100+
101+
});
102+
103+
});
+107
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
import { expect } from "chai";
2+
import { trigger } from "../util";
3+
4+
import Vue from "vue";
5+
import FieldNumber from "src/fields/fieldNumber.vue";
6+
7+
Vue.component("FieldNumber", FieldNumber);
8+
9+
let el, vm, field;
10+
11+
function createField(schema = {}, model = null, disabled = false, options) {
12+
el = document.createElement("div");
13+
el.innerHTML = `<field-number :schema.sync="schema" :model.sync="model" :disabled="disabled" v-ref:field></field-number>`;
14+
vm = new Vue({
15+
el: el,
16+
data: {
17+
schema,
18+
model,
19+
disabled,
20+
options
21+
}
22+
});
23+
24+
field = vm.$refs.field;
25+
//console.log(el);
26+
}
27+
28+
describe("fieldNumber.vue", () => {
29+
30+
describe("check template", () => {
31+
let schema = {
32+
type: "number",
33+
label: "Age",
34+
model: "age",
35+
readonly: false,
36+
min: 18,
37+
max: 100,
38+
placeholder: "Field placeholder"
39+
};
40+
let model = { age: 27 };
41+
let input;
42+
43+
before( () => {
44+
createField(schema, model, false);
45+
input = el.getElementsByTagName("input")[0];
46+
});
47+
48+
it("should contain az input number element", () => {
49+
expect(field).to.be.exist;
50+
expect(field.$el).to.be.exist;
51+
52+
expect(input).to.be.defined;
53+
expect(input.type).to.be.equal("number");
54+
expect(input.classList.contains("form-control")).to.be.true;
55+
expect(input.placeholder).to.be.equal(schema.placeholder);
56+
expect(input.readOnly).to.be.false;
57+
expect(input.min).to.be.equal("18");
58+
expect(input.max).to.be.equal("100");
59+
expect(input.disabled).to.be.false;
60+
});
61+
62+
it("should contain the value", (done) => {
63+
vm.$nextTick( () => {
64+
expect(input.value).to.be.equal("27");
65+
done();
66+
});
67+
});
68+
69+
it("should set readOnly", (done) => {
70+
schema.readonly = true;
71+
vm.$nextTick( () => {
72+
expect(input.readOnly).to.be.true;
73+
done();
74+
});
75+
});
76+
77+
it("should set disabled", (done) => {
78+
field.disabled = true;
79+
vm.$nextTick( () => {
80+
expect(input.disabled).to.be.true;
81+
done();
82+
});
83+
});
84+
85+
it("input value should be the model value after changed", (done) => {
86+
model.age = 35;
87+
vm.$nextTick( () => {
88+
expect(input.value).to.be.equal("35");
89+
done();
90+
});
91+
92+
});
93+
94+
it("model value should be the input value if changed", (done) => {
95+
input.value = "50";
96+
trigger(input, "input");
97+
98+
vm.$nextTick( () => {
99+
expect(model.age).to.be.equal(50);
100+
done();
101+
});
102+
103+
});
104+
105+
});
106+
107+
});

0 commit comments

Comments
 (0)