Completing tests for map handlers.
This commit is contained in:
@@ -1,17 +1,47 @@
|
|||||||
describe('ol.handler.Click', function() {
|
describe('ol.handler.Click', function() {
|
||||||
var map, elt;
|
var map, elt, listener;
|
||||||
|
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
map = new ol.Map();
|
map = new ol.Map();
|
||||||
elt = goog.dom.createDom('div');
|
elt = new goog.events.EventTarget();
|
||||||
|
map.viewport_ = elt;
|
||||||
|
listener = {fn: function() {}};
|
||||||
|
spyOn(listener, 'fn');
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('create a drag handler', function() {
|
describe('creating a drag handler', function() {
|
||||||
|
|
||||||
it('returns an ol.handler.Click instance', function() {
|
it('returns an ol.handler.Click instance', function() {
|
||||||
var handler = new ol.handler.Click(map, elt, {});
|
var handler = new ol.handler.Click(map, {});
|
||||||
expect(handler).toBeA(ol.handler.Click);
|
expect(handler).toBeA(ol.handler.Click);
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('dispatching events', function() {
|
||||||
|
|
||||||
|
it('dispatches a click event which is an ol.events.MapEvent', function() {
|
||||||
|
new ol.handler.Click(map, {});
|
||||||
|
goog.events.listen(map, 'click', listener.fn);
|
||||||
|
|
||||||
|
goog.events.fireListeners(elt, 'click', false, 'foo');
|
||||||
|
var evt = listener.fn.calls[0].args[0];
|
||||||
|
expect(evt).toBeA(ol.events.MapEvent);
|
||||||
|
expect(evt.originalEvent).toBe('foo');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('ignores click events when the dragged state is set', function() {
|
||||||
|
var states = {};
|
||||||
|
new ol.handler.Click(map, states);
|
||||||
|
goog.events.listen(map, 'click', listener.fn);
|
||||||
|
|
||||||
|
goog.events.fireListeners(elt, 'click', false);
|
||||||
|
expect(listener.fn.calls.length).toBe(1);
|
||||||
|
|
||||||
|
states.dragged = true;
|
||||||
|
goog.events.fireListeners(elt, 'click', false);
|
||||||
|
expect(listener.fn.calls.length).toBe(1);
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -3,15 +3,71 @@ describe('ol.handler.Drag', function() {
|
|||||||
|
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
map = new ol.Map();
|
map = new ol.Map();
|
||||||
elt = goog.dom.createDom('div');
|
elt = new goog.events.EventTarget();
|
||||||
|
map.viewport_ = elt;
|
||||||
|
listener = {fn: function() {}};
|
||||||
|
spyOn(listener, 'fn');
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('create a drag handler', function() {
|
describe('creating a drag handler', function() {
|
||||||
|
|
||||||
it('returns an ol.handler.Drag instance', function() {
|
it('returns an ol.handler.Drag instance', function() {
|
||||||
var handler = new ol.handler.Drag(map, elt, {});
|
var handler = new ol.handler.Drag(map, {});
|
||||||
expect(handler).toBeA(ol.handler.Drag);
|
expect(handler).toBeA(ol.handler.Drag);
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('dispatching events', function() {
|
||||||
|
|
||||||
|
it('dragstart, drag and dragend events', function() {
|
||||||
|
var handler = new ol.handler.Drag(map, {});
|
||||||
|
goog.events.listen(map, 'dragstart', listener.fn);
|
||||||
|
goog.events.listen(map, 'drag', listener.fn);
|
||||||
|
goog.events.listen(map, 'dragend', listener.fn);
|
||||||
|
|
||||||
|
handler.dragger_.dispatchEvent({type: 'start'});
|
||||||
|
handler.dragger_.dispatchEvent({type: 'drag'});
|
||||||
|
handler.dragger_.dispatchEvent({type: 'end'});
|
||||||
|
|
||||||
|
expect(listener.fn.calls[0].args[0].type).toBe('dragstart');
|
||||||
|
expect(listener.fn.calls[1].args[0].type).toBe('drag');
|
||||||
|
expect(listener.fn.calls[2].args[0].type).toBe('dragend');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('sets the dragged state during a drag sequence', function() {
|
||||||
|
var states = {};
|
||||||
|
var handler = new ol.handler.Drag(map, states);
|
||||||
|
|
||||||
|
handler.dragger_.dispatchEvent({type: 'drag'});
|
||||||
|
expect(states.dragged).toBe(true);
|
||||||
|
|
||||||
|
handler.dragger_.dispatchEvent({type: 'start'});
|
||||||
|
expect(states.dragged).toBe(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('sets deltaX and deltaY on the ol.event.MapEvent', function() {
|
||||||
|
var handler = new ol.handler.Drag(map, {});
|
||||||
|
goog.events.listen(map, 'drag', listener.fn);
|
||||||
|
|
||||||
|
handler.dragger_.dispatchEvent({type: 'start', clientX: 2, clientY: 4});
|
||||||
|
handler.dragger_.dispatchEvent({type: 'drag', clientX: 1, clientY: 2});
|
||||||
|
handler.dragger_.dispatchEvent({type: 'drag', clientX: 2, clientY: 4});
|
||||||
|
|
||||||
|
expect(listener.fn.calls[0].args[0].deltaX).toBe(-1);
|
||||||
|
expect(listener.fn.calls[0].args[0].deltaY).toBe(-2);
|
||||||
|
expect(listener.fn.calls[1].args[0].deltaX).toBe(1);
|
||||||
|
expect(listener.fn.calls[1].args[0].deltaY).toBe(2);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('calls the default action on the default control', function() {
|
||||||
|
var control = new ol.control.DefaultControl();
|
||||||
|
spyOn(control, 'defaultDrag');
|
||||||
|
map.setDefaultControl(control);
|
||||||
|
var handler = new ol.handler.Drag(map, {});
|
||||||
|
|
||||||
|
handler.dragger_.dispatchEvent({type: 'drag'});
|
||||||
|
expect(control.defaultDrag).toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -3,15 +3,43 @@ describe('ol.handler.MouseWheel', function() {
|
|||||||
|
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
map = new ol.Map();
|
map = new ol.Map();
|
||||||
elt = goog.dom.createDom('div');
|
elt = new goog.events.EventTarget();
|
||||||
|
map.viewport_ = elt;
|
||||||
|
listener = {fn: function() {}};
|
||||||
|
spyOn(listener, 'fn');
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('create a mouse wheel handler', function() {
|
describe('create a mouse wheel handler', function() {
|
||||||
|
|
||||||
it('returns an ol.handler.MouseWheel instance', function() {
|
it('returns an ol.handler.MouseWheel instance', function() {
|
||||||
var handler = new ol.handler.MouseWheel(map, elt, {});
|
var handler = new ol.handler.MouseWheel(map, {});
|
||||||
expect(handler).toBeA(ol.handler.MouseWheel);
|
expect(handler).toBeA(ol.handler.MouseWheel);
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('dispatching events', function() {
|
||||||
|
|
||||||
|
it('dispatches a mousewheel event', function() {
|
||||||
|
var handler = new ol.handler.MouseWheel(map, {});
|
||||||
|
goog.events.listen(map, 'mousewheel', listener.fn);
|
||||||
|
|
||||||
|
var evt = new goog.events.MouseWheelEvent(1, 'foo', 0, 1);
|
||||||
|
handler.handleMouseWheel(evt);
|
||||||
|
|
||||||
|
expect(listener.fn.calls[0].args[0].type).toBe('mousewheel');
|
||||||
|
expect(listener.fn.calls[0].args[0].originalEvent).toBe(evt);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('calls the default action on the default control', function() {
|
||||||
|
var control = new ol.control.DefaultControl();
|
||||||
|
spyOn(control, 'defaultMouseWheel');
|
||||||
|
map.setDefaultControl(control);
|
||||||
|
var handler = new ol.handler.MouseWheel(map, {});
|
||||||
|
|
||||||
|
handler.handleMouseWheel(new goog.events.MouseWheelEvent(1, 'foo', 0, 1));
|
||||||
|
expect(control.defaultMouseWheel).toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user