Listen for property changes in layer group

This avoids a future bug when the ol.ObjectEventType.CHANGE value becomes something different than the goog.events.EventType.CHANGE value.
This commit is contained in:
Tim Schaub
2013-12-11 12:23:05 -07:00
parent 1783776976
commit 17e91feb52
2 changed files with 46 additions and 6 deletions

View File

@@ -63,7 +63,7 @@ describe('ol.layer.Group', function() {
});
describe('change event', function() {
describe('generic change event', function() {
var layer, group, listener;
beforeEach(function() {
@@ -84,14 +84,14 @@ describe('ol.layer.Group', function() {
});
it('is dispatched by the group when layer opacity changes', function() {
group.on(ol.ObjectEventType.CHANGE, listener);
group.on(goog.events.EventType.CHANGE, listener);
layer.setOpacity(0.5);
expect(listener.calledOnce).to.be(true);
});
it('is dispatched by the group when layer visibility changes', function() {
group.on(ol.ObjectEventType.CHANGE, listener);
group.on(goog.events.EventType.CHANGE, listener);
layer.setVisible(false);
expect(listener.callCount).to.be(1);
@@ -102,6 +102,45 @@ describe('ol.layer.Group', function() {
});
describe('property change event', function() {
var layer, group, listener;
beforeEach(function() {
layer = new ol.layer.Layer({
source: new ol.source.Source({
projection: 'EPSG:4326'
})
});
group = new ol.layer.Group({
layers: [layer]
});
listener = sinon.spy();
});
afterEach(function() {
goog.dispose(group);
goog.dispose(layer);
});
it('is dispatched by the group when group opacity changes', function() {
group.on(ol.ObjectEventType.CHANGE, listener);
group.setOpacity(0.5);
expect(listener.calledOnce).to.be(true);
});
it('is dispatched by the group when group visibility changes', function() {
group.on(ol.ObjectEventType.CHANGE, listener);
group.setVisible(false);
expect(listener.callCount).to.be(1);
group.setVisible(true);
expect(listener.callCount).to.be(2);
});
});
describe('constructor (options)', function() {
it('accepts options', function() {
@@ -352,6 +391,7 @@ describe('ol.layer.Group', function() {
});
goog.require('goog.dispose');
goog.require('goog.events.EventType');
goog.require('ol.ObjectEventType');
goog.require('ol.layer.Layer');
goog.require('ol.layer.Group');