Completing tests for map handlers.

This commit is contained in:
ahocevar
2012-07-12 23:48:13 +02:00
parent ba986e536d
commit f4532f1548
3 changed files with 124 additions and 10 deletions

View File

@@ -3,15 +3,71 @@ describe('ol.handler.Drag', function() {
beforeEach(function() {
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() {
var handler = new ol.handler.Drag(map, elt, {});
var handler = new ol.handler.Drag(map, {});
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();
});
});
});