aboutsummaryrefslogtreecommitdiffstats
path: root/test/ngCookies/cookiesSpec.js
diff options
context:
space:
mode:
authorMisko Hevery2012-03-26 16:22:06 -0700
committerMisko Hevery2012-03-28 11:16:36 -0700
commit7b22d59b4a16d5c50c2eee054178ba17f8038880 (patch)
tree174f4d18d3545ea9c7e2e569a82df17b8ee0d6a9 /test/ngCookies/cookiesSpec.js
parent798bca62c6f64775b85deda3713e7b6bcc7a4b4d (diff)
downloadangular.js-7b22d59b4a16d5c50c2eee054178ba17f8038880.tar.bz2
chore(ngCookies): moved to module
Diffstat (limited to 'test/ngCookies/cookiesSpec.js')
-rw-r--r--test/ngCookies/cookiesSpec.js128
1 files changed, 128 insertions, 0 deletions
diff --git a/test/ngCookies/cookiesSpec.js b/test/ngCookies/cookiesSpec.js
new file mode 100644
index 00000000..435f40b4
--- /dev/null
+++ b/test/ngCookies/cookiesSpec.js
@@ -0,0 +1,128 @@
+'use strict';
+
+describe('$cookies', function() {
+ beforeEach(module('ngCookies', 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'});
+ }));
+});
+
+
+describe('$cookieStore', function() {
+
+ beforeEach(module('ngCookies'));
+
+ it('should serialize objects to json', inject(function($cookieStore, $browser, $rootScope) {
+ $cookieStore.put('objectCookie', {id: 123, name: 'blah'});
+ $rootScope.$digest();
+ expect($browser.cookies()).toEqual({'objectCookie': '{"id":123,"name":"blah"}'});
+ }));
+
+
+ it('should deserialize json to object', inject(function($cookieStore, $browser) {
+ $browser.cookies('objectCookie', '{"id":123,"name":"blah"}');
+ $browser.poll();
+ expect($cookieStore.get('objectCookie')).toEqual({id: 123, name: 'blah'});
+ }));
+
+
+ it('should delete objects from the store when remove is called', inject(function($cookieStore, $browser, $rootScope) {
+ $cookieStore.put('gonner', { "I'll":"Be Back"});
+ $rootScope.$digest(); //force eval in test
+ $browser.poll();
+ expect($browser.cookies()).toEqual({'gonner': '{"I\'ll":"Be Back"}'});
+
+ $cookieStore.remove('gonner');
+ $rootScope.$digest();
+ expect($browser.cookies()).toEqual({});
+ }));
+});