Skip to content

Commit

Permalink
Fix environment preparation for gesture cover tests (#11672) (#11691)
Browse files Browse the repository at this point in the history
* Fix environment preparation for gesture cover tests

* refactor
  • Loading branch information
DokaRus committed Jan 24, 2020
1 parent c3fecdb commit 879ee50
Showing 1 changed file with 129 additions and 129 deletions.
258 changes: 129 additions & 129 deletions testing/tests/DevExpress.ui.events/eventsInteraction.tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ const dragEvents = require('events/drag');
const dblclickEvent = require('events/dblclick');
const pointerMock = require('../../helpers/pointerMock.js');

const GESTURE_COVER_CLASS = 'dx-gesture-cover';

QUnit.testStart(function() {
const markup =
'<div id="parent">\
Expand All @@ -36,7 +38,6 @@ const moduleConfig = {

GestureEmitter.touchBoundary(GestureEmitter.initialTouchBoundary);


QUnit.module('events unsubscribing', {

beforeEach: function() {
Expand Down Expand Up @@ -281,134 +282,6 @@ QUnit.test('minimum distance for gesture should be 10 pixels', function(assert)
assert.ok(scrollStarted, 'scroll started');
});

const GESTURE_COVER_CLASS = 'dx-gesture-cover';
const $gestureCover = $('.' + GESTURE_COVER_CLASS);

const gestureCoverExists = function() {
return devices.real().deviceType === 'desktop' && $gestureCover.css('pointerEvents') !== undefined;
};

QUnit.test('wheel should be prevented on gesture cover (T319068)', function(assert) {
if(!gestureCoverExists()) {
assert.expect(0);
return;
}

const event = $.Event('dxmousewheel');
$('.' + GESTURE_COVER_CLASS).trigger(event);
assert.equal(event.isDefaultPrevented(), true, 'scroll prevented');
});

QUnit.test('selection shouldn\'t be prevented in native scroll', function(assert) {
if(!gestureCoverExists()) {
assert.expect(0);
return;
}

const $element = $('#element');
const pointer = pointerMock($element);

$element.on('dxscrollstart', { isNative: true }, $.noop);

pointer.start().down().move(20);
assert.equal($gestureCover.css('pointerEvents'), 'none', 'gestureCover is disabled');
});

$.each([
['hover', 'pointer-events', 'all', true],
['cursor', 'cursor', 'move', false]
], function(_, config) {
const name = config[0];
const prop = config[1];
const propValue = config[2];
const needReset = config[3];

if(!gestureCoverExists()) {
return;
}

QUnit.test('gesture should set ' + name + ' if needed with pointer', function(assert) {
assert.expect(2);

const originalProp = $gestureCover.css(prop);
const $element = $('#element');
const pointer = pointerMock($element);

$element.on({
'dxscrollstart': function(e) {
assert.equal($gestureCover.css(prop), propValue, name + ' is disabled');
},
'dxscrollend': function() {
assert.equal($gestureCover.css(prop), needReset ? originalProp : propValue, name + ' is enabled');
}
});

pointer.start().down().move(20).up();
});

QUnit.test('gesture should set ' + name + ' if needed with mousewheel', function(assert) {
assert.expect(2);

const originalProp = $gestureCover.css(prop);
const $element = $('#element');
const pointer = pointerMock($element);

$element.on({
'dxscrollstart': function(e) {
assert.equal($gestureCover.css(prop), propValue, name + ' is disabled');
},
'dxscrollend': function() {
assert.equal($gestureCover.css(prop), needReset ? originalProp : propValue, name + ' is enabled');
}
});

pointer.start().wheel(20);
});

QUnit.test('cancel gesture should reset ' + name + ' on desktop', function(assert) {
const originalProp = $gestureCover.css(prop);
const $element = $('#element');
const pointer = pointerMock($element);

$element.on({
'dxscrollstart': function(e) {
e.cancel = true;
}
});

pointer.start().down().move(20).up();
assert.equal($gestureCover.css(prop), needReset ? originalProp : propValue, name + ' is enabled');
});

QUnit.test('dispose gesture should reset ' + name + ' if locked by current emitter', function(assert) {
const originalProp = $gestureCover.css(prop);
const $element = $('#element');
const pointer = pointerMock($element);

$element.on({
'dxscrollstart.TEST': noop
});

pointer.start().down().move(20);
$element.off('.TEST');
assert.equal($gestureCover.css(prop), needReset ? originalProp : propValue, name + ' is enabled');
});

QUnit.test('dispose gesture should not reset ' + name + ' if locked by another emitter', function(assert) {
const $child = $('#child');
const $parent = $('#parent');
const pointer = pointerMock($child);

$child.on('dxscrollstart', noop);
$parent.on('dxscrollstart.TEST', noop);

pointer.start().down().move(20);
const assignedProp = $gestureCover.css(prop);
$parent.off('.TEST');
assert.equal($gestureCover.css(prop), assignedProp, name + ' is enabled');
});
});

QUnit.test('gesture should be canceled if event should be skipped', function(assert) {
assert.expect(1);

Expand Down Expand Up @@ -1131,3 +1004,130 @@ QUnit.test('active emitter should not be reset if inactive emitter was unsubscri

pointer.up();
});

QUnit.module('gesture cover', {
before: function() {
const $element = $('#element');
const pointer = pointerMock($element);

$element.on('dxscrollstart', noop);
pointer.start().down().move(20).up();
$element.off('dxscrollstart');
}
}, function() {
const getGestureCover = () => $(`.${GESTURE_COVER_CLASS}`);

if(devices.real().deviceType === 'desktop') {
QUnit.test('wheel should be prevented on gesture cover (T319068)', function(assert) {
const event = $.Event('dxmousewheel');
getGestureCover().trigger(event);
assert.equal(event.isDefaultPrevented(), true, 'scroll prevented');
});

QUnit.test('selection shouldn\'t be prevented in native scroll', function(assert) {
const $element = $('#element');
const pointer = pointerMock($element);

$element.on('dxscrollstart', { isNative: true }, noop);

pointer.start().down().move(20);
assert.equal(getGestureCover().css('pointerEvents'), 'none', 'gestureCover is disabled');
});

$.each([
['hover', 'pointer-events', 'all', true],
['cursor', 'cursor', 'move', false]
], function(_, config) {
const name = config[0];
const prop = config[1];
const propValue = config[2];
const needReset = config[3];

QUnit.test('gesture should set ' + name + ' if needed with pointer', function(assert) {
assert.expect(2);

const $gestureCover = getGestureCover();
const originalProp = $gestureCover.css(prop);
const $element = $('#element');
const pointer = pointerMock($element);

$element.on({
'dxscrollstart': function(e) {
assert.equal($gestureCover.css(prop), propValue, name + ' is disabled');
},
'dxscrollend': function() {
assert.equal($gestureCover.css(prop), needReset ? originalProp : propValue, name + ' is enabled');
}
});

pointer.start().down().move(20).up();
});

QUnit.test('gesture should set ' + name + ' if needed with mousewheel', function(assert) {
assert.expect(2);

const $gestureCover = getGestureCover();
const originalProp = $gestureCover.css(prop);
const $element = $('#element');
const pointer = pointerMock($element);

$element.on({
'dxscrollstart': function(e) {
assert.equal($gestureCover.css(prop), propValue, name + ' is disabled');
},
'dxscrollend': function() {
assert.equal($gestureCover.css(prop), needReset ? originalProp : propValue, name + ' is enabled');
}
});

pointer.start().wheel(20);
});

QUnit.test('cancel gesture should reset ' + name + ' on desktop', function(assert) {
const $gestureCover = getGestureCover();
const originalProp = $gestureCover.css(prop);
const $element = $('#element');
const pointer = pointerMock($element);

$element.on({
'dxscrollstart': function(e) {
e.cancel = true;
}
});

pointer.start().down().move(20).up();
assert.equal($gestureCover.css(prop), needReset ? originalProp : propValue, name + ' is enabled');
});

QUnit.test('dispose gesture should reset ' + name + ' if locked by current emitter', function(assert) {
const $gestureCover = getGestureCover();
const originalProp = $gestureCover.css(prop);
const $element = $('#element');
const pointer = pointerMock($element);

$element.on({
'dxscrollstart.TEST': noop
});

pointer.start().down().move(20);
$element.off('.TEST');
assert.equal($gestureCover.css(prop), needReset ? originalProp : propValue, name + ' is enabled');
});

QUnit.test('dispose gesture should not reset ' + name + ' if locked by another emitter', function(assert) {
const $gestureCover = getGestureCover();
const $child = $('#child');
const $parent = $('#parent');
const pointer = pointerMock($child);

$child.on('dxscrollstart', noop);
$parent.on('dxscrollstart.TEST', noop);

pointer.start().down().move(20);
const assignedProp = $gestureCover.css(prop);
$parent.off('.TEST');
assert.equal($gestureCover.css(prop), assignedProp, name + ' is enabled');
});
});
}
});

0 comments on commit 879ee50

Please sign in to comment.