Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit 997fdea

Browse files
shahatapetebacondarwin
authored andcommitted
refactor(ngCookies): split $cookies/$cookieStore to two files
1 parent 76b1b2b commit 997fdea

File tree

5 files changed

+135
-133
lines changed

5 files changed

+135
-133
lines changed

angularFiles.js

+1
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ var angularFiles = {
9191
],
9292
'ngCookies': [
9393
'src/ngCookies/cookies.js',
94+
'src/ngCookies/cookieStore.js',
9495
'src/ngCookies/cookieWriter.js'
9596
],
9697
'ngMessages': [

src/ngCookies/cookieStore.js

+76
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
'use strict';
2+
3+
angular.module('ngCookies').
4+
/**
5+
* @ngdoc service
6+
* @name $cookieStore
7+
* @requires $cookies
8+
*
9+
* @description
10+
* Provides a key-value (string-object) storage, that is backed by session cookies.
11+
* Objects put or retrieved from this storage are automatically serialized or
12+
* deserialized by angular's toJson/fromJson.
13+
*
14+
* Requires the {@link ngCookies `ngCookies`} module to be installed.
15+
*
16+
* @example
17+
*
18+
* ```js
19+
* angular.module('cookieStoreExample', ['ngCookies'])
20+
* .controller('ExampleController', ['$cookieStore', function($cookieStore) {
21+
* // Put cookie
22+
* $cookieStore.put('myFavorite','oatmeal');
23+
* // Get cookie
24+
* var favoriteCookie = $cookieStore.get('myFavorite');
25+
* // Removing a cookie
26+
* $cookieStore.remove('myFavorite');
27+
* }]);
28+
* ```
29+
*/
30+
factory('$cookieStore', ['$cookies', function($cookies) {
31+
32+
return {
33+
/**
34+
* @ngdoc method
35+
* @name $cookieStore#get
36+
*
37+
* @description
38+
* Returns the value of given cookie key
39+
*
40+
* @param {string} key Id to use for lookup.
41+
* @returns {Object} Deserialized cookie value, undefined if the cookie does not exist.
42+
*/
43+
get: function(key) {
44+
var value = $cookies[key];
45+
return value ? angular.fromJson(value) : value;
46+
},
47+
48+
/**
49+
* @ngdoc method
50+
* @name $cookieStore#put
51+
*
52+
* @description
53+
* Sets a value for given cookie key
54+
*
55+
* @param {string} key Id for the `value`.
56+
* @param {Object} value Value to be stored.
57+
*/
58+
put: function(key, value) {
59+
$cookies[key] = angular.toJson(value);
60+
},
61+
62+
/**
63+
* @ngdoc method
64+
* @name $cookieStore#remove
65+
*
66+
* @description
67+
* Remove given cookie
68+
*
69+
* @param {string} key Id of the key-value pair to delete.
70+
*/
71+
remove: function(key) {
72+
delete $cookies[key];
73+
}
74+
};
75+
76+
}]);

src/ngCookies/cookies.js

-75
Original file line numberDiff line numberDiff line change
@@ -120,79 +120,4 @@ angular.module('ngCookies', ['ng']).
120120
}
121121
}
122122
}
123-
}]).
124-
125-
126-
/**
127-
* @ngdoc service
128-
* @name $cookieStore
129-
* @requires $cookies
130-
*
131-
* @description
132-
* Provides a key-value (string-object) storage, that is backed by session cookies.
133-
* Objects put or retrieved from this storage are automatically serialized or
134-
* deserialized by angular's toJson/fromJson.
135-
*
136-
* Requires the {@link ngCookies `ngCookies`} module to be installed.
137-
*
138-
* @example
139-
*
140-
* ```js
141-
* angular.module('cookieStoreExample', ['ngCookies'])
142-
* .controller('ExampleController', ['$cookieStore', function($cookieStore) {
143-
* // Put cookie
144-
* $cookieStore.put('myFavorite','oatmeal');
145-
* // Get cookie
146-
* var favoriteCookie = $cookieStore.get('myFavorite');
147-
* // Removing a cookie
148-
* $cookieStore.remove('myFavorite');
149-
* }]);
150-
* ```
151-
*/
152-
factory('$cookieStore', ['$cookies', function($cookies) {
153-
154-
return {
155-
/**
156-
* @ngdoc method
157-
* @name $cookieStore#get
158-
*
159-
* @description
160-
* Returns the value of given cookie key
161-
*
162-
* @param {string} key Id to use for lookup.
163-
* @returns {Object} Deserialized cookie value, undefined if the cookie does not exist.
164-
*/
165-
get: function(key) {
166-
var value = $cookies[key];
167-
return value ? angular.fromJson(value) : value;
168-
},
169-
170-
/**
171-
* @ngdoc method
172-
* @name $cookieStore#put
173-
*
174-
* @description
175-
* Sets a value for given cookie key
176-
*
177-
* @param {string} key Id for the `value`.
178-
* @param {Object} value Value to be stored.
179-
*/
180-
put: function(key, value) {
181-
$cookies[key] = angular.toJson(value);
182-
},
183-
184-
/**
185-
* @ngdoc method
186-
* @name $cookieStore#remove
187-
*
188-
* @description
189-
* Remove given cookie
190-
*
191-
* @param {string} key Id of the key-value pair to delete.
192-
*/
193-
remove: function(key) {
194-
delete $cookies[key];
195-
}
196-
};
197-
198123
}]);

test/ngCookies/cookieStoreSpec.js

+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
'use strict';
2+
3+
describe('$cookieStore', function() {
4+
var mockedCookies;
5+
6+
beforeEach(function() {
7+
var lastCookies = {};
8+
mockedCookies = {};
9+
module('ngCookies', {
10+
$$cookieWriter: function(name, value) {
11+
mockedCookies[name] = value;
12+
},
13+
$$cookieReader: function() {
14+
if (!angular.equals(lastCookies, mockedCookies)) {
15+
lastCookies = angular.copy(mockedCookies);
16+
mockedCookies = angular.copy(mockedCookies);
17+
}
18+
return mockedCookies;
19+
}
20+
});
21+
});
22+
23+
it('should serialize objects to json', inject(function($cookieStore, $$cookieReader, $rootScope) {
24+
$cookieStore.put('objectCookie', {id: 123, name: 'blah'});
25+
$rootScope.$digest();
26+
expect($$cookieReader()).toEqual({'objectCookie': '{"id":123,"name":"blah"}'});
27+
}));
28+
29+
30+
it('should deserialize json to object', inject(function($cookieStore, $browser, $$cookieWriter) {
31+
$$cookieWriter('objectCookie', '{"id":123,"name":"blah"}');
32+
$browser.poll();
33+
expect($cookieStore.get('objectCookie')).toEqual({id: 123, name: 'blah'});
34+
}));
35+
36+
37+
it('should delete objects from the store when remove is called', inject(function($cookieStore, $browser, $rootScope, $$cookieReader) {
38+
$cookieStore.put('gonner', { "I'll":"Be Back"});
39+
$rootScope.$digest(); //force eval in test
40+
$browser.poll();
41+
expect($$cookieReader()).toEqual({'gonner': '{"I\'ll":"Be Back"}'});
42+
43+
$cookieStore.remove('gonner');
44+
$rootScope.$digest();
45+
expect($$cookieReader()).toEqual({});
46+
}));
47+
it('should handle empty string value cookies', inject(function($cookieStore, $browser, $rootScope, $$cookieReader) {
48+
$cookieStore.put("emptyCookie",'');
49+
$rootScope.$digest();
50+
expect($$cookieReader()).
51+
toEqual({ 'emptyCookie': '""' });
52+
expect($cookieStore.get("emptyCookie")).toEqual('');
53+
54+
mockedCookies['blankCookie'] = '';
55+
$browser.poll();
56+
expect($cookieStore.get("blankCookie")).toEqual('');
57+
}));
58+
});

test/ngCookies/cookiesSpec.js

-58
Original file line numberDiff line numberDiff line change
@@ -94,61 +94,3 @@ describe('$cookies', function() {
9494
expect($$cookieReader()).toEqual({'preexisting': 'oldCookie'});
9595
}));
9696
});
97-
98-
99-
describe('$cookieStore', function() {
100-
var mockedCookies;
101-
102-
beforeEach(function() {
103-
var lastCookies = {};
104-
mockedCookies = {};
105-
module('ngCookies', {
106-
$$cookieWriter: function(name, value) {
107-
mockedCookies[name] = value;
108-
},
109-
$$cookieReader: function() {
110-
if (!angular.equals(lastCookies, mockedCookies)) {
111-
lastCookies = angular.copy(mockedCookies);
112-
mockedCookies = angular.copy(mockedCookies);
113-
}
114-
return mockedCookies;
115-
}
116-
});
117-
});
118-
119-
it('should serialize objects to json', inject(function($cookieStore, $$cookieReader, $rootScope) {
120-
$cookieStore.put('objectCookie', {id: 123, name: 'blah'});
121-
$rootScope.$digest();
122-
expect($$cookieReader()).toEqual({'objectCookie': '{"id":123,"name":"blah"}'});
123-
}));
124-
125-
126-
it('should deserialize json to object', inject(function($cookieStore, $browser, $$cookieWriter) {
127-
$$cookieWriter('objectCookie', '{"id":123,"name":"blah"}');
128-
$browser.poll();
129-
expect($cookieStore.get('objectCookie')).toEqual({id: 123, name: 'blah'});
130-
}));
131-
132-
133-
it('should delete objects from the store when remove is called', inject(function($cookieStore, $browser, $rootScope, $$cookieReader) {
134-
$cookieStore.put('gonner', { "I'll":"Be Back"});
135-
$rootScope.$digest(); //force eval in test
136-
$browser.poll();
137-
expect($$cookieReader()).toEqual({'gonner': '{"I\'ll":"Be Back"}'});
138-
139-
$cookieStore.remove('gonner');
140-
$rootScope.$digest();
141-
expect($$cookieReader()).toEqual({});
142-
}));
143-
it('should handle empty string value cookies', inject(function($cookieStore, $browser, $rootScope, $$cookieReader) {
144-
$cookieStore.put("emptyCookie",'');
145-
$rootScope.$digest();
146-
expect($$cookieReader()).
147-
toEqual({ 'emptyCookie': '""' });
148-
expect($cookieStore.get("emptyCookie")).toEqual('');
149-
150-
mockedCookies['blankCookie'] = '';
151-
$browser.poll();
152-
expect($cookieStore.get("blankCookie")).toEqual('');
153-
}));
154-
});

0 commit comments

Comments
 (0)