@yaga/leaflet-ng2
Version:
Angular2 module for Leaflet
602 lines • 25.1 kB
JavaScript
;
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