Add objectToQueryString utility function and it's unit tests

This commit is contained in:
Rohit Rathi
2019-10-12 01:46:05 +05:30
parent cd719a57d9
commit fc8f428f12
2 changed files with 56 additions and 0 deletions

View File

@ -0,0 +1,27 @@
---
title: objectToQueryString
tags: utility,object,function,intermediate
---
Generates a query string from key values pairs from given object.
Attaches `?` in front of query string and ignores any non-string
values and their corresponding keys from given object. The function
returns empty string as a result if there is no single valid
key-value pair in given object, else returns generated query string.
```js
const objectToQueryString = (queryParameters) => {
return queryParameters
? Object.entries(queryParameters).reduce((queryString, [key, val], index) => {
const symbol = index === 0 ? '?' : '&';
queryString += (typeof val === "string") ? `${symbol}${key}=${val}` : '';
return queryString;
}, '')
: '';
};
```
```js
objectToQueryString({page: '1', size: "2kg", key: undefined}); // '?page=1&size=2kg'
```

View File

@ -0,0 +1,29 @@
const {objectToQueryString} = require('./_30s.js');
test('objectToQueryString is a Function', () => {
expect(objectToQueryString).toBeInstanceOf(Function);
});
test("{page: '1', size: '2kg', key: '21'} to give '?page=1&size=2kg&key=21'", () => {
expect(
objectToQueryString({page: '1', size: '2kg', key: '21'})
).toEqual('?page=1&size=2kg&key=21');
});
test("{page: '1', size: '2kg', key: undefined} to give '?page=1&size=2kg'", () => {
expect(
objectToQueryString({page: '1', size: '2kg', key: undefined})
).toEqual('?page=1&size=2kg');
});
test("{} to give ''", () => {
expect(
objectToQueryString({})
).toEqual('');
});
test("{page: 1, size: null, key: undefined} to give ''", () => {
expect(
objectToQueryString({page: 1, size: null, key: undefined})
).toEqual('');
});