From f202c420d17754fe9477344f97f4831a20362aa7 Mon Sep 17 00:00:00 2001 From: Mike Crockett Date: Tue, 11 Aug 2015 21:16:12 -0500 Subject: [PATCH 1/6] Fixing version issue where > 0.13 is required. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index caeef92..d56f7cd 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "grunt-contrib-jshint": "~0.8.0", "grunt-contrib-uglify": "*", "grunt-karma": "latest", - "karma": "~0.12.16", + "karma": "~0.13.9", "karma-jasmine": "~0.1.5", "karma-coverage": "^0.2.6", "karma-phantomjs-launcher": "~0.1.4", From 4cee9a21db3863d7b24a254b19072e161ce0bd3c Mon Sep 17 00:00:00 2001 From: Mike Crockett Date: Tue, 11 Aug 2015 21:16:42 -0500 Subject: [PATCH 2/6] Adding optional default value to 'get' and associated test cases. --- src/angular-local-storage.js | 19 ++++++++++++++----- test/spec/localStorageSpec.js | 28 ++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/src/angular-local-storage.js b/src/angular-local-storage.js index 0e3048e..cf5e6ab 100644 --- a/src/angular-local-storage.js +++ b/src/angular-local-storage.js @@ -146,21 +146,25 @@ angularLocalStorage.provider('localStorageService', function() { // Directly get a value from local storage // Example use: localStorageService.get('library'); // returns 'angular' - var getFromLocalStorage = function (key) { + var getFromLocalStorage = function (key, defaultValue) { if (!browserSupportsLocalStorage || self.storageType === 'cookie') { if (!browserSupportsLocalStorage) { $rootScope.$broadcast('LocalStorageModule.notification.warning','LOCAL_STORAGE_NOT_SUPPORTED'); } - return getFromCookies(key); + return getFromCookies(key, defaultValue); } var item = webStorage ? webStorage.getItem(deriveQualifiedKey(key)) : null; // angular.toJson will convert null to 'null', so a proper conversion is needed // FIXME not a perfect solution, since a valid 'null' string can't be stored if (!item || item === 'null') { - return null; + if (isUndefined(defaultValue)) { + return null; + } else { + return defaultValue; + } } try { @@ -323,7 +327,7 @@ angularLocalStorage.provider('localStorageService', function() { // Directly get a value from a cookie // Example use: localStorageService.cookie.get('library'); // returns 'angular' - var getFromCookies = function (key) { + var getFromCookies = function (key, defaultValue) { if (!browserSupportsCookies) { $rootScope.$broadcast('LocalStorageModule.notification.error', 'COOKIES_NOT_SUPPORTED'); return false; @@ -344,7 +348,12 @@ angularLocalStorage.provider('localStorageService', function() { } } } - return null; + + if (isUndefined(defaultValue)) { + return null; + } else { + return defaultValue; + } }; var removeFromCookies = function (key) { diff --git a/test/spec/localStorageSpec.js b/test/spec/localStorageSpec.js index 7390c94..723f01c 100644 --- a/test/spec/localStorageSpec.js +++ b/test/spec/localStorageSpec.js @@ -280,6 +280,20 @@ describe('localStorageService', function() { expectRemoving('ls.lorem.ipsum') )); + it('should be able to get with a default value', inject(function($rootScope, localStorageService) { + expect([1,2,3]).toEqual(localStorageService.get('property', [1,2,3])); + })); + + it('should be able to get with a default value and honor stored value', inject(function($rootScope, localStorageService) { + localStorageService.set('property', 'hello'); + expect('hello').toEqual(localStorageService.get('property', [1,2,3])); + })); + + it('should be able to get with a default value and not store default', inject(function(localStorageService) { + expect([1,2,3]).toEqual(localStorageService.get('property', [1,2,3])); + expect(null).toEqual(localStorageService.get('property')); + })); + it('should be able to remove multiple items', inject(function($window, localStorageService) { elmSpy = spyOn($window.localStorage, 'removeItem').andCallThrough(); localStorageService.remove('lorem.ipsum1', 'lorem.ipsum2', 'lorem.ipsum3'); @@ -600,6 +614,20 @@ describe('localStorageService', function() { expect(localStorageService.get('cookieKey')).toEqual('cookieValue'); })); + it('should be able to get cookie with a default value', inject(function($rootScope, localStorageService) { + expect([1,2,3]).toEqual(localStorageService.get('cookieKey', [1,2,3])); + })); + + it('should be able to get cookie with a default value and honor stored value', inject(function($rootScope, localStorageService) { + localStorageService.set('cookieKey', 'hello'); + expect('hello').toEqual(localStorageService.get('cookieKey', [1,2,3])); + })); + + it('should be able to get cookie with a default value and not store default', inject(function(localStorageService) { + expect([1,2,3]).toEqual(localStorageService.get('cookieKey', [1,2,3])); + expect(null).toEqual(localStorageService.get('cookieKey')); + })); + it('should be able to set individual cookie with expiry', function() { inject(expectCookieExpiry(new Date().addDays(10))); }); From 143d611d6e77c281126e4b1e7bc1a92c722ccdab Mon Sep 17 00:00:00 2001 From: Mike Crockett Date: Tue, 11 Aug 2015 21:17:13 -0500 Subject: [PATCH 3/6] Adding documentation for optional default value to 'get'. --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4ef811c..5b9c671 100644 --- a/README.md +++ b/README.md @@ -175,7 +175,8 @@ myApp.controller('MainCtrl', function($scope, localStorageService) { ###get Directly get a value from local storage.
If local storage is not supported, use cookies instead.
-**Returns:** `value from local storage` +**Usage:** `localStorageService.get(key, defaultValue[optional])` +**Returns:** `value from local storage, defaultValue if no value is stored` ```js myApp.controller('MainCtrl', function($scope, localStorageService) { //... From d4c04d1243983f8e91b73c560c50efae66273bf8 Mon Sep 17 00:00:00 2001 From: Mike Crockett Date: Wed, 12 Aug 2015 09:41:54 -0500 Subject: [PATCH 4/6] Trying to fix build by reverting version number. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d56f7cd..caeef92 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "grunt-contrib-jshint": "~0.8.0", "grunt-contrib-uglify": "*", "grunt-karma": "latest", - "karma": "~0.13.9", + "karma": "~0.12.16", "karma-jasmine": "~0.1.5", "karma-coverage": "^0.2.6", "karma-phantomjs-launcher": "~0.1.4", From 580558f64802c95b413d54f4314ebaea4d63373c Mon Sep 17 00:00:00 2001 From: Mike Crockett Date: Wed, 12 Aug 2015 10:10:13 -0500 Subject: [PATCH 5/6] Locking version of grunt-karma. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index caeef92..0f76f46 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "grunt-contrib-concat": "*", "grunt-contrib-jshint": "~0.8.0", "grunt-contrib-uglify": "*", - "grunt-karma": "latest", + "grunt-karma": "~0.11.1", "karma": "~0.12.16", "karma-jasmine": "~0.1.5", "karma-coverage": "^0.2.6", From 5719e5283f47a20bb097df98804b47cbf67a4683 Mon Sep 17 00:00:00 2001 From: Mike Crockett Date: Wed, 12 Aug 2015 11:59:56 -0500 Subject: [PATCH 6/6] Fixing version of angular mocks to match angular. --- bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bower.json b/bower.json index 6788478..cac508c 100644 --- a/bower.json +++ b/bower.json @@ -28,6 +28,6 @@ ], "devDependencies": { "angular": "~1.x", - "angular-mocks": "~1.2.1" + "angular-mocks": "~1.x" } }