$(function () { 'use strict' /* global QUnit */ /* global viewport */ /* global $ */ QUnit.module('tab scrolling/swiping') QUnit.module('aceTab', { afterEach: function () { $('#qunit-fixture').html('') } }) QUnit.test('should scroll tab buttons', function (assert) { assert.expect(1) var done = assert.async() viewport.set(320, 480) var tabs = $(``).appendTo('#qunit-fixture') tabs.aceTabScroll() tabs.find('a').get(3).click() setTimeout(function () { assert.ok(tabs.get(0).scrollLeft > 0) done() viewport.reset() }, 500) }) QUnit.test('should swipe tab', function (assert) { assert.expect(2) var done = assert.async() viewport.set(320, 480) var tabContent = $('
').appendTo('#qunit-fixture') tabContent.aceTabSwipe() var tabPane = tabContent.find('.tab-pane.active').get(0) var e1 = document.createEvent('UIEvent') e1.initUIEvent('touchstart') e1.changedTouches = [{ pageX: 150, pageY: 10 }] // trigger for tabContent but set target to be tabPane Object.defineProperty(e1, 'target', { writable: false, value: tabPane }) tabContent.get(0).dispatchEvent(e1) setTimeout(function () { var e2 = document.createEvent('UIEvent') e2.initUIEvent('touchmove') e2.changedTouches = [{ pageX: 10, pageY: 10 }] tabPane.dispatchEvent(e2) var e3 = document.createEvent('UIEvent') e3.initUIEvent('touchend') e3.changedTouches = [{ pageX: 10, pageY: 10 }] tabPane.dispatchEvent(e3) assert.notOk(tabPane.matches('.show.active'), '') assert.ok(tabPane.nextElementSibling.matches('.show.active'), '') viewport.reset() done() }, 0) }) QUnit.test('should swipe tabs only in specified direction (right)', function (assert) { assert.expect(4) var done = assert.async() viewport.set(320, 480) var tabContent = $(`
`).appendTo('#qunit-fixture') tabContent.aceTabSwipe() var tabPane = tabContent.find('.tab-pane.active').get(0) var e1 = document.createEvent('UIEvent') e1.initUIEvent('touchstart') e1.changedTouches = [{ pageX: 150, pageY: 10 }] // trigger for tabContent but set target to be tabPane Object.defineProperty(e1, 'target', { writable: false, value: tabPane }) tabContent.get(0).dispatchEvent(e1) setTimeout(function () { var e2 = document.createEvent('UIEvent') e2.initUIEvent('touchmove') e2.changedTouches = [{ pageX: 10, pageY: 10 }] tabPane.dispatchEvent(e2) var e3 = document.createEvent('UIEvent') e3.initUIEvent('touchend') e3.changedTouches = [{ pageX: 10, pageY: 10 }] tabPane.dispatchEvent(e3) assert.ok(tabPane.matches('.show.active'), 'active pane has not changed') assert.notOk(tabPane.nextElementSibling.matches('.show.active'), 'active page has not changed') var e11 = document.createEvent('UIEvent') e11.initUIEvent('touchstart') e11.changedTouches = [{ pageX: 10, pageY: 10 }] // trigger for tabContent but set target to be tabPane Object.defineProperty(e11, 'target', { writable: false, value: tabPane }) tabContent.get(0).dispatchEvent(e11) setTimeout(function () { var e22 = document.createEvent('UIEvent') e22.initUIEvent('touchmove') e22.changedTouches = [{ pageX: 150, pageY: 10 }] tabPane.dispatchEvent(e22) var e33 = document.createEvent('UIEvent') e33.initUIEvent('touchend') e33.changedTouches = [{ pageX: 150, pageY: 10 }] tabPane.dispatchEvent(e33) assert.notOk(tabPane.matches('.show.active'), 'active pane has changed') assert.ok(tabPane.previousElementSibling.matches('.show.active'), 'active page has changed') viewport.reset() done() }, 0) }, 0) }) QUnit.test('should swipe next to specified target', function (assert) { assert.expect(3) var done = assert.async() viewport.set(320, 480) var tabContent = $(`
`).appendTo('#qunit-fixture') tabContent.aceTabSwipe() var tabPane = tabContent.find('.tab-pane.active').get(0) var e1 = document.createEvent('UIEvent') e1.initUIEvent('touchstart') e1.changedTouches = [{ pageX: 150, pageY: 10 }] // trigger for tabContent but set target to be tabPane Object.defineProperty(e1, 'target', { writable: false, value: tabPane }) tabContent.get(0).dispatchEvent(e1) setTimeout(function () { var e2 = document.createEvent('UIEvent') e2.initUIEvent('touchmove') e2.changedTouches = [{ pageX: 10, pageY: 10 }] tabPane.dispatchEvent(e2) var e3 = document.createEvent('UIEvent') e3.initUIEvent('touchend') e3.changedTouches = [{ pageX: 10, pageY: 10 }] tabPane.dispatchEvent(e3) assert.notOk(document.getElementById('tab-1').matches('.show.active'), '') assert.notOk(document.getElementById('tab-2').matches('.show.active'), '') assert.ok(document.getElementById('tab-3').matches('.show.active'), '') viewport.reset() done() }, 0) }) QUnit.test('should swipe prev to specified target', function (assert) { assert.expect(3) var done = assert.async() viewport.set(320, 480) var tabContent = $(`
`).appendTo('#qunit-fixture') tabContent.aceTabSwipe() var tabPane = tabContent.find('.tab-pane.active').get(0) var e1 = document.createEvent('UIEvent') e1.initUIEvent('touchstart') e1.changedTouches = [{ pageX: 10, pageY: 10 }] // trigger for tabContent but set target to be tabPane Object.defineProperty(e1, 'target', { writable: false, value: tabPane }) tabContent.get(0).dispatchEvent(e1) setTimeout(function () { var e2 = document.createEvent('UIEvent') e2.initUIEvent('touchmove') e2.changedTouches = [{ pageX: 150, pageY: 10 }] tabPane.dispatchEvent(e2) var e3 = document.createEvent('UIEvent') e3.initUIEvent('touchend') e3.changedTouches = [{ pageX: 150, pageY: 10 }] tabPane.dispatchEvent(e3) assert.notOk(document.getElementById('tab-3').matches('.show.active'), '') assert.notOk(document.getElementById('tab-2').matches('.show.active'), '') assert.ok(document.getElementById('tab-1').matches('.show.active'), '') viewport.reset() done() }, 0) }) })