From 4e6e715f1fc876470eb623516f6dc01da87eb8b1 Mon Sep 17 00:00:00 2001 From: Jake McDermott Date: Sun, 18 Nov 2018 22:36:34 -0500 Subject: [PATCH] add parametrized unit tests for querystring module --- __tests__/qs.test.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 __tests__/qs.test.js diff --git a/__tests__/qs.test.js b/__tests__/qs.test.js new file mode 100644 index 0000000000..d2f4c92985 --- /dev/null +++ b/__tests__/qs.test.js @@ -0,0 +1,29 @@ +import { encodeQueryString, parseQueryString } from '../src/qs'; + +describe('qs (qs.js)', () => { + test('encodeQueryString returns the expected queryString', () => { + [ + [null, ''], + [{}, ''], + [{ order_by: 'name', page: 1, page_size: 5 }, 'order_by=name&page=1&page_size=5'], + [{ '-order_by': 'name', page: '1', page_size: 5 }, '-order_by=name&page=1&page_size=5'], + ] + .forEach(([params, expectedQueryString]) => { + const actualQueryString = encodeQueryString(params); + + expect(actualQueryString).toEqual(expectedQueryString); + }); + }); + + test('parseQueryString returns the expected queryParams', () => { + [ + ['order_by=name&page=1&page_size=5', ['page', 'page_size'], { order_by: 'name', page: 1, page_size: 5 }], + ['order_by=name&page=1&page_size=5', ['page_size'], { order_by: 'name', page: '1', page_size: 5 }], + ] + .forEach(([queryString, integerFields, expectedQueryParams]) => { + const actualQueryParams = parseQueryString(queryString, integerFields); + + expect(actualQueryParams).toEqual(expectedQueryParams) + }); + }); +});