jest-google-maps-mock
Version:
Jest mock for google maps
331 lines (322 loc) • 9.95 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var createMockFuncsFromArray = function createMockFuncsFromArray(instance) {
var names = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
names.forEach(function (name) {
instance[name] = jest.fn().mockName(name);
});
};
var createGoogleMapsMock = function createGoogleMapsMock() {
var libraries = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var createMVCObject = function createMVCObject(instance) {
var listeners = {};
instance.listeners = listeners;
instance.addListener = jest.fn(function (event, fn) {
listeners[event] = listeners[event] || [];
listeners[event].push(fn);
return {
remove: function remove() {
var index = listeners[event].indexOf(fn);
if (index !== -1) {
listeners[event].splice(index, 1);
}
}
};
}).mockName('addListener');
createMockFuncsFromArray(instance, ['bindTo', 'get', 'notify', 'set', 'setValues', 'unbind', 'unbindAll']);
};
var maps = {
Animation: {
BOUNCE: 1,
DROP: 2,
Lo: 3,
Go: 4
},
BicyclingLayer: jest.fn().mockImplementation(function () {
createMVCObject(this);
createMockFuncsFromArray(this, ['setMap']);
}),
Circle: jest.fn().mockImplementation(function (opts) {
this.opts = opts;
createMVCObject(this);
createMockFuncsFromArray(this, ['setCenter', 'setDraggable', 'setEditable', 'setMap', 'setOptions', 'setRadius', 'setVisible']);
}),
ControlPosition: {
TOP_LEFT: 1,
TOP_CENTER: 2,
TOP: 2,
TOP_RIGHT: 3,
LEFT_CENTER: 4,
LEFT: 5,
LEFT_TOP: 5,
LEFT_BOTTOM: 6,
RIGHT: 7,
RIGHT_CENTER: 8,
RIGHT_BOTTOM: 9,
BOTTOM_LEFT: 10,
BOTTOM: 11,
BOTTOM_CENTER: 11,
BOTTOM_RIGHT: 12,
CENTER: 13
},
Data: jest.fn().mockImplementation(function (options) {
this.options = options;
createMVCObject(this);
createMockFuncsFromArray(this, ['setControlPosition', 'setControls', 'setDrawingMode', 'setMap', 'setStyle']);
}),
DirectionsRenderer: jest.fn().mockImplementation(function (opts) {
this.opts = opts;
createMVCObject(this);
createMockFuncsFromArray(this, ['setDirections', 'setMap', 'setOptions', 'setPanel', 'setRouteIndex']);
}),
DirectionsService: function DirectionsService() {},
DirectionsStatus: {
INVALID_REQUEST: 'INVALID_REQUEST',
MAX_WAYPOINTS_EXCEEDED: 'MAX_WAYPOINTS_EXCEEDED',
NOT_FOUND: 'NOT_FOUND',
OK: 'OK',
OVER_QUERY_LIMIT: 'OVER_QUERY_LIMIT',
REQUEST_DENIED: 'REQUEST_DENIED',
UNKNOWN_ERROR: 'UNKNOWN_ERROR',
ZERO_RESULTS: 'ZERO_RESULTS'
},
DirectionsTravelMode: {
BICYCLING: 'BICYCLING',
DRIVING: 'DRIVING',
TRANSIT: 'TRANSIT',
WALKING: 'WALKING'
},
DirectionsUnitSystem: {
IMPERIAL: 1,
METRIC: 0
},
DistanceMatrixElementStatus: {
NOT_FOUND: 'NOT_FOUND',
OK: 'OK',
ZERO_RESULTS: 'ZERO_RESULTS'
},
DistanceMatrixService: function DistanceMatrixService() {},
DistanceMatrixStatus: {
INVALID_REQUEST: 'INVALID_REQUEST',
MAX_DIMENSIONS_EXCEEDED: 'MAX_DIMENSIONS_EXCEEDED',
MAX_ELEMENTS_EXCEEDED: 'MAX_ELEMENTS_EXCEEDED',
OK: 'OK',
OVER_QUERY_LIMIT: 'OVER_QUERY_LIMIT',
REQUEST_DENIED: 'REQUEST_DENIED',
UNKNOWN_ERROR: 'UNKNOWN_ERROR'
},
ElevationService: function ElevationService() {},
ElevationStatus: {
Co: 'DATA_NOT_AVAILABLE',
INVALID_REQUEST: 'INVALID_REQUEST',
OK: 'OK',
OVER_QUERY_LIMIT: 'OVER_QUERY_LIMIT',
REQUEST_DENIED: 'REQUEST_DENIED',
UNKNOWN_ERROR: 'UNKNOWN_ERROR'
},
FusionTablesLayer: jest.fn().mockImplementation(function (options) {
this.options = options;
createMVCObject(this);
createMockFuncsFromArray(this, ['setMap', 'setOptions']);
}),
Geocoder: function Geocoder() {},
GeocoderLocationType: {
APPROXIMATE: 'APPROXIMATE',
GEOMETRIC_CENTER: 'GEOMETRIC_CENTER',
RANGE_INTERPOLATED: 'RANGE_INTERPOLATED',
ROOFTOP: 'ROOFTOP'
},
GeocoderStatus: {
ERROR: 'ERROR',
INVALID_REQUEST: 'INVALID_REQUEST',
OK: 'OK',
OVER_QUERY_LIMIT: 'OVER_QUERY_LIMIT',
REQUEST_DENIED: 'REQUEST_DENIED',
UNKNOWN_ERROR: 'UNKNOWN_ERROR',
ZERO_RESULTS: 'ZERO_RESULTS'
},
GroundOverlay: function GroundOverlay() {},
ImageMapType: function ImageMapType() {},
InfoWindow: function InfoWindow() {},
KmlLayer: function KmlLayer() {},
KmlLayerStatus: {
DOCUMENT_NOT_FOUND: 'DOCUMENT_NOT_FOUND',
DOCUMENT_TOO_LARGE: 'DOCUMENT_TOO_LARGE',
FETCH_ERROR: 'FETCH_ERROR',
INVALID_DOCUMENT: 'INVALID_DOCUMENT',
INVALID_REQUEST: 'INVALID_REQUEST',
LIMITS_EXCEEDED: 'LIMITS_EXECEEDED',
OK: 'OK',
TIMED_OUT: 'TIMED_OUT',
UNKNOWN: 'UNKNOWN'
},
LatLng: function LatLng() {},
LatLngBounds: function LatLngBounds() {},
MVCArray: function MVCArray() {},
MVCObject: jest.fn().mockImplementation(function () {
createMVCObject(this);
}),
Map: jest.fn().mockImplementation(function (mapDiv, opts) {
this.mapDiv = mapDiv;
this.opts = opts;
createMVCObject(this);
createMockFuncsFromArray(this, ['setCenter', 'setClickableIcons', 'setHeading', 'setMapTypeId', 'setOptions', 'setStreetView', 'setTilt', 'getZoom', 'setZoom', 'fitBounds', 'getBounds', 'panToBounds']);
this.getDiv = jest.fn().mockImplementation(function () {
return this.mapDiv;
});
}),
MapTypeControlStyle: {
DEFAULT: 0,
DROPDOWN_MENU: 2,
HORIZONTAL_BAR: 1,
INSET: 3,
INSET_LARGE: 4
},
MapTypeId: {
HYBRID: 'hybrid',
ROADMAP: 'roadmap',
SATELLITE: 'satellite',
TERRAIN: 'terrain'
},
MapTypeRegistry: function MapTypeRegistry() {},
Marker: jest.fn().mockImplementation(function (opts) {
this.opts = opts;
createMVCObject(this);
createMockFuncsFromArray(this, ['setMap', 'setOpacity', 'setOptions', 'setPosition', 'setShape', 'setTitle', 'setVisible', 'setZIndex']);
}),
MarkerImage: function MarkerImage() {},
MaxZoomService: function MaxZoomService() {
return {
getMaxZoomAtLatLng: function getMaxZoomAtLatLng() {}
};
},
MaxZoomStatus: {
ERROR: 'ERROR',
OK: 'OK'
},
NavigationControlStyle: {
ANDROID: 2,
DEFAULT: 0,
Mo: 4,
SMALL: 1,
ZOOM_PAN: 3,
ik: 5
},
OverlayView: function OverlayView() {},
Point: function Point() {},
Polygon: jest.fn().mockImplementation(function (opts) {
this.opts = opts;
createMVCObject(this);
createMockFuncsFromArray(this, ['setDraggable', 'setEditable', 'setMap', 'setOptions', 'setPath', 'setPaths', 'setVisible']);
}),
Polyline: jest.fn().mockImplementation(function (opts) {
this.opts = opts;
createMVCObject(this);
createMockFuncsFromArray(this, ['setDraggable', 'setEditable', 'setMap', 'setOptions', 'setPath', 'setVisible']);
}),
Rectangle: function Rectangle() {},
SaveWidget: function SaveWidget() {},
ScaleControlStyle: {
DEFAULT: 0
},
Size: function Size() {},
StreetViewCoverageLayer: function StreetViewCoverageLayer() {},
StreetViewPanorama: function StreetViewPanorama() {},
StreetViewPreference: {
BEST: 'best',
NEAREST: 'nearest'
},
StreetViewService: function StreetViewService() {},
StreetViewSource: {
DEFAULT: 'default',
OUTDOOR: 'outdoor'
},
StreetViewStatus: {
OK: 'OK',
UNKNOWN_ERROR: 'UNKNOWN_ERROR',
ZERO_RESULTS: 'ZERO_RESULTS'
},
StrokePosition: {
CENTER: 0,
INSIDE: 1,
OUTSIDE: 2
},
StyledMapType: function StyledMapType() {},
SymbolPath: {
BACKWARD_CLOSED_ARROW: 3,
BACKWARD_OPEN_ARROW: 4,
CIRCLE: 0,
FORWARD_CLOSED_ARROW: 1,
FORWARD_OPEN_ARROW: 2
},
TrafficLayer: jest.fn().mockImplementation(function (opts) {
this.opts = opts;
createMVCObject(this);
createMockFuncsFromArray(this, ['setMap', 'setOptions']);
}),
TrafficModel: {
BEST_GUESS: 'bestguess',
OPTIMISTIC: 'optimistic',
PESSIMISTIC: 'pessimistic'
},
TransitLayer: jest.fn().mockImplementation(function () {
createMVCObject(this);
createMockFuncsFromArray(this, ['setMap']);
}),
TransitMode: {
BUS: 'BUS',
RAIL: 'RAIL',
SUBWAY: 'SUBWAY',
TRAIN: 'TRAIN',
TRAM: 'TRAM'
},
TransitRoutePreference: {
FEWER_TRANSFERS: 'FEWER_TRANSFERS',
LESS_WALKING: 'LESS_WALKING'
},
TravelMode: {
BICYCLING: 'BICYCLING',
DRIVING: 'DRIVING',
TRANSIT: 'TRANSIT',
WALKING: 'WALKING'
},
UnitSystem: {
IMPERIAL: 1,
METRIC: 0
},
ZoomControlStyle: {
DEFAULT: 0,
LARGE: 2,
SMALL: 1,
ik: 3
},
__gjsload__: function __gjsload__() {},
event: {
clearInstanceListeners: jest.fn().mockName('clearInstanceListeners')
}
};
if (libraries.includes('places')) {
maps.places = {
AutocompleteService: jest.fn(function () {
return {
getPlacePredictions: jest.fn()
};
}),
PlacesServiceStatus: {
INVALID_REQUEST: 'INVALID_REQUEST',
NOT_FOUND: 'NOT_FOUND',
OK: 'OK',
OVER_QUERY_LIMIT: 'OVER_QUERY_LIMIT',
REQUEST_DENIED: 'REQUEST_DENIED',
UNKNOWN_ERROR: 'UNKNOWN_ERROR',
ZERO_RESULTS: 'ZERO_RESULTS'
}
};
}
return maps;
};
var _default = createGoogleMapsMock;
exports["default"] = _default;