From b8a10e6dcf00da3519ccb9e43d1c2ce0db422557 Mon Sep 17 00:00:00 2001 From: Moriel Schottlender Date: Thu, 2 Nov 2017 16:13:43 -0700 Subject: [PATCH] RCFilters: Remove excluded params from URL This was gone unnoticed in the previous upgrade of the UriProcessor but should be reimplemented: excluded parameters (sticky) should be excluded from the URL. They should be merged into the uri values so that their **values** are passing through, but the eventual result of the URI query itself should not have them. Change-Id: I06bf2f4da54297e2ec6962dcadb7a4924351cc35 --- .../mw.rcfilters.UriProcessor.js | 3 +++ .../mediawiki.rcfilters/UriProcessor.test.js | 20 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.UriProcessor.js b/resources/src/mediawiki.rcfilters/mw.rcfilters.UriProcessor.js index 53557f641f..0e20e3f08b 100644 --- a/resources/src/mediawiki.rcfilters/mw.rcfilters.UriProcessor.js +++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.UriProcessor.js @@ -92,6 +92,9 @@ ) ); + // Remove excluded params from the url + uri.query = this.filtersModel.removeExcludedParams( uri.query ); + // Reapply unrecognized params and url version uri.query = $.extend( true, {}, uri.query, unrecognizedParams, { urlversion: '2' } ); diff --git a/tests/qunit/suites/resources/mediawiki.rcfilters/UriProcessor.test.js b/tests/qunit/suites/resources/mediawiki.rcfilters/UriProcessor.test.js index 534af86d64..2bc9c211a2 100644 --- a/tests/qunit/suites/resources/mediawiki.rcfilters/UriProcessor.test.js +++ b/tests/qunit/suites/resources/mediawiki.rcfilters/UriProcessor.test.js @@ -25,6 +25,15 @@ { name: 'filter5', cssClass: 'filter5class' }, { name: 'filter6' } // Not supporting highlights ] + }, { + name: 'group4', + title: 'Group 4', + type: 'boolean', + isSticky: true, + filters: [ + { name: 'stickyFilter7', cssClass: 'filter7class' }, + { name: 'stickyFilter8', cssClass: 'filter8class' } + ] } ], minimalDefaultParams = { filter1: '1', @@ -85,6 +94,17 @@ { urlversion: '2', filter2: '1', group3: 'filter5', foo: 'bar' }, 'Model state is reflected in the updated URI with existing uri params' ); + + // Update the model with sticky filter + filtersModel.toggleFiltersSelected( { + group4__stickyFilter7: true + } ); + + assert.deepEqual( + ( uriProcessor.getUpdatedUri( {} ) ).query, + { urlversion: '2', filter2: '1', group3: 'filter5' }, + 'Sticky parameters are not reflected in the URI query' + ); } ); QUnit.test( 'updateModelBasedOnQuery', function ( assert ) { -- 2.20.1