Вход Регистрация
Файл: module-assets/admin/gmaps/test/spec/MapSpec.js
Строк: 247
<?php
describe
("Creating a map", function() {
  var 
basic_mapadvanced_mapmap_with_eventsmap_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,
        
zoom12
      
});
    });

    
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,
        
mapTypeControlfalse,
        
overviewMapControlfalse
      
});
    });

    
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 
callbackscurrent_zoom 0current_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 
callbacksmarkers_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 : {
          
clickcallbacks.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);
    });
  });
});
?>
Онлайн: 0
Реклама