Use array in L.Control.Layers to preserve layer order fixes #2086

This commit is contained in:
Jan Pieter Waagmeester
2016-04-02 20:48:31 +02:00
committed by Per Liedman
parent e083d41ff7
commit 0bed05d537
3 changed files with 99 additions and 11 deletions

View File

@ -4,6 +4,9 @@ describe("Control.Layers", function () {
beforeEach(function () {
map = L.map(document.createElement('div'));
});
afterEach(function () {
map.remove();
});
describe("baselayerchange event", function () {
beforeEach(function () {
@ -43,7 +46,7 @@ describe("Control.Layers", function () {
map.setView([0, 0], 14);
});
it("when an included layer is addded or removed", function () {
it("when an included layer is added or removed from the map", function () {
var baseLayer = L.tileLayer(),
overlay = L.marker([0, 0]),
layers = L.control.layers({"Base": baseLayer}, {"Overlay": overlay}).addTo(map);
@ -57,6 +60,23 @@ describe("Control.Layers", function () {
expect(spy.callCount).to.eql(2);
});
it("when an included layer is added or removed from the map, it's (un)checked", function () {
document.body.appendChild(map._container);
var baseLayer = L.tileLayer(),
overlay = L.marker([0, 0]),
layers = L.control.layers({"Baselayer": baseLayer}, {"Overlay": overlay}).addTo(map);
function isChecked() {
return !!(map._container.querySelector('.leaflet-control-layers-overlays input').checked);
}
expect(isChecked()).to.not.be.ok();
map.addLayer(overlay);
expect(isChecked()).to.be.ok();
map.removeLayer(overlay);
expect(isChecked()).to.not.be.ok();
});
it("not when a non-included layer is added or removed", function () {
var baseLayer = L.tileLayer(),
overlay = L.marker([0, 0]),
@ -69,6 +89,17 @@ describe("Control.Layers", function () {
expect(spy.called).to.not.be.ok();
});
it("updates when an included layer is removed from the control", function () {
document.body.appendChild(map._container);
var baseLayer = L.tileLayer(),
overlay = L.marker([0, 0]),
layers = L.control.layers({"Base": baseLayer}, {"Overlay": overlay}).addTo(map);
layers.removeLayer(overlay);
expect(map._container.querySelector('.leaflet-control-layers-overlays').children.length)
.to.be.equal(0);
});
});
describe("is removed cleanly", function () {
@ -84,7 +115,6 @@ describe("Control.Layers", function () {
expect(function () {
map.removeLayer(baseLayer);
}).to.not.throwException();
});
});