diff options
| -rw-r--r-- | src/Resource.js | 2 | ||||
| -rw-r--r-- | test/ResourceSpec.js | 8 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/Resource.js b/src/Resource.js index 4fb86229..b686d930 100644 --- a/src/Resource.js +++ b/src/Resource.js @@ -26,7 +26,7 @@ Route.prototype = { var query = []; forEachSorted(params, function(value, key){ if (!self.urlParams[key]) { - query.push(encodeUriSegment(key) + '=' + encodeUriSegment(value)); + query.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); } }); url = url.replace(/\/*$/, ''); diff --git a/test/ResourceSpec.js b/test/ResourceSpec.js index 2c084ec1..633fd605 100644 --- a/test/ResourceSpec.js +++ b/test/ResourceSpec.js @@ -55,10 +55,16 @@ describe("resource", function() { //buzz api which uses @self var R = resource.route('/Path/:a'); - xhr.expectGET('/Path/doh@foo?bar=baz@1').respond({}); + xhr.expectGET('/Path/doh@foo?bar=baz%401').respond({}); R.get({a: 'doh@foo', bar: 'baz@1'}); }); + it('should encode & in url params', function() { + var R = resource.route('/Path/:a'); + xhr.expectGET('/Path/doh&foo?bar=baz%261').respond({}); + R.get({a: 'doh&foo', bar: 'baz&1'}); + }); + it("should build resource with default param", function(){ xhr.expectGET('/Order/123/Line/456.visa?minimum=0.05').respond({id:'abc'}); var LineItem = resource.route('/Order/:orderId/Line/:id:verb', {orderId: '123', id: '@id.key', verb:'.visa', minimum:0.05}); |
