123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247 |
- /*
- *************************
- Tick Marks Tests
- *************************
- Verify that the number of tick marks matches what you set
- Verify the tick marks are at the correct intervals
- */
- describe("Slider with ticks tests", function() {
- var testSlider;
- it("Should have the number of tick marks you specify", function() {
- testSlider = $("#testSlider1").slider({
- ticks: [100, 200, 300, 400, 500]
- });
- var numTicks = $("#testSlider1").siblings('div.slider').find('.slider-tick').length;
- expect(numTicks).toBe(5);
- });
- it("Should be at the default positions", function() {
- testSlider = $("#testSlider1").slider({
- ticks: [100, 200, 300, 400, 500]
- });
- $("#testSlider1").siblings('div.slider').find('.slider-tick').each(function(i) {
- expect(this.style.left).toBe(100 * i / 4.0 + '%');
- });
- });
- it("Should be at the positions you specify", function() {
- var tickPositions = [0, 10, 20, 30, 100];
- testSlider = $("#testSlider1").slider({
- ticks: [100, 200, 300, 400, 500],
- ticks_positions: tickPositions
- });
- $("#testSlider1").siblings('div.slider').find('.slider-tick').each(function(i) {
- expect(this.style.left).toBe(tickPositions[i] + '%');
- });
- });
- it("Should have the tick labels you specify", function() {
- var tickLabels = ['$0', '$100', '$200', '$300', '$400'];
- testSlider = $("#testSlider1").slider({
- ticks: [100, 200, 300, 400, 500],
- ticks_labels: tickLabels
- });
- var tickLabelElements = $("#testSlider1").siblings('div.slider').find('.slider-tick-label');
- expect(tickLabelElements.length).toBe(tickLabels.length);
- tickLabelElements.each(function(i) {
- expect(this.innerHTML).toBe(tickLabels[i]);
- });
- });
- it("Should not snap to a tick within tick bounds when using the keyboard navigation", function() {
- testSlider = $("#testSlider1").slider({
- ticks: [100, 200, 300, 400, 500],
- ticks_snap_bounds: 30
- });
- // Focus on handle1
- var handle1 = $("#testSlider1").prev('div.slider').find('.slider-handle');
- handle1.focus();
- // Create keyboard event
- var keyboardEvent = document.createEvent("Events");
- keyboardEvent.initEvent("keydown", true, true);
- var keyPresses = 0;
- handle1.on("keydown", function() {
- keyPresses++;
- var value = $("#testSlider1").slider('getValue');
- expect(value).toBe(100 + keyPresses);
- });
- keyboardEvent.keyCode = keyboardEvent.which = 39; // RIGHT
- for (var i = 0; i < 5; i++) {
- handle1[0].dispatchEvent(keyboardEvent);
- }
- });
- it("Should show the correct tick marks as 'in-selection', according to the `selection` property", function() {
- var options = {
- ticks: [100, 200, 300, 400, 500],
- value: 250,
- selection: 'after'
- },
- $el = $("#testSlider1");
- testSlider = $el.slider(options);
- expect($el.siblings('div.slider').find('.in-selection').length).toBe(3);
- testSlider.slider('destroy');
- options.selection = 'before';
- testSlider = $el.slider(options);
- expect($el.siblings('div.slider').find('.in-selection').length).toBe(2);
- });
- it("Should reverse the tick labels if `reversed` option is set to true", function() {
- var ticks = [100, 200, 300, 400, 500];
- var ticksLabels = ["$100", "$200", "$300", "$400", "$500"];
- // Create reversed slider
- testSlider = $("#testSlider1").slider({
- id: "testSlider1Ref",
- ticks: ticks,
- ticks_labels: ticksLabels,
- ticks_snap_bounds: 30,
- reversed: true
- });
- // Assert that tick marks are reversed
- var tickLabelsFromDOM = $("#testSlider1Ref .slider-tick-label-container")
- .children(".slider-tick-label")
- .map(function() { return $(this).text(); })
- .toArray();
- var reversedTickLabels = ticksLabels.reverse();
- expect(tickLabelsFromDOM).toEqual(reversedTickLabels);
- });
- it("Should reverse the tick labels if `reversed` option is set to true and `ticks_positions` is specified", function() {
- var ticks = [0, 100, 200, 300, 400];
- var ticksLabels = ["$0", "$100", "$200", "$300", "$400"];
- // Create reversed slider
- testSlider = $("#testSlider1").slider({
- id: "testSlider1Ref",
- ticks: ticks,
- ticks_labels: ticksLabels,
- ticks_positions: [0, 30, 70, 90, 100],
- ticks_snap_bounds: 20,
- value: 200,
- reversed: true
- });
- // Assert that tick marks are reversed
- var tickLabelsFromDOM = $("#testSlider1Ref .slider-tick-label-container .slider-tick-label")
- .sort(function(tickLabelElemA, tickLabelElemB) {
- var leftOffsetA = $(tickLabelElemA).position().left;
- var leftOffsetB = $(tickLabelElemB).position().left;
-
- return leftOffsetA - leftOffsetB;
- })
- .map(function() { return $(this).text(); })
- .toArray();
- var reversedTickLabels = ticksLabels.reverse();
- expect(tickLabelsFromDOM).toEqual(reversedTickLabels);
- });
- it("should wrap all of the ticks within a div with classname '.slider-tick-container'", function() {
- // Create the slider with ticks
- var ticks = [0, 100, 200, 300, 400, 600];
- var $sliderDOMRef = $("#testSlider1");
- // Create reversed slider
- testSlider = $sliderDOMRef.slider({
- id: "testSlider1Ref",
- ticks: ticks,
- ticks_positions: [0, 30, 70, 90, 100, 130]
- });
-
- // Assert that the ticks are children of the container element
- var numTicks = $sliderDOMRef.siblings('div.slider').find('.slider-tick-container > .slider-tick').length;
- expect(numTicks).toBe(ticks.length);
- });
- afterEach(function() {
- if(testSlider) {
- testSlider.slider('destroy');
- testSlider = null;
- }
- });
- });
- describe("Slider min/max settings", function() {
- var $inputSlider;
- afterEach(function() {
- if ($inputSlider) {
- if ($inputSlider instanceof jQuery) {
- $inputSlider.slider('destroy');
- }
- $inputSlider = null;
- }
- });
- it("Should use min/max tick values for min/max settings", function() {
- $inputSlider = $('#testSlider1').slider({
- ticks: [1, 2, 3]
- });
- expect($inputSlider.slider('getAttribute', 'min')).toBe(1);
- expect($inputSlider.slider('getAttribute', 'max')).toBe(3);
- });
- it("Should not overwrite 'min' setting", function() {
- $inputSlider = $('#testSlider1').slider({
- min: 0,
- ticks: [1, 2, 3]
- });
- expect($inputSlider.slider('getAttribute', 'min')).toBe(0);
- expect($inputSlider.slider('getAttribute', 'max')).toBe(3);
- });
- it("Should not overwrite 'max' setting", function() {
- $inputSlider = $('#testSlider1').slider({
- max: 5,
- ticks: [1, 2, 3]
- });
- expect($inputSlider.slider('getAttribute', 'min')).toBe(1);
- expect($inputSlider.slider('getAttribute', 'max')).toBe(5);
- });
- it("Should not overwrite 'min' or max' settings", function() {
- $inputSlider = $('#testSlider1').slider({
- min: 0,
- max: 5,
- ticks: [1, 2, 3]
- });
- expect($inputSlider.slider('getAttribute', 'min')).toBe(0);
- expect($inputSlider.slider('getAttribute', 'max')).toBe(5);
- });
- it("Should ignore the ticks when outside of min/max range", function() {
- $inputSlider = $("#testSlider1").slider({
- ticks: [100, 200, 300, 400, 500],
- min: 15000,
- max: 25000
- });
- expect($inputSlider.slider('getAttribute', 'min')).toBe(15000);
- expect($inputSlider.slider('getAttribute', 'max')).toBe(25000);
- });
- });
|