From 4909d1d39d61d6945a0820a5a7276c1e657ba262 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjam=C3=ADn=20Eidelman?= Date: Mon, 20 Aug 2012 19:47:26 -0300 Subject: [PATCH] fix($resource): allow falsy values in URL parameters Close #1212 when a param value was 0 (or false) it was ignored and removed from url. after this fix that only happens if the value is undefined or null. --- src/ngResource/resource.js | 3 ++- test/ngResource/resourceSpec.js | 20 ++++++++++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/ngResource/resource.js b/src/ngResource/resource.js index cd03d2d25467..0a40cedd8a2e 100644 --- a/src/ngResource/resource.js +++ b/src/ngResource/resource.js @@ -285,7 +285,8 @@ angular.module('ngResource', ['ng']). params = params || {}; forEach(this.urlParams, function(_, urlParam){ - if (val = (params[urlParam] || self.defaults[urlParam])) { + val = params.hasOwnProperty(urlParam) ? params[urlParam] : self.defaults[urlParam]; + if (isDefined(val) && val !== null) { encodedVal = encodeUriSegment(val); url = url.replace(new RegExp(":" + urlParam + "(\\W)", "g"), encodedVal + "$1"); } else { diff --git a/test/ngResource/resourceSpec.js b/test/ngResource/resourceSpec.js index 37a8d568716f..dc837f8030b2 100644 --- a/test/ngResource/resourceSpec.js +++ b/test/ngResource/resourceSpec.js @@ -51,14 +51,22 @@ describe("resource", function() { it('should ignore slashes of undefinend parameters', function() { var R = $resource('/Path/:a/:b/:c'); - $httpBackend.when('GET').respond('{}'); - $httpBackend.expect('GET', '/Path'); - $httpBackend.expect('GET', '/Path/1'); - $httpBackend.expect('GET', '/Path/2/3'); - $httpBackend.expect('GET', '/Path/4/5'); - $httpBackend.expect('GET', '/Path/6/7/8'); + $httpBackend.when('GET', '/Path').respond('{}'); + $httpBackend.when('GET', '/Path/0').respond('{}'); + $httpBackend.when('GET', '/Path/false').respond('{}'); + $httpBackend.when('GET', '/Path').respond('{}'); + $httpBackend.when('GET', '/Path/').respond('{}'); + $httpBackend.when('GET', '/Path/1').respond('{}'); + $httpBackend.when('GET', '/Path/2/3').respond('{}'); + $httpBackend.when('GET', '/Path/4/5').respond('{}'); + $httpBackend.when('GET', '/Path/6/7/8').respond('{}'); R.get({}); + R.get({a:0}); + R.get({a:false}); + R.get({a:null}); + R.get({a:undefined}); + R.get({a:''}); R.get({a:1}); R.get({a:2, b:3}); R.get({a:4, c:5});