UNPKG

@yaga/leaflet-ng2

Version:
602 lines 25.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const chai_1 = require("chai"); const leaflet_1 = require("leaflet"); const index_1 = require("./index"); const spec_1 = require("./spec"); function hasAsChild(root, child) { "use strict"; const length = root.children.length; for (let i = 0; i < length; i += 1) { /* istanbul ignore else */ if (root.children.item(i) === child) { return true; } } return false; } describe("Image-Overlay Directive", () => { let map; let layer; beforeEach(() => { map = new index_1.MapComponent({ nativeElement: document.createElement("div") }, new index_1.LayerGroupProvider(), new index_1.MapProvider()); map._size = leaflet_1.point(100, 100); map._pixelOrigin = leaflet_1.point(50, 50); layer = new index_1.ImageOverlayDirective({ ref: map }, {}); }); describe("[(display)]", () => { it("should remove DOM container when not displaying", () => { layer.display = false; chai_1.expect(hasAsChild(layer.getPane(), layer.getElement())).to.equal(false); }); it("should re-add DOM container when display is true again", () => { layer.display = false; layer.display = true; chai_1.expect(hasAsChild(layer.getPane(), layer.getElement())).to.equal(true); }); it("should remove EventListeners when not displaying", (done) => { const zoomEvents = map._events.zoom; const length = zoomEvents.length; /* tslint:disable:no-string-literal */ const originalEventListener = layer.getEvents()["zoom"]; /* tslint:enable */ layer.display = false; for (let i = 0; i < length; i += 1) { // TODO: for is not looping! /* istanbul ignore if */ if (zoomEvents[i] && zoomEvents[i].fn === originalEventListener) { return done(new Error("There is still an event on listener")); } return done(); } }); it("should re-add EventListeners when display is true again", (done) => { const zoomEvents = map._events.zoom; const length = zoomEvents.length; /* tslint:disable:no-string-literal */ const originalEventListener = layer.getEvents()["zoom"]; /* tslint:enable */ layer.display = false; layer.display = true; for (let i = 0; i < length; i += 1) { // TODO: for is not looping! if (zoomEvents[i] && zoomEvents[i].fn === originalEventListener) { return done(); } } /* istanbul ignore next */ return done(new Error("There is no event on listener")); }); it("should set to false by removing from map", (done) => { layer.displayChange.subscribe((val) => { chai_1.expect(val).to.equal(false); chai_1.expect(layer.display).to.equal(false); done(); }); map.removeLayer(layer); }); it("should set to true when adding to map again", (done) => { map.removeLayer(layer); layer.displayChange.subscribe((val) => { chai_1.expect(val).to.equal(true); chai_1.expect(layer.display).to.equal(true); done(); }); map.addLayer(layer); }); }); describe("[(url)]", () => { it("should be changed in Leaflet when changing in Angular", () => { layer.url = index_1.IMAGE_OVERLAY_URL; chai_1.expect(layer._url).to.equal(index_1.IMAGE_OVERLAY_URL); }); it("should be changed in Angular when changing in Angular", () => { layer.url = index_1.IMAGE_OVERLAY_URL; chai_1.expect(layer.url).to.equal(index_1.IMAGE_OVERLAY_URL); }); it("should be changed in Angular when changing in Leaflet", () => { layer.setUrl(index_1.IMAGE_OVERLAY_URL); chai_1.expect(layer.url).to.equal(index_1.IMAGE_OVERLAY_URL); }); it("should fire an event when changing in Angular", (done) => { layer.urlChange.subscribe((eventVal) => { chai_1.expect(eventVal).to.equal(index_1.IMAGE_OVERLAY_URL); return done(); }); layer.url = index_1.IMAGE_OVERLAY_URL; }); it("should fire an event when changing in Leaflet", (done) => { layer.url = index_1.IMAGE_OVERLAY_URL; layer.urlChange.subscribe((eventVal) => { chai_1.expect(eventVal).to.equal(index_1.IMAGE_OVERLAY_URL + "?test"); return done(); }); layer.setUrl(index_1.IMAGE_OVERLAY_URL + "?test"); }); it("should not emit anything when changing into same url", (done) => { layer.setUrl(index_1.IMAGE_OVERLAY_URL); setTimeout(() => { /* istanbul ignore next */ layer.urlChange.subscribe(() => { return done(new Error("Event fired")); }); layer.setUrl(index_1.IMAGE_OVERLAY_URL); return done(); }, 0); }); }); describe("[(opacity)]", () => { it("should be changed in Leaflet when changing in Angular", () => { const val = spec_1.randomNumber(); layer.opacity = val; chai_1.expect(layer.options.opacity).to.equal(val); }); it("should be changed in Angular when changing in Angular", () => { const val = spec_1.randomNumber(); layer.opacity = val; chai_1.expect(layer.opacity).to.equal(val); }); it("should be changed in Angular when changing in Leaflet", () => { const val = spec_1.randomNumber(); layer.setOpacity(val); chai_1.expect(layer.options.opacity).to.equal(val); }); it("should fire an event when changing in Angular", (done) => { const val = spec_1.randomNumber(); layer.opacityChange.subscribe((eventVal) => { chai_1.expect(eventVal).to.equal(val); return done(); }); layer.opacity = val; }); it("should fire an event when changing in Leaflet", (done) => { const val = spec_1.randomNumber(); layer.opacityChange.subscribe((eventVal) => { chai_1.expect(eventVal).to.equal(val); return done(); }); layer.setOpacity(val); }); }); describe("[(bounds)]", () => { it("should be changed in Leaflet when changing in Angular", () => { const val = spec_1.randomLatLngBounds(); layer.bounds = val; chai_1.expect(layer.getBounds()).to.equal(val); }); it("should be changed in Angular when changing in Angular", () => { const val = spec_1.randomLatLngBounds(); layer.bounds = val; chai_1.expect(layer.bounds).to.equal(val); }); it("should be changed in Angular when changing in Leaflet", () => { const val = spec_1.randomLatLngBounds(); layer.setBounds(val); chai_1.expect(layer.bounds).to.equal(val); }); it("should fire an event when changing in Angular", (done) => { const val = spec_1.randomLatLngBounds(); layer.boundsChange.subscribe((eventVal) => { chai_1.expect(eventVal).to.equal(val); return done(); }); layer.bounds = val; }); it("should fire an event when changing in Leaflet", (done) => { const val = spec_1.randomLatLngBounds(); layer.boundsChange.subscribe((eventVal) => { chai_1.expect(eventVal).to.equal(val); return done(); }); layer.setBounds(val); }); }); describe("[(north)]", () => { it("should be changed in Leaflet when changing in Angular", () => { const val = spec_1.randomNumber(90); layer.north = val; chai_1.expect(layer.getBounds().getNorth()).to.equal(val); }); it("should be changed in Angular when changing in Angular", () => { const val = spec_1.randomNumber(90); layer.north = val; chai_1.expect(layer.north).to.equal(val); }); it("should be changed in Angular when changing in Leaflet", () => { const val = spec_1.randomNumber(90); layer.setBounds([ [0, 0], [val, 0], ]); chai_1.expect(layer.north).to.equal(val); }); it("should fire an event when changing in Angular", (done) => { const val = spec_1.randomNumber(90); layer.northChange.subscribe((eventVal) => { chai_1.expect(eventVal).to.equal(val); return done(); }); layer.north = val; }); it("should fire an event when changing in Leaflet", (done) => { const val = spec_1.randomNumber(90); layer.northChange.subscribe((eventVal) => { chai_1.expect(eventVal).to.equal(val); return done(); }); layer.setBounds([ [0, 0], [val, 0], ]); }); }); describe("[(east)]", () => { it("should be changed in Leaflet when changing in Angular", () => { const val = spec_1.randomNumber(180); layer.east = val; chai_1.expect(layer.getBounds().getEast()).to.equal(val); }); it("should be changed in Angular when changing in Angular", () => { const val = spec_1.randomNumber(180); layer.east = val; chai_1.expect(layer.east).to.equal(val); }); it("should be changed in Angular when changing in Leaflet", () => { const val = spec_1.randomNumber(180); layer.setBounds([ [0, val], [0, 0], ]); chai_1.expect(layer.east).to.equal(val); }); it("should fire an event when changing in Angular", (done) => { const val = spec_1.randomNumber(180); layer.eastChange.subscribe((eventVal) => { chai_1.expect(eventVal).to.equal(val); return done(); }); layer.east = val; }); it("should fire an event when changing in Leaflet", (done) => { const val = spec_1.randomNumber(180); layer.eastChange.subscribe((eventVal) => { chai_1.expect(eventVal).to.equal(val); return done(); }); layer.setBounds([ [0, val], [0, 0], ]); }); }); describe("[(south)]", () => { beforeEach(() => { layer.setBounds(leaflet_1.latLngBounds([ [0, 0], [1, 1], ])); }); it("should be changed in Leaflet when changing in Angular", () => { const val = spec_1.randomNumber(0, -90); layer.south = val; chai_1.expect(layer.getBounds().getSouth()).to.equal(val); }); it("should be changed in Angular when changing in Angular", () => { const val = spec_1.randomNumber(0, -90); layer.south = val; chai_1.expect(layer.south).to.equal(val); }); it("should be changed in Angular when changing in Leaflet", () => { const val = spec_1.randomNumber(0, -90); layer.setBounds([ [val, 0], [1, 1], ]); chai_1.expect(layer.south).to.equal(val); }); it("should fire an event when changing in Angular", (done) => { const val = spec_1.randomNumber(0, -90); layer.southChange.subscribe((eventVal) => { chai_1.expect(eventVal).to.equal(val); return done(); }); layer.south = val; }); it("should fire an event when changing in Leaflet", (done) => { const val = spec_1.randomNumber(0, -90); layer.southChange.subscribe((eventVal) => { chai_1.expect(eventVal).to.equal(val); return done(); }); layer.setBounds([ [val, 0], [1, 1], ]); }); }); describe("[(west)]", () => { beforeEach(() => { layer.setBounds(leaflet_1.latLngBounds([ [0, 0], [1, 1], ])); }); it("should be changed in Leaflet when changing in Angular", () => { const val = spec_1.randomNumber(0, -180); layer.west = val; chai_1.expect(layer.getBounds().getWest()).to.equal(val); }); it("should be changed in Angular when changing in Angular", () => { const val = spec_1.randomNumber(0, -180); layer.west = val; chai_1.expect(layer.west).to.equal(val); }); it("should be changed in Angular when changing in Leaflet", () => { const val = spec_1.randomNumber(0, -180); layer.setBounds(leaflet_1.latLngBounds([ [0, val], [1, 1], ])); chai_1.expect(layer.west).to.equal(val); }); it("should fire an event when changing in Angular", (done) => { const val = spec_1.randomNumber(0, -180); layer.westChange.subscribe((eventVal) => { chai_1.expect(eventVal).to.equal(val); return done(); }); layer.west = val; }); it("should fire an event when changing in Leaflet", (done) => { const val = spec_1.randomNumber(0, -180); layer.westChange.subscribe((eventVal) => { chai_1.expect(eventVal).to.equal(val); return done(); }); layer.setBounds([ [0, val], [1, 1], ]); }); }); // Events describe("(add)", () => { it("should fire event in Angular when firing event in Leaflet", (done) => { const testHandle = {}; const testEvent = { testHandle }; layer.addEvent.subscribe((event) => { chai_1.expect(event.testHandle).to.equal(testEvent.testHandle); chai_1.expect(event.testHandle).to.equal(testEvent.testHandle); return done(); }); layer.fire("add", testEvent); }); }); describe("(remove)", () => { it("should fire event in Angular when firing event in Leaflet", (done) => { const testHandle = {}; const testEvent = { testHandle }; layer.removeEvent.subscribe((event) => { chai_1.expect(event.testHandle).to.equal(testEvent.testHandle); return done(); }); layer.fire("remove", testEvent); }); }); describe("(popupopen)", () => { it("should fire event in Angular when firing event in Leaflet", (done) => { const testHandle = {}; const testEvent = { testHandle }; layer.popupopenEvent.subscribe((event) => { chai_1.expect(event.testHandle).to.equal(testEvent.testHandle); return done(); }); layer.fire("popupopen", testEvent); }); }); describe("(popupclose)", () => { it("should fire event in Angular when firing event in Leaflet", (done) => { const testHandle = {}; const testEvent = { testHandle }; layer.popupcloseEvent.subscribe((event) => { chai_1.expect(event.testHandle).to.equal(testEvent.testHandle); return done(); }); layer.fire("popupclose", testEvent); }); }); describe("(tooltipopen)", () => { it("should fire event in Angular when firing event in Leaflet", (done) => { const testHandle = {}; const testEvent = { testHandle }; layer.tooltipopenEvent.subscribe((event) => { chai_1.expect(event.testHandle).to.equal(testEvent.testHandle); return done(); }); layer.fire("tooltipopen", testEvent); }); }); describe("(tooltipclose)", () => { it("should fire event in Angular when firing event in Leaflet", (done) => { const testHandle = {}; const testEvent = { testHandle }; layer.tooltipcloseEvent.subscribe((event) => { chai_1.expect(event.testHandle).to.equal(testEvent.testHandle); return done(); }); layer.fire("tooltipclose", testEvent); }); }); describe("(click)", () => { it("should fire event in Angular when firing event in Leaflet", (done) => { const testHandle = {}; const testEvent = { testHandle }; layer.clickEvent.subscribe((event) => { chai_1.expect(event.testHandle).to.equal(testEvent.testHandle); return done(); }); layer.fire("click", testEvent); }); }); describe("(dblclick)", () => { it("should fire event in Angular when firing event in Leaflet", (done) => { const testHandle = {}; const testEvent = { testHandle }; layer.dblclickEvent.subscribe((event) => { chai_1.expect(event.testHandle).to.equal(testEvent.testHandle); return done(); }); layer.fire("dblclick", testEvent); }); }); describe("(mousedown)", () => { it("should fire event in Angular when firing event in Leaflet", (done) => { const testHandle = {}; const testEvent = { testHandle }; layer.mousedownEvent.subscribe((event) => { chai_1.expect(event.testHandle).to.equal(testEvent.testHandle); return done(); }); layer.fire("mousedown", testEvent); }); }); describe("(mouseover)", () => { it("should fire event in Angular when firing event in Leaflet", (done) => { const testHandle = {}; const testEvent = { testHandle }; layer.mouseoverEvent.subscribe((event) => { chai_1.expect(event.testHandle).to.equal(testEvent.testHandle); return done(); }); layer.fire("mouseover", testEvent); }); }); describe("(mouseout)", () => { it("should fire event in Angular when firing event in Leaflet", (done) => { const testHandle = {}; const testEvent = { testHandle }; layer.mouseoutEvent.subscribe((event) => { chai_1.expect(event.testHandle).to.equal(testEvent.testHandle); return done(); }); layer.fire("mouseout", testEvent); }); }); describe("(contextmenu)", () => { it("should fire event in Angular when firing event in Leaflet", (done) => { const testHandle = {}; const testEvent = { testHandle }; layer.contextmenuEvent.subscribe((event) => { chai_1.expect(event.testHandle).to.equal(testEvent.testHandle); return done(); }); layer.fire("contextmenu", testEvent); }); }); describe("(load)", () => { it("should fire event in Angular when firing event in Leaflet", (done) => { const testHandle = {}; const testEvent = { testHandle }; layer.loadEvent.subscribe((event) => { chai_1.expect(event.testHandle).to.equal(testEvent.testHandle); chai_1.expect(event.testHandle).to.equal(testEvent.testHandle); return done(); }); layer.fire("load", testEvent); }); }); describe("(error)", () => { it("should fire event in Angular when firing event in Leaflet", (done) => { const testHandle = {}; const testEvent = { testHandle }; layer.errorEvent.subscribe((event) => { chai_1.expect(event.testHandle).to.equal(testEvent.testHandle); chai_1.expect(event.testHandle).to.equal(testEvent.testHandle); return done(); }); layer.fire("error", testEvent); }); }); describe("[crossOrigin]", () => { it("should be changed to false in Leaflet when changing in Angular to false", () => { layer.crossOrigin = false; chai_1.expect(layer.options.crossOrigin).to.equal(false); }); it("should be changed to true in Leaflet when changing in Angular to true", () => { layer.options.crossOrigin = false; layer.crossOrigin = true; chai_1.expect(layer.options.crossOrigin).to.equal(true); }); it("should be changed in Angular to false when changing in Angular to false", () => { layer.crossOrigin = false; chai_1.expect(layer.crossOrigin).to.equal(false); }); it("should be changed in Angular to true when changing in Angular to true", () => { layer.crossOrigin = true; chai_1.expect(layer.crossOrigin).to.equal(true); }); }); describe("[interactive]", () => { it("should be changed to false in Leaflet when changing in Angular to false", () => { layer.interactive = false; chai_1.expect(layer.options.interactive).to.equal(false); }); it("should be changed to true in Leaflet when changing in Angular to true", () => { layer.options.interactive = false; layer.interactive = true; chai_1.expect(layer.options.interactive).to.equal(true); }); it("should be changed in Angular to false when changing in Angular to false", () => { layer.interactive = false; chai_1.expect(layer.interactive).to.equal(false); }); it("should be changed in Angular to true when changing in Angular to true", () => { layer.interactive = true; chai_1.expect(layer.interactive).to.equal(true); }); }); describe("[alt]", () => { it("should be changed in Leaflet when changing in Angular", () => { const val = "Test alt"; layer.alt = val; chai_1.expect(layer.options.alt !== val || layer.getElement().getAttribute("alt") !== val).to.equal(false); }); it("should be changed in Angular when changing in Angular", () => { const val = "Test alt"; layer.alt = val; chai_1.expect(layer.alt !== val).to.equal(false); }); }); describe("[attribution]", () => { let attributionControl; beforeEach(() => { attributionControl = new index_1.AttributionControlDirective({ ref: map }); }); it("should be changed in Leaflet when changing in Angular", () => { const val = "Test attribution"; layer.attribution = val; chai_1.expect(layer.options.attribution).to.equal(val); chai_1.expect(attributionControl.attributions).to.contain(val); }); it("should be changed in Angular when changing in Angular", () => { const val = "Test attribution"; layer.attribution = val; chai_1.expect(layer.attribution).to.equal(val); chai_1.expect(attributionControl.attributions).to.contain(val); }); it("should remove old attribution when changing in Angular", () => { const oldVal = "Old test attribution"; const newVal = "Test attribution"; layer.attribution = oldVal; layer.attribution = newVal; chai_1.expect(attributionControl.attributions).to.contain(newVal); chai_1.expect(attributionControl.attributions).to.not.contain(oldVal); }); }); describe("Destroying a Image-Overlay Directive", () => { it("should remove Image-Overlay Directive from map on destroy", () => { chai_1.expect(map.hasLayer(layer)).to.equal(true); layer.ngOnDestroy(); chai_1.expect(map.hasLayer(layer)).to.equal(false); }); }); }); //# sourceMappingURL=image-overlay.directive.spec.js.map