summaryrefslogtreecommitdiff
path: root/test/specs/helpers/buildURL.spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/specs/helpers/buildURL.spec.js')
-rw-r--r--test/specs/helpers/buildURL.spec.js75
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');
+ });
+});