diff options
Diffstat (limited to 'test/specs/helpers/buildURL.spec.js')
-rw-r--r-- | test/specs/helpers/buildURL.spec.js | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/test/specs/helpers/buildURL.spec.js b/test/specs/helpers/buildURL.spec.js new file mode 100644 index 0000000..7adf574 --- /dev/null +++ b/test/specs/helpers/buildURL.spec.js @@ -0,0 +1,75 @@ +var buildURL = require('../../../lib/helpers/buildURL'); +var URLSearchParams = require('url-search-params'); + +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 correct discard url hash mark', function () { + expect(buildURL('/foo?foo=bar#hash', { + query: 'baz' + })).toEqual('/foo?foo=bar&query=baz'); + }); + + 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); + }); + + it('should support URLSearchParams', function () { + expect(buildURL('/foo', new URLSearchParams('bar=baz'))).toEqual('/foo?bar=baz'); + }); +}); |