name: 'group2',
type: 'send_unselected_if_any',
fullCoverage: true,
- excludedFromSavedQueries: true,
conflicts: [ { group: 'group1', filter: 'filter1' } ],
filters: [
{ name: 'filter4', label: 'group2filter4-label', description: 'group2filter4-desc', cssClass: 'filter4class' },
}, {
name: 'group4',
type: 'single_option',
+ hidden: true,
default: 'option2',
filters: [
// NOTE: The entire group has no highlight supported
}, {
name: 'group6',
type: 'boolean',
- isSticky: true,
+ sticky: true,
filters: [
{ name: 'group6option1', label: 'group6option1-label', description: 'group6option1-desc', cssClass: 'group6opt1class' },
{ name: 'group6option2', label: 'group6option2-label', description: 'group6option2-desc', default: true, cssClass: 'group6opt2class' },
}, {
name: 'group7',
type: 'single_option',
- isSticky: true,
+ sticky: true,
default: 'group7option2',
filters: [
{ name: 'group7option1', label: 'group7option1-label', description: 'group7option1-desc', cssClass: 'group7opt1class' },
{ name: 'group7option3', label: 'group7option3-label', description: 'group7option3-desc', cssClass: 'group7opt3class' }
]
} ],
+ shortFilterDefinition = [ {
+ name: 'group1',
+ type: 'send_unselected_if_any',
+ filters: [ { name: 'filter1' }, { name: 'filter2' } ]
+ }, {
+ name: 'group2',
+ type: 'boolean',
+ hidden: true,
+ filters: [ { name: 'filter3' }, { name: 'filter4' } ]
+ }, {
+ name: 'group3',
+ type: 'string_options',
+ sticky: true,
+ default: 'filter6',
+ filters: [ { name: 'filter5' }, { name: 'filter6' }, { name: 'filter7' } ]
+ } ],
viewsDefinition = {
namespaces: {
label: 'Namespaces',
group3: 'filter8',
group4: 'option2',
group5: 'option1',
- group6option1: '0',
- group6option2: '1',
- group6option3: '1',
- group7: 'group7option2',
namespace: ''
},
baseParamRepresentation = {
assert.deepEqual(
model.getDefaultParams(),
defaultParameters,
- 'Default parameters are stored properly per filter and group'
- );
-
- // Change sticky filter
- model.toggleFiltersSelected( {
- group7__group7option1: true
- } );
-
- // Make sure defaults have changed
- assert.deepEqual(
- model.getDefaultParams(),
- $.extend( true, {}, defaultParameters, {
- group7: 'group7option1'
- } ),
- 'Default parameters are stored properly per filter and group'
+ 'Default parameters are stored properly per filter and group (sticky groups are ignored)'
);
} );
{
input: {
filter1: '1', // Regular (do not strip)
- group6option1: '1', // Sticky
- filter4: '1', // Excluded
- filter5: '0' // Excluded
+ group6option1: '1' // Sticky
},
result: { filter1: '1' },
- msg: 'Valid input strips all sticky and excluded params regardless of value'
+ msg: 'Valid input strips all sticky params regardless of value'
}
];
cases.forEach( function ( test ) {
assert.deepEqual(
- model.removeExcludedParams( test.input ),
+ model.removeStickyParams( test.input ),
test.result,
test.msg
);
model.initializeFilters( definition );
- assert.ok(
- !model.isHighlightEnabled(),
+ assert.strictEqual(
+ model.isHighlightEnabled(),
+ false,
'Initially, highlight is disabled.'
);
model.toggleHighlight( true );
- assert.ok(
+ assert.strictEqual(
model.isHighlightEnabled(),
+ true,
'Highlight is enabled on toggle.'
);
'Highlighted items are highlighted.'
);
- assert.equal(
+ assert.strictEqual(
model.getItemByName( 'group1__filter1' ).getHighlightColor(),
'color1',
'Item highlight color is set.'
);
model.setHighlightColor( 'group1__filter1', 'color1changed' );
- assert.equal(
+ assert.strictEqual(
model.getItemByName( 'group1__filter1' ).getHighlightColor(),
'color1changed',
'Item highlight color is changed on setHighlightColor.'
'Items without a specified class identifier are not highlighted.'
);
} );
+
+ QUnit.test( 'emptyAllFilters', function ( assert ) {
+ var model = new mw.rcfilters.dm.FiltersViewModel();
+
+ model.initializeFilters( shortFilterDefinition, null );
+
+ model.toggleFiltersSelected( {
+ group1__filter1: true,
+ group2__filter4: true, // hidden
+ group3__filter5: true // sticky
+ } );
+
+ model.emptyAllFilters();
+
+ assert.deepEqual(
+ model.getSelectedState( true ),
+ {
+ group3__filter5: true,
+ group3__filter6: true
+ },
+ 'Emptying filters does not affect sticky filters'
+ );
+ } );
+
+ QUnit.test( 'areVisibleFiltersEmpty', function ( assert ) {
+ var model = new mw.rcfilters.dm.FiltersViewModel();
+ model.initializeFilters( shortFilterDefinition, null );
+
+ model.emptyAllFilters();
+ assert.strictEqual( model.areVisibleFiltersEmpty(), true );
+
+ model.toggleFiltersSelected( {
+ group3__filter5: true // sticky
+ } );
+ assert.strictEqual( model.areVisibleFiltersEmpty(), true );
+
+ model.toggleFiltersSelected( {
+ group1__filter1: true
+ } );
+ assert.strictEqual( model.areVisibleFiltersEmpty(), false );
+ } );
}( mediaWiki, jQuery ) );