Add frontend assets and plugin bundles
Add the legacy frontend themes, scripts, and plugin assets required by the main SPOTA interfaces.
This commit is contained in:
178
assets/plugins/gmaps/test/spec/MapSpec.js
Normal file
178
assets/plugins/gmaps/test/spec/MapSpec.js
Normal file
@@ -0,0 +1,178 @@
|
||||
describe("Creating a map", function() {
|
||||
var basic_map, advanced_map, map_with_events, map_with_custom_controls;
|
||||
|
||||
it("should throw an error if element is not defined", function() {
|
||||
expect(function() { new GMaps({}); }).toThrow(new Error('No element defined.'));
|
||||
});
|
||||
|
||||
describe("With basic options", function() {
|
||||
beforeEach(function() {
|
||||
basic_map = basic_map || new GMaps({
|
||||
el : '#basic-map',
|
||||
lat: -12.0433,
|
||||
lng: -77.0283,
|
||||
zoom: 12
|
||||
});
|
||||
});
|
||||
|
||||
it("should create a GMaps object", function() {
|
||||
expect(basic_map).toBeDefined();
|
||||
});
|
||||
|
||||
it("should have centered the map at the initial coordinates", function() {
|
||||
var lat = basic_map.getCenter().lat();
|
||||
var lng = basic_map.getCenter().lng();
|
||||
|
||||
expect(lat).toEqual(-12.0433);
|
||||
expect(lng).toEqual(-77.0283);
|
||||
});
|
||||
|
||||
it("should have the correct zoom", function() {
|
||||
expect(basic_map.getZoom()).toEqual(12);
|
||||
});
|
||||
});
|
||||
|
||||
describe("With advanced controls", function() {
|
||||
beforeEach(function() {
|
||||
advanced_map = advanced_map || new GMaps({
|
||||
el : '#advanced-map',
|
||||
lat: -12.0433,
|
||||
lng: -77.0283,
|
||||
zoomControl : true,
|
||||
panControl : false,
|
||||
streetViewControl : false,
|
||||
mapTypeControl: false,
|
||||
overviewMapControl: false
|
||||
});
|
||||
});
|
||||
|
||||
it("should show the defined controls", function() {
|
||||
expect(advanced_map.map.zoomControl).toBeTruthy();
|
||||
expect(advanced_map.map.panControl).toBeFalsy();
|
||||
expect(advanced_map.map.streetViewControl).toBeFalsy();
|
||||
expect(advanced_map.map.mapTypeControl).toBeFalsy();
|
||||
expect(advanced_map.map.overviewMapControl).toBeFalsy();
|
||||
});
|
||||
});
|
||||
|
||||
describe("With events", function() {
|
||||
var callbacks, current_zoom = 0, current_center = null;
|
||||
|
||||
beforeEach(function() {
|
||||
callbacks = {
|
||||
onclick : function(e) {
|
||||
var lat = e.latLng.lat();
|
||||
var lng = e.latLng.lng();
|
||||
|
||||
map_with_events.addMarker({
|
||||
lat : lat,
|
||||
lng : lng,
|
||||
title : 'New Marker'
|
||||
});
|
||||
},
|
||||
onzoomchanged : function() {
|
||||
console.log('onzoomchanged');
|
||||
current_zoom = this.getZoom();
|
||||
},
|
||||
oncenterchanged : function() {
|
||||
console.log('oncenterchanged');
|
||||
current_center = this.getCenter();
|
||||
}
|
||||
};
|
||||
|
||||
spyOn(callbacks, 'onclick').andCallThrough();
|
||||
spyOn(callbacks, 'onzoomchanged').andCallThrough();
|
||||
spyOn(callbacks, 'oncenterchanged').andCallThrough();
|
||||
|
||||
map_with_events = map_with_events || new GMaps({
|
||||
el : '#map-with-events',
|
||||
lat : -12.0433,
|
||||
lng : -77.0283,
|
||||
click : callbacks.onclick,
|
||||
zoom_changed : callbacks.onzoomchanged,
|
||||
center_changed : callbacks.oncenterchanged
|
||||
});
|
||||
});
|
||||
|
||||
it("should respond to zoom_changed event", function() {
|
||||
map_with_events.map.setZoom(16);
|
||||
|
||||
expect(callbacks.onzoomchanged).toHaveBeenCalled();
|
||||
expect(current_zoom).toEqual(16);
|
||||
});
|
||||
|
||||
it("should respond to center_changed event", function() {
|
||||
map_with_events.map.setCenter(new google.maps.LatLng(-12.0907, -77.0227));
|
||||
|
||||
// Fix for floating-point bug
|
||||
var lat = parseFloat(current_center.lat().toFixed(4));
|
||||
var lng = parseFloat(current_center.lng().toFixed(4));
|
||||
|
||||
expect(callbacks.oncenterchanged).toHaveBeenCalled();
|
||||
expect(lat).toEqual(-12.0907);
|
||||
expect(lng).toEqual(-77.0227);
|
||||
});
|
||||
|
||||
it("should respond to click event", function() {
|
||||
google.maps.event.trigger(map_with_events.map, 'click', {
|
||||
latLng : new google.maps.LatLng(-12.0433, -77.0283)
|
||||
});
|
||||
|
||||
expect(callbacks.onclick).toHaveBeenCalled();
|
||||
expect(map_with_events.markers.length).toEqual(1);
|
||||
});
|
||||
|
||||
afterEach(function() {
|
||||
document.getElementById('map-with-events').innerHTML = '';
|
||||
map_with_events = null;
|
||||
});
|
||||
});
|
||||
|
||||
describe("With custom controls", function() {
|
||||
var callbacks, markers_in_map = 0;
|
||||
|
||||
beforeEach(function() {
|
||||
callbacks = {
|
||||
onclick : function() {
|
||||
map_with_custom_controls.addMarker({
|
||||
lat : map_with_custom_controls.getCenter().lat(),
|
||||
lng : map_with_custom_controls.getCenter().lng()
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
spyOn(callbacks, 'onclick').andCallThrough();
|
||||
|
||||
map_with_custom_controls = new GMaps({
|
||||
el : '#map-with-custom-controls',
|
||||
lat : -12.0433,
|
||||
lng : -77.0283
|
||||
});
|
||||
|
||||
map_with_custom_controls.addControl({
|
||||
position : 'top_right',
|
||||
content : 'Add marker at the center',
|
||||
style : {
|
||||
margin: '5px',
|
||||
padding: '1px 6px',
|
||||
border: 'solid 1px #717B87',
|
||||
background: '#fff'
|
||||
},
|
||||
events : {
|
||||
click: callbacks.onclick
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
it("should add the control to the controls collection", function() {
|
||||
expect(map_with_custom_controls.controls.length).toEqual(1);
|
||||
});
|
||||
|
||||
it("should respond to click event attached to the custom control", function() {
|
||||
google.maps.event.trigger(map_with_custom_controls.controls[0], 'click');
|
||||
|
||||
expect(callbacks.onclick).toHaveBeenCalled();
|
||||
expect(map_with_custom_controls.markers.length).toEqual(1);
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user