aboutsummaryrefslogtreecommitdiffstats
path: root/test/ng/cookiesSpec.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/ng/cookiesSpec.js')
-rw-r--r--test/ng/cookiesSpec.js97
1 files changed, 97 insertions, 0 deletions
diff --git a/test/ng/cookiesSpec.js b/test/ng/cookiesSpec.js
new file mode 100644
index 00000000..5427ac36
--- /dev/null
+++ b/test/ng/cookiesSpec.js
@@ -0,0 +1,97 @@
+'use strict';
+
+describe('$cookies', function() {
+ beforeEach(module(function($provide) {
+ $provide.factory('$browser', function(){
+ return angular.extend(new angular.mock.$Browser(), {cookieHash: {preexisting:'oldCookie'}});
+ });
+ }));
+
+
+ it('should provide access to existing cookies via object properties and keep them in sync',
+ inject(function($cookies, $browser, $rootScope) {
+ expect($cookies).toEqual({'preexisting': 'oldCookie'});
+
+ // access internal cookie storage of the browser mock directly to simulate behavior of
+ // document.cookie
+ $browser.cookieHash['brandNew'] = 'cookie';
+ $browser.poll();
+
+ expect($cookies).toEqual({'preexisting': 'oldCookie', 'brandNew':'cookie'});
+
+ $browser.cookieHash['brandNew'] = 'cookie2';
+ $browser.poll();
+ expect($cookies).toEqual({'preexisting': 'oldCookie', 'brandNew':'cookie2'});
+
+ delete $browser.cookieHash['brandNew'];
+ $browser.poll();
+ expect($cookies).toEqual({'preexisting': 'oldCookie'});
+ }));
+
+
+ it('should create or update a cookie when a value is assigned to a property',
+ inject(function($cookies, $browser, $rootScope) {
+ $cookies.oatmealCookie = 'nom nom';
+ $rootScope.$digest();
+
+ expect($browser.cookies()).
+ toEqual({'preexisting': 'oldCookie', 'oatmealCookie':'nom nom'});
+
+ $cookies.oatmealCookie = 'gone';
+ $rootScope.$digest();
+
+ expect($browser.cookies()).
+ toEqual({'preexisting': 'oldCookie', 'oatmealCookie': 'gone'});
+ }));
+
+
+ it('should drop or reset any cookie that was set to a non-string value',
+ inject(function($cookies, $browser, $rootScope) {
+ $cookies.nonString = [1, 2, 3];
+ $cookies.nullVal = null;
+ $cookies.undefVal = undefined;
+ $cookies.preexisting = function() {};
+ $rootScope.$digest();
+ expect($browser.cookies()).toEqual({'preexisting': 'oldCookie'});
+ expect($cookies).toEqual({'preexisting': 'oldCookie'});
+ }));
+
+
+ it('should remove a cookie when a $cookies property is deleted',
+ inject(function($cookies, $browser, $rootScope) {
+ $cookies.oatmealCookie = 'nom nom';
+ $rootScope.$digest();
+ $browser.poll();
+ expect($browser.cookies()).
+ toEqual({'preexisting': 'oldCookie', 'oatmealCookie':'nom nom'});
+
+ delete $cookies.oatmealCookie;
+ $rootScope.$digest();
+
+ expect($browser.cookies()).toEqual({'preexisting': 'oldCookie'});
+ }));
+
+
+ it('should drop or reset cookies that browser refused to store',
+ inject(function($cookies, $browser, $rootScope) {
+ var i, longVal;
+
+ for (i=0; i<5000; i++) {
+ longVal += '*';
+ }
+
+ //drop if no previous value
+ $cookies.longCookie = longVal;
+ $rootScope.$digest();
+ expect($cookies).toEqual({'preexisting': 'oldCookie'});
+
+
+ //reset if previous value existed
+ $cookies.longCookie = 'shortVal';
+ $rootScope.$digest();
+ expect($cookies).toEqual({'preexisting': 'oldCookie', 'longCookie': 'shortVal'});
+ $cookies.longCookie = longVal;
+ $rootScope.$digest();
+ expect($cookies).toEqual({'preexisting': 'oldCookie', 'longCookie': 'shortVal'});
+ }));
+});