From 315e3802a8d9ba8c363af65c4973bc6615f0e99b Mon Sep 17 00:00:00 2001 From: Senthil Krishnasamy Date: Tue, 9 Apr 2019 13:32:36 -0700 Subject: [PATCH] fix(CP): ES-156 Added unit test cases. --- .../theme/common/faceted-search.spec.js | 30 ++++++++++++++++++- .../test-unit/theme/common/url-utils.spec.js | 20 +++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/assets/js/test-unit/theme/common/faceted-search.spec.js b/assets/js/test-unit/theme/common/faceted-search.spec.js index d907ce1af3..649c859076 100644 --- a/assets/js/test-unit/theme/common/faceted-search.spec.js +++ b/assets/js/test-unit/theme/common/faceted-search.spec.js @@ -46,6 +46,12 @@ describe('FacetedSearch', () => { '' + '' + '' + + '
' + + '' + + '' + + '' + + '' + + '
' + '' + ''; @@ -216,13 +222,35 @@ describe('FacetedSearch', () => { expect(urlUtils.goToUrl).not.toHaveBeenCalled(); }); - it('should prevent default event', function() { + it('should prevent default event', () => { hooks.emit(eventName, event); expect(event.preventDefault).toHaveBeenCalled(); }); }); + describe('when price range form is submitted with other facets selected', () => { + let event; + let eventName; + + beforeEach(() => { + eventName = 'facetedSearch-range-submitted'; + event = { + currentTarget: '#facet-range-form-with-other-facets', + preventDefault: jasmine.createSpy('preventDefault'), + }; + + spyOn(urlUtils, 'goToUrl'); + spyOn(facetedSearch.priceRangeValidator, 'areAll').and.returnValue(true); + }); + + it('send `min_price` and `max_price` query params if form is valid', () => { + hooks.emit(eventName, event); + + expect(urlUtils.goToUrl).toHaveBeenCalledWith('/context.html?brand=item1&brand=item2&min_price=0&max_price=50'); + }); + }); + describe('when sort filter is submitted', () => { let event; let eventName; diff --git a/assets/js/test-unit/theme/common/url-utils.spec.js b/assets/js/test-unit/theme/common/url-utils.spec.js index 3b84b75334..0feb52de15 100644 --- a/assets/js/test-unit/theme/common/url-utils.spec.js +++ b/assets/js/test-unit/theme/common/url-utils.spec.js @@ -24,5 +24,25 @@ describe('Url Utilities', () => { expect(queryString).toEqual(expectedQueryString); }); + + it('should parse the input query params from the input array and return the query string object', () => { + const queryInput = [ + 'brand[]=38', + 'brand[]=39', + 'brand[]=40', + 'search_query=', + 'min_price=15', + 'max_price=40', + ]; + const expectedResult = { + 'brand[]': ['38', '39', '40'], + max_price: '40', + min_price: '15', + search_query: '', + }; + const queryStringObj = urlUtil.parseQueryParams(queryInput); + + expect(queryStringObj).toEqual(expectedResult); + }); }); });