ulogger-server/js/test/helpers/googlemaps.stub.js

100 lines
3.5 KiB
JavaScript
Raw Normal View History

2019-11-29 16:53:50 +01:00
/*
* μlogger
*
* Copyright(C) 2019 Bartek Fabiszewski (www.fabiszewski.net)
*
* This is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
/* eslint-disable func-style */
const stubObj = {};
const stubFn = function() {/* ignore */};
const stubFnObj = function() { return stubObj; };
export const setupGmapsStub = () => {
// noinspection JSUnresolvedVariable
window.google = {
maps: {
Animation: {
BOUNCE: 1,
DROP: 2
},
event: {
addListener: stubFn,
addListenerOnce: stubFn,
removeListener: stubFn
},
Icon: stubFn,
InfoWindow: stubFn,
LatLng: function(lat, lng) {
this.latitude = parseFloat(lat);
this.longitude = parseFloat(lng);
},
LatLngBounds: function(sw, ne) {
this.sw = sw;
this.ne = ne;
},
Map: stubFn,
MapTypeId: {
HYBRID: 1,
ROADMAP: 2,
SATELLITE: 3,
TERRAIN: 4
},
Marker: stubFn,
Point: stubFnObj,
Polyline: function(opts) {
this.options = opts;
this.path = [];
}
}
};
applyPrototypes(stubFn, stubObj);
};
export const applyPrototypes = () => {
window.google.maps.InfoWindow.prototype.addListener = stubFn;
window.google.maps.InfoWindow.prototype.close = stubFn;
window.google.maps.InfoWindow.prototype.getMap = stubFn;
window.google.maps.InfoWindow.prototype.open = stubFn;
window.google.maps.InfoWindow.prototype.setContent = stubFn;
window.google.maps.LatLng.prototype.lat = function () { return this.latitude; };
window.google.maps.LatLng.prototype.lng = function () { return this.longitude; };
window.google.maps.LatLngBounds.prototype.extend = stubFn;
window.google.maps.LatLngBounds.prototype.getNorthEast = function () { return this.ne; };
window.google.maps.LatLngBounds.prototype.getSouthWest = function () { return this.sw; };
window.google.maps.Map.prototype.fitBounds = stubFn;
window.google.maps.Map.prototype.getBounds = stubFn;
window.google.maps.Map.prototype.getCenter = stubFn;
window.google.maps.Map.prototype.getDiv = stubFn;
window.google.maps.Map.prototype.getZoom = stubFn;
window.google.maps.Map.prototype.setCenter = stubFn;
window.google.maps.Map.prototype.setMapTypeId = stubFn;
window.google.maps.Map.prototype.setOptions = stubFn;
window.google.maps.Map.prototype.setZoom = stubFn;
window.google.maps.Marker.prototype.addListener = stubFn;
window.google.maps.Marker.prototype.getIcon = stubFn;
window.google.maps.Marker.prototype.getPosition = stubFn;
window.google.maps.Marker.prototype.setAnimation = stubFn;
window.google.maps.Marker.prototype.setIcon = stubFn;
window.google.maps.Marker.prototype.setMap = stubFn;
window.google.maps.Polyline.prototype.getPath = function () { return this.path; };
window.google.maps.Polyline.prototype.setMap = stubFn;
};
export const clear = () => {
// noinspection JSAnnotator,JSUnresolvedVariable
delete window.google;
};