Skip to content

Commit 7bfffb1

Browse files
committed
🐛 test: Fix noUiSlider test #46
1 parent 750afd4 commit 7bfffb1

File tree

5 files changed

+31
-38
lines changed

5 files changed

+31
-38
lines changed

dev/schema.js

+1
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,7 @@ module.exports = {
397397
min: 1,
398398
max: 10,
399399
required: true,
400+
disabled: false,
400401
sliderOptions: {
401402
// connect: "lower", // "lower", "upper", true, false
402403
// margin: 2 //number

dev/utils.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ module.exports = {
1818
} else if (/null/.test(match)) {
1919
cls = "null";
2020
}
21-
return "<span class=" + cls + ">" + match + "</span>";
21+
return "<span class='" + cls + "'>" + match + "</span>";
2222
});
2323
}
2424
}

src/fields/fieldNoUiSlider.vue

+7-8
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
<script>
66
import abstractField from "./abstractField";
7-
import { defaults } from "lodash";
7+
import { isArray, defaults } from "lodash";
88
99
export default {
1010
mixins: [abstractField],
@@ -17,21 +17,20 @@ export default {
1717
1818
watch: {
1919
model: function() {
20-
if (window.noUiSlider) {
20+
if (window.noUiSlider && this.slider && this.slider.noUiSlider) {
2121
this.slider.noUiSlider.set(this.value);
2222
}
2323
}
2424
},
2525
2626
methods: {
2727
onChange(value) {
28-
console.log(value);
29-
if (value.length === 1) {
30-
// Single value
31-
this.value = parseFloat(value[0]);
32-
} else {
28+
if (isArray(value)) {
3329
// Array (range)
3430
this.value = [parseFloat(value[0]), parseFloat(value[1])];
31+
} else {
32+
// Single value
33+
this.value = parseFloat(value);
3534
}
3635
}
3736
},
@@ -40,7 +39,7 @@ export default {
4039
if (window.noUiSlider) {
4140
this.slider = this.$el;
4241
window.noUiSlider.create(this.slider, defaults(this.schema.sliderOptions || {}, {
43-
start: this.schema.min,
42+
start: this.value != null ? this.value : this.schema.min,
4443
range: {
4544
"min": this.schema.min,
4645
"max": this.schema.max

src/fields/fieldSlider.vue

+7-4
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,13 @@
1919
} else
2020
valueFrom = this.value;
2121
22-
$(this.$el).data("ionRangeSlider").update({
23-
from: valueFrom,
24-
to: valueTo
25-
});
22+
let ionRangeSlider = $(this.$el).data("ionRangeSlider");
23+
if (ionRangeSlider) {
24+
ionRangeSlider.update({
25+
from: valueFrom,
26+
to: valueTo
27+
});
28+
}
2629
}
2730
}
2831
},

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

+15-25
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ describe("fieldNoUiSlider.vue", () => {
4949
vm.$nextTick( () => {
5050
let handle = input.querySelector(".noUi-handle");
5151
expect(handle).to.be.defined;
52-
// expect(input.classList.contains("noui-target")).to.be.true;
52+
expect(input.classList.contains("noUi-target")).to.be.true;
5353
done();
5454
});
5555
} else {
@@ -58,47 +58,37 @@ describe("fieldNoUiSlider.vue", () => {
5858
}
5959
});
6060

61-
it.skip("should contain the value", (done) => {
61+
it("should contain the value", (done) => {
6262
vm.$nextTick( () => {
6363
let origin = input.querySelector(".noUi-origin");
6464
expect(origin.style.left).to.be.within("70%", "90%");
6565
done();
6666
});
6767
});
6868

69-
before( () => {
70-
vm.model = { rating: 10 };
71-
});
72-
7369
it("handle value should be the model value after changed", (done) => {
74-
vm.$nextTick( () => {
70+
field.model = { rating: 10 };
71+
setTimeout( () => {
7572
let origin = input.querySelector(".noUi-origin");
7673
expect(origin.style.left).to.be.equal("100%");
7774
done();
78-
});
75+
}, 100);
7976
});
8077

81-
// before( (done) => {
82-
// input.querySelectorAll(".noUi-origin")[0].style.left = "0%";
83-
// vm.$nextTick( () => {
84-
// done();
85-
// });
86-
// });
87-
88-
it.skip("model value should be the handle value after changed", (done) => {
89-
vm.$nextTick( () => {
90-
expect(vm.model.rating).to.be.equal("0");
78+
it("model value should be the handle value after changed", (done) => {
79+
// `field.slider.noUiSlider.set(3);` - It doesn't fired the onChange event
80+
field.onChange(3);
81+
setTimeout( () => {
82+
expect(vm.model.rating).to.be.equal(3);
9183
done();
92-
});
84+
}, 100);
9385
});
9486

95-
it.skip("should set disabled", (done) => {
96-
console.log(field.disabled);
97-
console.log(input);
98-
vm.schema.disabled = true;
87+
it("should set disabled", (done) => {
88+
field.disabled = true;
9989
vm.$nextTick( () => {
100-
console.log(input);
101-
expect(input.disabled).to.be.true;
90+
// This is not real input, it is a div. So we can check the disabled attribute
91+
expect(input.hasAttribute("disabled")).to.be.true;
10292
done();
10393
});
10494
});

0 commit comments

Comments
 (0)