better naming for our verify cache scheme, and tests.

This commit is contained in:
Rob Spies 2010-07-13 14:09:53 -07:00
parent 8f9bf37bcf
commit 4034a2d1e2
3 changed files with 25 additions and 8 deletions

View file

@ -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;
};

View file

@ -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;
}

View file

@ -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");