Keep track of when a layer is unrendered
This commit is contained in:
@@ -4,6 +4,9 @@ import Map from '../../../../../src/ol/Map.js';
|
||||
import Property from '../../../../../src/ol/layer/Property.js';
|
||||
import RenderEvent from '../../../../../src/ol/render/Event.js';
|
||||
import Source from '../../../../../src/ol/source/Source.js';
|
||||
import TileLayer from '../../../../../src/ol/layer/Tile.js';
|
||||
import View from '../../../../../src/ol/View.js';
|
||||
import XYZ from '../../../../../src/ol/source/XYZ.js';
|
||||
import {get as getProjection} from '../../../../../src/ol/proj.js';
|
||||
|
||||
describe('ol/layer/Layer', function () {
|
||||
@@ -619,6 +622,77 @@ describe('ol/layer/Layer', function () {
|
||||
});
|
||||
});
|
||||
|
||||
describe('unrender()', () => {
|
||||
/** @type {Map} */
|
||||
let map;
|
||||
|
||||
/** @type {TileLayer} */
|
||||
let layer;
|
||||
|
||||
/** HTMLDivElement */
|
||||
let target;
|
||||
|
||||
beforeEach((done) => {
|
||||
target = document.createElement('div');
|
||||
target.style.width = '100px';
|
||||
target.style.height = '100px';
|
||||
document.body.appendChild(target);
|
||||
|
||||
layer = new TileLayer({
|
||||
source: new XYZ({
|
||||
url: 'spec/ol/data/osm-0-0-0.png',
|
||||
}),
|
||||
});
|
||||
|
||||
map = new Map({
|
||||
target: target,
|
||||
layers: [layer],
|
||||
view: new View({
|
||||
center: [0, 0],
|
||||
zoom: 0,
|
||||
}),
|
||||
});
|
||||
|
||||
map.once('rendercomplete', () => done());
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
map.setTarget(null);
|
||||
document.body.removeChild(target);
|
||||
});
|
||||
|
||||
it('is called when a layer goes from visible to not visible', () => {
|
||||
const spy = sinon.spy(layer, 'unrender');
|
||||
map.renderSync();
|
||||
expect(spy.callCount).to.be(0);
|
||||
|
||||
layer.setVisible(false);
|
||||
map.renderSync();
|
||||
expect(spy.callCount).to.be(1);
|
||||
});
|
||||
|
||||
it('is called when a layer is removed from the map', () => {
|
||||
const spy = sinon.spy(layer, 'unrender');
|
||||
map.renderSync();
|
||||
expect(spy.callCount).to.be(0);
|
||||
|
||||
map.removeLayer(layer);
|
||||
map.renderSync();
|
||||
expect(spy.callCount).to.be(1);
|
||||
});
|
||||
|
||||
it('is called when a layer goes out of range', () => {
|
||||
const spy = sinon.spy(layer, 'unrender');
|
||||
map.renderSync();
|
||||
expect(spy.callCount).to.be(0);
|
||||
|
||||
layer.setMaxZoom(3);
|
||||
map.getView().setZoom(4);
|
||||
map.renderSync();
|
||||
expect(spy.callCount).to.be(1);
|
||||
});
|
||||
});
|
||||
|
||||
describe('map property', () => {
|
||||
it('is set when a layer is added to a map', () => {
|
||||
const map = new Map({});
|
||||
|
||||
Reference in New Issue
Block a user