diff --git a/src/services/leafletHelpers.js b/src/services/leafletHelpers.js
index 8a161586..ae8d9e26 100644
--- a/src/services/leafletHelpers.js
+++ b/src/services/leafletHelpers.js
@@ -179,7 +179,7 @@ angular.module('leaflet-directive').service('leafletHelpers', function($q, $log)
equals: angular.equals,
isValidCenter: function(center) {
- return angular.isDefined(center) && angular.isNumber(center.lat) &&
+ return center !== null && angular.isObject(center) && angular.isNumber(center.lat) &&
angular.isNumber(center.lng) && angular.isNumber(center.zoom);
},
diff --git a/test/unit/010-centerDirectiveSpec.js b/test/unit/010-centerDirectiveSpec.js
index 7f61d11c..c32c943f 100644
--- a/test/unit/010-centerDirectiveSpec.js
+++ b/test/unit/010-centerDirectiveSpec.js
@@ -48,6 +48,19 @@ describe('Directive: leaflet center', function() {
});
});
+ it('should fallback to default map center if the model value is null', function () {
+ scope.center = null;
+ var element = angular.element('');
+ element = $compile(element)(scope);
+ scope.$digest();
+
+ leafletData.getMap().then(function(map) {
+ expect(map.getZoom()).toEqual(1);
+ expect(map.getCenter().lat).toEqual(0);
+ expect(map.getCenter().lng).toEqual(0);
+ });
+ });
+
it('should update the map center if the initial center scope properties are set', function() {
var element = angular.element('');
element = $compile(element)(scope);
diff --git a/test/unit/services/leafletHelpersSpec.js b/test/unit/services/leafletHelpersSpec.js
index a46320bc..434e8448 100644
--- a/test/unit/services/leafletHelpersSpec.js
+++ b/test/unit/services/leafletHelpersSpec.js
@@ -41,6 +41,52 @@
});
});
+ describe('isValidCenter', function () {
+ beforeEach(function() {
+ return this.subject = this.subject.isValidCenter;
+ });
+
+ describe('is valid', function () {
+ it('should accept', function () {
+ return expect(this.subject({lat: 0, lng: 0, zoom:1})).toBeTruthy();
+ });
+ });
+
+ describe('is invalid', function () {
+ it('null', function () {
+ return expect(this.subject(null)).toBeFalsy();
+ });
+
+ it('undefined', function () {
+ return expect(this.subject(undefined)).toBeFalsy();
+ });
+
+ it('missing longitude', function () {
+ return expect(this.subject({lat: 0, zoom:1})).toBeFalsy();
+ });
+
+ it('missing latitude', function () {
+ return expect(this.subject({lng: 0, zoom:1})).toBeFalsy();
+ });
+
+ it('invalid longitude', function () {
+ return expect(this.subject({lat: 0, lng: '0', zoom:1})).toBeFalsy();
+ });
+
+ it('invalid latitude', function () {
+ return expect(this.subject({lat: '0', lng: 0, zoom:1})).toBeFalsy();
+ });
+
+ it('null longitude', function () {
+ return expect(this.subject({lat: 0, lng: null, zoom:1})).toBeFalsy();
+ });
+
+ it('null latitude', function () {
+ return expect(this.subject({lat: null, lng: 0, zoom:1})).toBeFalsy();
+ });
+ });
+ });
+
describe('defaultTo', function() {
beforeEach(function() {
return this.subject = this.subject.defaultTo;