diff --git a/spec/index.html b/spec/index.html index 8d3544db3..1d378b6d1 100644 --- a/spec/index.html +++ b/spec/index.html @@ -34,6 +34,8 @@ + + diff --git a/spec/suites/RemoveLayerSpec.js b/spec/suites/RemoveLayerSpec.js new file mode 100644 index 000000000..a3d8d88d5 --- /dev/null +++ b/spec/suites/RemoveLayerSpec.js @@ -0,0 +1,101 @@ +describe('removeLayer', function () { + var map, div; + beforeEach(function () { + div = document.createElement('div'); + div.style.width = '200px'; + div.style.height = '200px'; + document.body.appendChild(div); + + map = L.map(div, { maxZoom: 18 }); + + map.fitBounds(new L.LatLngBounds([ + [1, 1], + [2, 2] + ])); + }); + afterEach(function () { + document.body.removeChild(div); + }); + + it('removes a layer that was added to it', function () { + + var group = new L.MarkerClusterGroup(); + var marker = new L.Marker([1.5, 1.5]); + + map.addLayer(group); + + group.addLayer(marker); + + expect(marker._icon.parentNode).to.be(map._panes.markerPane); + + group.removeLayer(marker); + + expect(marker._icon).to.be(null); + }); + + it('doesnt remove a layer not added to it', function () { + + var group = new L.MarkerClusterGroup(); + var marker = new L.Marker([1.5, 1.5]); + + map.addLayer(group); + + map.addLayer(marker); + + expect(marker._icon.parentNode).to.be(map._panes.markerPane); + + group.removeLayer(marker); + + expect(marker._icon.parentNode).to.be(map._panes.markerPane); + }); + + it('removes a layer that was added to it (before being on the map) that is shown in a cluster', function () { + + var group = new L.MarkerClusterGroup(); + var marker = new L.Marker([1.5, 1.5]); + var marker2 = new L.Marker([1.5, 1.5]); + + group.addLayers([marker, marker2]); + map.addLayer(group); + + group.removeLayer(marker); + + expect(marker._icon).to.be(undefined); + expect(marker2._icon.parentNode).to.be(map._panes.markerPane); + }); + + it('removes a layer that was added to it (after being on the map) that is shown in a cluster', function () { + + var group = new L.MarkerClusterGroup(); + var marker = new L.Marker([1.5, 1.5]); + var marker2 = new L.Marker([1.5, 1.5]); + + map.addLayer(group); + group.addLayer(marker); + group.addLayer(marker2); + + group.removeLayer(marker); + + expect(marker._icon).to.be(null); + expect(marker2._icon.parentNode).to.be(map._panes.markerPane); + }); + + it('removes a layer that was added to it (before being on the map) that is individually', function () { + + var group = new L.MarkerClusterGroup(); + var marker = new L.Marker([1, 1.5]); + var marker2 = new L.Marker([3, 1.5]); + + map.addLayer(group); + group.addLayer(marker); + group.addLayer(marker2); + + expect(marker._icon.parentNode).to.be(map._panes.markerPane); + expect(marker2._icon.parentNode).to.be(map._panes.markerPane); + + group.removeLayer(marker); + + expect(marker._icon).to.be(null); + expect(marker2._icon.parentNode).to.be(map._panes.markerPane); + }); +}); \ No newline at end of file