From 7e8fb29658e7092303e5d33177bc1f8ddd9c962c Mon Sep 17 00:00:00 2001 From: Keith Grant Date: Wed, 26 Feb 2020 16:38:52 -0800 Subject: [PATCH] update qs utils to allow empty string params --- awx/ui_next/src/util/qs.js | 4 ++-- awx/ui_next/src/util/qs.test.js | 30 ++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/awx/ui_next/src/util/qs.js b/awx/ui_next/src/util/qs.js index 8cdc9cc56d..c2d25024a9 100644 --- a/awx/ui_next/src/util/qs.js +++ b/awx/ui_next/src/util/qs.js @@ -159,7 +159,7 @@ export function removeParams(config, oldParams, paramsToRemove) { }; Object.keys(oldParams).forEach(key => { const value = removeParam(oldParams[key], paramsToRemove[key]); - if (value) { + if (value !== null) { updated[key] = value; } }); @@ -205,7 +205,7 @@ export function mergeParams(oldParams, newParams) { } function mergeParam(oldVal, newVal) { - if (!newVal) { + if (!newVal && newVal !== '') { return oldVal; } if (!oldVal) { diff --git a/awx/ui_next/src/util/qs.test.js b/awx/ui_next/src/util/qs.test.js index ca52e53cc1..1f711e30f6 100644 --- a/awx/ui_next/src/util/qs.test.js +++ b/awx/ui_next/src/util/qs.test.js @@ -310,6 +310,21 @@ describe('qs (qs.js)', () => { page_size: 15, }); }); + + test('should parse empty string values', () => { + const config = { + namespace: 'bee', + defaultParams: { page: 1, page_size: 15 }, + integerFields: ['page', 'page_size'], + }; + const query = '?bee.baz=bar&bee.or__source='; + expect(parseQueryString(config, query)).toEqual({ + baz: 'bar', + page: 1, + page_size: 15, + or__source: '', + }); + }); }); describe('removeParams', () => { @@ -532,6 +547,21 @@ describe('qs (qs.js)', () => { page_size: 15, }); }); + + test('should retain empty string', () => { + const config = { + namespace: null, + defaultParams: { page: 1, page_size: 15 }, + integerFields: ['page', 'page_size'], + }; + const oldParams = { baz: '', page: 3, bag: 'boom', page_size: 15 }; + const toRemove = { bag: 'boom' }; + expect(removeParams(config, oldParams, toRemove)).toEqual({ + baz: '', + page: 3, + page_size: 15, + }); + }); }); describe('_stringToObject', () => {