* Fix L.Evented.listens() on removed event handlers, #4474 * Fix bad unit tests for marker events * Only check for listerners.length if listerners is actually defined
This commit is contained in:
parent
2652b63f42
commit
8cb745ce0a
@ -424,4 +424,42 @@ describe('Events', function () {
|
||||
expect(spy2.callCount).to.be(2);
|
||||
});
|
||||
});
|
||||
|
||||
describe('#listens', function () {
|
||||
it('is false if there is no event handler', function () {
|
||||
var obj = new L.Evented(),
|
||||
spy = sinon.spy();
|
||||
|
||||
expect(obj.listens('test')).to.be(false);
|
||||
});
|
||||
|
||||
it('is true if there is an event handler', function () {
|
||||
var obj = new L.Evented(),
|
||||
spy = sinon.spy();
|
||||
|
||||
obj.on('test', spy);
|
||||
expect(obj.listens('test')).to.be(true);
|
||||
});
|
||||
|
||||
it('is false if event handler has been removed', function () {
|
||||
var obj = new L.Evented(),
|
||||
spy = sinon.spy();
|
||||
|
||||
obj.on('test', spy);
|
||||
obj.off('test', spy);
|
||||
expect(obj.listens('test')).to.be(false);
|
||||
});
|
||||
|
||||
it('changes for a "once" handler', function () {
|
||||
var obj = new L.Evented(),
|
||||
spy = sinon.spy();
|
||||
|
||||
obj.once('test', spy);
|
||||
expect(obj.listens('test')).to.be(true);
|
||||
|
||||
obj.fire('test');
|
||||
expect(obj.listens('test')).to.be(false);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
@ -287,17 +287,19 @@ describe("Marker", function () {
|
||||
expect(mapSpy.called).not.to.be.ok();
|
||||
});
|
||||
|
||||
it("do not catch event if it does not listen to it", function () {
|
||||
it("do not catch event if it does not listen to it", function (done) {
|
||||
var marker = new L.Marker([55, 37]);
|
||||
map.addLayer(marker);
|
||||
marker.once('mousemove', function (e) {
|
||||
// It should be the marker coordinates
|
||||
expect(e.latlng).to.be.nearLatLng(marker.getLatLng());
|
||||
expect(e.latlng.equals(marker.getLatLng())).to.be.equal(true);
|
||||
});
|
||||
happen.mousemove(marker._icon);
|
||||
|
||||
map.once('mousemove', function (e) {
|
||||
// It should be the mouse coordinates, not the marker ones
|
||||
expect(e.latlng).not.to.be.nearLatLng(marker.getLatLng());
|
||||
expect(e.latlng.equals(marker.getLatLng())).to.be.equal(false);
|
||||
done();
|
||||
});
|
||||
happen.mousemove(marker._icon);
|
||||
});
|
||||
|
@ -169,6 +169,9 @@ L.Evented = L.Class.extend({
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (listeners.length === 0) {
|
||||
delete events[type];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user