You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
347 lines
9.9 KiB
347 lines
9.9 KiB
describe("Event Tests", function() { |
|
var testSlider, flag, mouse; |
|
|
|
beforeEach(function() { |
|
flag = false; |
|
mouse = document.createEvent('MouseEvents'); |
|
}); |
|
|
|
describe("JQuery version", function() { |
|
beforeEach(function() { |
|
testSlider = $("#testSlider2").slider({ |
|
value: 1 |
|
}); |
|
}); |
|
|
|
afterEach(function() { |
|
if(testSlider) { |
|
testSlider.slider('destroy'); |
|
testSlider = null; |
|
} |
|
}); |
|
|
|
describe("Mouse Events", function() { |
|
|
|
it("'slideStart' event is triggered properly and can be binded to", function() { |
|
testSlider.on('slideStart', function() { |
|
flag = true; |
|
}); |
|
testSlider.data('slider')._mousedown(mouse); |
|
expect(flag).toBeTruthy(); |
|
}); |
|
|
|
it("'slide' event is triggered properly and can be binded to", function() { |
|
testSlider.on('slide', function() { |
|
flag = true; |
|
}); |
|
testSlider.data('slider')._mousemove(mouse); |
|
expect(flag).toBeTruthy(); |
|
}); |
|
|
|
it("'slide' event sets the right value on the input", function() { |
|
testSlider.on('slide', function() { |
|
flag = true; |
|
expect(isNaN(testSlider.val())).not.toBeTruthy(); |
|
}); |
|
testSlider.data('slider')._mousemove(mouse); |
|
expect(flag).toBeTruthy(); |
|
}); |
|
|
|
it("'slide' event value and input value properties are synchronous", function() { |
|
testSlider.on('slide', function(e) { |
|
flag = true; |
|
expect(e.value.toString()).toEqual(this.value); |
|
}); |
|
testSlider.slider("setValue", 3, true, false); |
|
|
|
expect(flag).toBeTruthy(); |
|
}); |
|
|
|
it("'change' event value and input value properties are synchronous", function() { |
|
testSlider.on('change', function(e) { |
|
flag = true; |
|
expect(e.value.newValue.toString()).toEqual(testSlider.val()); |
|
}); |
|
testSlider.slider("setValue", 3, false, true); |
|
|
|
expect(flag).toBeTruthy(); |
|
}); |
|
|
|
it("'slideStop' event is triggered properly and can be binded to", function() { |
|
testSlider.on('slideStop', function() { |
|
flag = true; |
|
}); |
|
testSlider.data('slider')._mouseup(mouse); |
|
expect(flag).toBeTruthy(); |
|
}); |
|
|
|
it("slider should not have duplicate events after calling 'refresh'", function() { |
|
flag = 0; |
|
testSlider.on('slideStop', function() { |
|
flag += 1; |
|
}); |
|
testSlider.slider('refresh'); |
|
testSlider.data('slider')._mouseup(); |
|
expect(flag).toEqual(1); |
|
}); |
|
|
|
describe("Disabled Slider Event Tests", function() { |
|
beforeEach(function() { |
|
testSlider.slider('disable'); |
|
}); |
|
|
|
it("should not trigger 'slideStart' event when disabled", function() { |
|
testSlider.on('slideStart', function() { |
|
flag = true; |
|
}); |
|
testSlider.data('slider')._mousedown(mouse); |
|
expect(flag).not.toBeTruthy(); |
|
}); |
|
|
|
it("should not trigger 'slide' event when disabled", function() { |
|
testSlider.on('slide', function() { |
|
flag = true; |
|
}); |
|
testSlider.data('slider')._mousemove(mouse); |
|
expect(flag).not.toBeTruthy(); |
|
}); |
|
|
|
it("should not trigger 'slideStop' event when disabled", function() { |
|
testSlider.on('slideStop', function() { |
|
flag = true; |
|
}); |
|
testSlider.data('slider')._mouseup(); |
|
expect(flag).not.toBeTruthy(); |
|
}); |
|
}); |
|
|
|
}); |
|
|
|
describe("Touch Events", function() { |
|
var touch; |
|
|
|
beforeEach(function() { |
|
touch = document.createEvent('Event'); |
|
var dummyTouchEvent = document.createEvent('MouseEvents'); |
|
touch.touches = [dummyTouchEvent]; |
|
window.ontouchstart = true; |
|
}); |
|
|
|
afterEach(function() { |
|
window.ontouchstart = null; |
|
}); |
|
|
|
it("'slideStart' event is triggered properly and can be binded to", function() { |
|
touch.initEvent("touchstart"); |
|
|
|
testSlider.on('slideStart', function() { |
|
flag = true; |
|
}); |
|
testSlider.data('slider')._mousedown(touch); |
|
|
|
expect(flag).toBeTruthy(); |
|
}); |
|
|
|
it("'slide' event is triggered properly and can be binded to", function() { |
|
touch.initEvent("touchmove"); |
|
|
|
testSlider.on('slide', function() { |
|
flag = true; |
|
}); |
|
testSlider.data('slider')._mousemove(touch); |
|
|
|
expect(flag).toBeTruthy(); |
|
}); |
|
|
|
it("'slide' event sets the right value on the input", function() { |
|
touch.initEvent("touchmove"); |
|
|
|
testSlider.on('slide', function() { |
|
flag = true; |
|
expect(isNaN(testSlider.val())).not.toBeTruthy(); |
|
}); |
|
testSlider.data('slider')._mousemove(touch); |
|
|
|
expect(flag).toBeTruthy(); |
|
}); |
|
|
|
it("'slide' event value and input value properties are synchronous", function() { |
|
touch.initEvent("touchmove"); |
|
|
|
testSlider.on('slide', function(e) { |
|
flag = true; |
|
expect(e.value.toString()).toEqual(testSlider.val()); |
|
}); |
|
testSlider.slider("setValue", 3, true, false); |
|
|
|
expect(flag).toBeTruthy(); |
|
}); |
|
|
|
it("'change' event value and input value properties are synchronous", function() { |
|
touch.initEvent("touchmove"); |
|
|
|
testSlider.on('change', function(e) { |
|
flag = true; |
|
expect(e.value.newValue.toString()).toEqual(testSlider.val()); |
|
}); |
|
testSlider.slider("setValue", 3, false, true); |
|
|
|
expect(flag).toBeTruthy(); |
|
}); |
|
|
|
it("'slideStop' event is triggered properly and can be binded to", function() { |
|
touch.initEvent("touchstop"); |
|
|
|
testSlider.on('slideStop', function() { |
|
flag = true; |
|
}); |
|
testSlider.data('slider')._mouseup(); |
|
|
|
expect(flag).toBeTruthy(); |
|
}); |
|
|
|
|
|
it("slider should not have duplicate events after calling 'refresh'", function() { |
|
touch.initEvent("touchstop"); |
|
flag = 0; |
|
|
|
testSlider.on('slideStop', function() { |
|
flag += 1; |
|
}); |
|
testSlider.slider('refresh'); |
|
testSlider.data('slider')._mouseup(); |
|
|
|
expect(flag).toEqual(1); |
|
}); |
|
|
|
it("slider should not bind multiple touchstart events after calling 'refresh'", function() { |
|
touch.initEvent("touchstart", true, true); |
|
flag = 0; |
|
|
|
testSlider.on('slideStart', function() { |
|
flag += 1; |
|
}); |
|
testSlider.slider('refresh'); |
|
$('.slider .slider-handle').get(0).dispatchEvent(touch); |
|
|
|
expect(flag).toEqual(1); |
|
}); |
|
|
|
describe("Disabled Slider Event Tests", function() { |
|
beforeEach(function() { |
|
testSlider.slider('disable'); |
|
}); |
|
|
|
it("should not trigger 'slideStart' event when disabled", function() { |
|
touch.initEvent("touchstart"); |
|
|
|
testSlider.on('slideStart', function() { |
|
flag = true; |
|
}); |
|
testSlider.data('slider')._mousedown(touch); |
|
|
|
expect(flag).not.toBeTruthy(); |
|
}); |
|
|
|
it("should not trigger 'slide' event when disabled", function() { |
|
touch.initEvent("touchmove"); |
|
|
|
testSlider.on('slide', function() { |
|
flag = true; |
|
}); |
|
testSlider.data('slider')._mousemove(touch); |
|
|
|
expect(flag).not.toBeTruthy(); |
|
}); |
|
|
|
it("should not trigger 'slideStop' event when disabled", function() { |
|
touch.initEvent("touchend"); |
|
|
|
testSlider.on('slideStop', function() { |
|
flag = true; |
|
}); |
|
testSlider.data('slider')._mouseup(); |
|
|
|
expect(flag).not.toBeTruthy(); |
|
}); |
|
}); |
|
|
|
}); |
|
|
|
describe("Enabled/Disabled tests", function() { |
|
it("'slideDisabled' event is triggered properly and can be binded to", function() { |
|
testSlider.on('slideDisabled', function() { |
|
flag = true; |
|
}); |
|
testSlider.slider('disable'); |
|
expect(flag).toBeTruthy(); |
|
}); |
|
|
|
it("'slideDisabled' event is triggered properly and can be binded to", function() { |
|
testSlider.on('slideEnabled', function() { |
|
flag = true; |
|
}); |
|
testSlider.slider('disable'); |
|
testSlider.slider('enable'); |
|
expect(flag).toBeTruthy(); |
|
}); |
|
|
|
it("'change' event is triggered properly and can be binded to", function() { |
|
testSlider.on('change', function() { |
|
flag = true; |
|
}); |
|
testSlider.slider("setValue", 3, false, true); |
|
expect(flag).toBeTruthy(); |
|
}); |
|
}); |
|
|
|
}); // End of JQuery version tests |
|
|
|
describe("CommonJS version", function() { |
|
describe("Event repetition tests", function() { |
|
var testSlider, numTimesFired; |
|
|
|
beforeEach(function() { |
|
testSlider = new Slider("#testSlider2"); |
|
numTimesFired = 0; |
|
}); |
|
|
|
afterEach(function() { |
|
testSlider.destroy(); |
|
}); |
|
|
|
it("'slide' event is triggered only once per slide action", function() { |
|
testSlider.on('slide', function() { |
|
numTimesFired++; |
|
}); |
|
testSlider._mousemove(mouse); |
|
expect(numTimesFired).toEqual(1); |
|
}); |
|
|
|
it("'slideStart' event is triggered only once per slide action", function() { |
|
testSlider.on('slideStart', function() { |
|
numTimesFired++; |
|
}); |
|
testSlider._mousedown(mouse); |
|
expect(numTimesFired).toEqual(1); |
|
}); |
|
|
|
it("'slideStop' event is triggered only once per slide action", function() { |
|
testSlider.on('slideStop', function() { |
|
numTimesFired++; |
|
}); |
|
testSlider._mouseup(mouse); |
|
expect(numTimesFired).toEqual(1); |
|
}); |
|
|
|
it("'change' event is triggered only once per value change action", function() { |
|
testSlider.on('change', function() { |
|
numTimesFired++; |
|
}); |
|
testSlider.setValue(3, false, true); |
|
expect(numTimesFired).toEqual(1); |
|
}); |
|
}); |
|
}); // End of common JS tests |
|
|
|
}); // End of spec
|
|
|