aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/Resource.js9
-rw-r--r--src/services.js4
-rw-r--r--test/ResourceSpec.js20
3 files changed, 25 insertions, 8 deletions
diff --git a/src/Resource.js b/src/Resource.js
index ba460c30..1279dc54 100644
--- a/src/Resource.js
+++ b/src/Resource.js
@@ -1,3 +1,5 @@
+
+
function Route(template, defaults) {
this.template = template = template + '#';
this.defaults = defaults || {};
@@ -86,7 +88,7 @@ ResourceFactory.prototype = {
throw "Expected between 0-3 arguments [params, data, callback], got " + arguments.length + " arguments.";
}
- var value = action.isArray ? [] : new Resource(data;)
+ var value = action.isArray ? [] : new Resource(data)
self.xhr(
action.method,
route.url(extend({}, action.params || {}, extractParams(data), params)),
@@ -94,8 +96,7 @@ ResourceFactory.prototype = {
function(status, response, clear) {
if (status == 200) {
if (action.isArray) {
- if (action.cacheThenRetrieve)
- value = [];
+ value.length = 0;
foreach(response, function(item){
value.push(new Resource(item));
});
@@ -107,7 +108,7 @@ ResourceFactory.prototype = {
throw {status: status, response:response, message: status + ": " + response};
}
},
- action.cacheThenRetrieve
+ action.verifyCache
);
return value;
};
diff --git a/src/services.js b/src/services.js
index 64f2ea4f..ed6f73ad 100644
--- a/src/services.js
+++ b/src/services.js
@@ -313,7 +313,7 @@ angularService('$xhr.bulk', function($xhr, $error, $log){
angularService('$xhr.cache', function($xhr){
var inflight = {}, self = this;;
- function cache(method, url, post, callback, cacheThenRetrieve){
+ function cache(method, url, post, callback, verifyCache){
if (isFunction(post)) {
callback = post;
post = null;
@@ -322,7 +322,7 @@ angularService('$xhr.cache', function($xhr){
var data;
if (data = cache.data[url]) {
callback(200, copy(data.value));
- if (!cacheThenRetrieve)
+ if (!verifyCache)
return;
}
diff --git a/test/ResourceSpec.js b/test/ResourceSpec.js
index 4ab3537c..18b3979b 100644
--- a/test/ResourceSpec.js
+++ b/test/ResourceSpec.js
@@ -30,8 +30,7 @@ describe("resource", function() {
it("should build resource with default param", function(){
xhr.expectGET('/Order/123/Line/456.visa?minimum=0.05').respond({id:'abc'});
- xhr.expectGET('/Order/123/Line/456.visa?minimum=0.05').respond({id:'ddd'});
- var LineItem = resource.route('/Order/:orderId/Line/:id:verb', {orderId: '123', id: '@id.key', verb:'.visa', minimum:0.05});
+ var LineItem = resource.route('/Order/:orderId/Line/:id:verb', {orderId: '123', id: '@id.key', verb:'.visa', minimum:0.05}, {verifyCache: 'blah'});
var item = LineItem.get({id:456});
xhr.flush();
nakedExpect(item).toEqual({id:'abc'});
@@ -136,6 +135,23 @@ describe("resource", function() {
expect(person.name).toEqual('misko');
});
+ it('should return the same object when verifying the cache', function(){
+ var scope = angular.compile('<div></div>');
+ var Person = scope.$resource('/Person/:id', null, {query: {method:'GET', isArray: true, verifyCache: true}});
+ scope.$browser.xhr.expectGET('/Person/123').respond('[\n{\nname:\n"misko"\n}\n]');
+ var person = Person.query({id:123});
+ scope.$browser.xhr.flush();
+ expect(person[0].name).toEqual('misko');
+
+ scope.$browser.xhr.expectGET('/Person/123').respond('[\n{\nname:\n"rob"\n}\n]');
+ var person2 = Person.query({id:123});
+ expect(person2[0].name).toEqual('misko');
+ var person2Cache = person2;
+ scope.$browser.xhr.flush();
+ expect(person2Cache).toEqual(person2);
+ expect(person2[0].name).toEqual('rob');
+ });
+
describe('failure mode', function(){
it('should report error when non 200', function(){
xhr.expectGET('/CreditCard/123').respond(500, "Server Error");