diff --git a/test/specs/helpers/buildURL.spec.js b/test/specs/helpers/buildURL.spec.js new file mode 100644 index 0000000000000000000000000000000000000000..453c1f9f927af214e2211a827174e177687458d2 --- /dev/null +++ b/test/specs/helpers/buildURL.spec.js @@ -0,0 +1,66 @@ +var buildURL = require('../../../lib/helpers/buildURL'); + +describe('helpers::buildURL', function () { + it('should support null params', function () { + expect(buildURL('/foo')).toEqual('/foo'); + }); + + it('should support params', function () { + expect(buildURL('/foo', { + foo: 'bar' + })).toEqual('/foo?foo=bar'); + }); + + it('should support object params', function () { + expect(buildURL('/foo', { + foo: { + bar: 'baz' + } + })).toEqual('/foo?foo=' + encodeURI('{"bar":"baz"}')); + }); + + it('should support date params', function () { + var date = new Date(); + + expect(buildURL('/foo', { + date: date + })).toEqual('/foo?date=' + date.toISOString()); + }); + + it('should support array params', function () { + expect(buildURL('/foo', { + foo: ['bar', 'baz'] + })).toEqual('/foo?foo[]=bar&foo[]=baz'); + }); + + it('should support special char params', function () { + expect(buildURL('/foo', { + foo: '@:$, ' + })).toEqual('/foo?foo=@:$,+'); + }); + + it('should support existing params', function () { + expect(buildURL('/foo?foo=bar', { + bar: 'baz' + })).toEqual('/foo?foo=bar&bar=baz'); + }); + + it('should support "length" parameter', function () { + expect(buildURL('/foo', { + query: 'bar', + start: 0, + length: 5 + })).toEqual('/foo?query=bar&start=0&length=5'); + }); + + it('should use serializer if provided', function () { + serializer = sinon.stub(); + params = {foo: 'bar'}; + serializer.returns('foo=bar'); + expect(buildURL('/foo', params, serializer)).toEqual('/foo?foo=bar'); + expect(serializer.calledOnce).toBe(true); + expect(serializer.calledWith(params)).toBe(true); + }) +}); + +