@lando/platformsh
Version:
A Lando plugin that provides a tight integration with Platform.sh.
165 lines (127 loc) • 5.35 kB
JavaScript
/* global expect*/
import { expect } from 'chai';
import toQueryString from '../src';
describe('object-to-querystring tests', () => {
it('Convert simple object to query string', () => {
const queryString = toQueryString({
'test': 'testValue'
});
expect(queryString).to.equal('test=testValue');
});
it('Convert simple object with a number to query string', () => {
const queryString = toQueryString({
'test': 1
});
expect(queryString).to.equal('test=1');
});
it('Convert simple object with array to query string with options', () => {
const queryString = toQueryString({
'test': ['testValue', 'testValue2']
}, '', {
arrayPrefix: '[]'
});
expect(queryString).to.equal('test[]=testValue&test[]=testValue2');
});
it('Convert complex object to query string', () => {
const queryString = toQueryString({
'test': 'testValue',
'test2': ['a', 'b', 'c'],
'test3': 'testValue2'
});
expect(queryString).to.equal('test=testValue&test2=a&test2=b&test2=c&test3=testValue2');
});
it('Convert complex 1 layer deep object to query string', () => {
const queryString = toQueryString({
'test': {'deep': 'testValueDeep'},
'test2': ['a', 'b', 'c'],
'test3': 'testValue2'
});
expect(queryString).to.equal('test[deep]=testValueDeep&test2=a&test2=b&test2=c&test3=testValue2');
});
it('Convert complex 2 layer deep object to query string', () => {
const queryString = toQueryString({
'test': {'deep': {'deep2': 'testValueDeep'}},
'test2': ['a', 'b', 'c'],
'test3': 'testValue2'
});
expect(queryString).to.equal('test[deep][deep2]=testValueDeep&test2=a&test2=b&test2=c&test3=testValue2');
});
it('Convert complex 2 layer deep object and multiple keys to query string', () => {
const queryString = toQueryString({
'test': {'deep': {'deep3': 'testValueDeep'}, 'deep2': 'testd'},
'test2': ['a', 'b', 'c'],
'test3': 'testValue2'
});
expect(queryString).to.equal(
'test[deep][deep3]=testValueDeep&test[deep2]=testd&test2=a&test2=b&test2=c&test3=testValue2'
);
});
it('Convert complex 2 layer deep object, multiple keys and array to query string', () => {
const queryString = toQueryString({
'test': {'deep': {'deep3': 'testValueDeep', 'test2': ['a', 'b', 'c']}, 'deep2': 'testd'},
'test2': ['a', 'b', 'c'],
'test3': 'testValue2'
});
expect(queryString).to.equal(
'test[deep][deep3]=testValueDeep&test[deep][test2]=a&test[deep][test2]=b&test[deep][test2]=c&test[deep2]=testd&test2=a&test2=b&test2=c&test3=testValue2'// eslint-disable-line
);
});
it('Convert complex 1 layer deep object in an array to query string', () => {
const queryString = toQueryString({
'test': {'deep': {'deep3': 'testValueDeep', 'test2': ['a', 'b', 'c']}, 'deep2': 'testd'},
'test2': [{'deep': 'testDeepInArray', 'deep2': 'testDeepInArray2'}, 'b', 'c'],
'test3': 'testValue2'
});
expect(queryString).to.equal(
'test[deep][deep3]=testValueDeep&test[deep][test2]=a&test[deep][test2]=b&test[deep][test2]=c&test[deep2]=testd&test2[deep]=testDeepInArray&test2[deep2]=testDeepInArray2&test2=b&test2=c&test3=testValue2'// eslint-disable-line
);
});
it('Convert complex 1 layer deep object in an array to query string with prefix options', () => {
const queryString = toQueryString({
'test': {'deep': {'deep3': 'testValueDeep', 'test2': ['a', 'b', 'c']}, 'deep2': 'testd'},
'test2': [{'deep': 'testDeepInArray', 'deep2': 'testDeepInArray2'}, 'b', 'c'],
'test3': 'testValue2'
}, '', {
arrayPrefix: '[]'
});
expect(queryString).to.equal(
'test[deep][deep3]=testValueDeep&test[deep][test2][]=a&test[deep][test2][]=b&test[deep][test2][]=c&test[deep2]=testd&test2[][deep]=testDeepInArray&test2[][deep2]=testDeepInArray2&test2[]=b&test2[]=c&test3=testValue2'// eslint-disable-line
);
});
it('Convert array to query string', () => {
const queryString = toQueryString(['a', 'b']);
expect(queryString).to.equal('0=a&1=b');
});
it('Convert array to query string with prefix options', () => {
const queryString = toQueryString(['a', 'b'], '', {
arrayPrefix: '[]'
});
expect(queryString).to.equal('0[]=a&1[]=b');
});
it('Convert array in object to query string with prefix options', () => {
const queryString = toQueryString({'test': { 'array1': ['a', 'b'] }}, '', {
arrayPrefix: '[]'
});
expect(queryString).to.equal('test[array1][]=a&test[array1][]=b');
});
it('Gracefully fail with a string', () => {
const queryString = toQueryString("test");
expect(queryString).to.equal('0=t&1=e&2=s&3=t');
});
it('Gracefully fail with a number', () => {
const queryString = toQueryString(1);
expect(queryString).to.equal('');
});
it('Gracefully fail with a boolean', () => {
const queryString = toQueryString(true);
expect(queryString).to.equal('');
});
it('Gracefully fail with an empty object', () => {
const queryString = toQueryString({});
expect(queryString).to.equal('');
});
it('Gracefully fail with an empty array', () => {
const queryString = toQueryString([]);
expect(queryString).to.equal('');
});
});