RCFilters: refactor highlight state
[lhc/web/wiklou.git] / tests / qunit / suites / resources / mediawiki.rcfilters / dm.SavedQueriesModel.test.js
index 539bab4..58524ec 100644 (file)
                                                        // in param representation
                                                        filter2: '1', filter3: '1',
                                                        // Group type string_options
-                                                       group2: 'filter4',
+                                                       group2: 'filter4'
                                                        // Note - Group3 is sticky, so it won't show in output
-                                                       // highlight toggle
-                                                       highlight: '1'
                                                },
                                                highlights: {
                                                        group1__filter1_color: 'c5',
                                        }
                                }
                        }
+               },
+               removeHighlights = function ( data ) {
+                       var copy = $.extend( true, {}, data );
+                       copy.queries[ 1234 ].data.highlights = {};
+                       return copy;
                };
 
        QUnit.module( 'mediawiki.rcfilters - SavedQueriesModel' );
                                        finalState: $.extend( true, { default: '1234' }, queriesParamRepresentation ),
                                        msg: 'Conversion from filter representation to parameters, with default set up, retains data.'
                                },
+                               {
+                                       // Converting from old structure and cleaning up highlights
+                                       input: $.extend( true, queriesFilterRepresentation, { queries: { 1234: { data: { highlights: { highlight: false } } } } } ),
+                                       finalState: removeHighlights( queriesParamRepresentation ),
+                                       msg: 'Conversion from filter representation to parameters and highlight cleanup'
+                               },
                                {
                                        // New structure
                                        input: $.extend( true, {}, queriesParamRepresentation ),
                                        input: $.extend( true, { queries: { 1234: { data: { highlights: { group2__filter5_color: 'c2' } } } } }, exampleQueryStructure ),
                                        finalState: $.extend( true, { queries: { 1234: { data: { highlights: { group2__filter5_color: 'c2' } } } } }, exampleQueryStructure ),
                                        msg: 'Structure that contains invalid highlights remains the same in initialization'
+                               },
+                               {
+                                       // Trim colors when highlight=false is stored
+                                       input: $.extend( true, { queries: { 1234: { data: { params: { highlight: '0' } } } } }, queriesParamRepresentation ),
+                                       finalState: removeHighlights( queriesParamRepresentation ),
+                                       msg: 'Colors are removed when highlight=false'
+                               },
+                               {
+                                       // Remove highlight when it is true but no colors are specified
+                                       input: $.extend( true, { queries: { 1234: { data: { params: { highlight: '1' } } } } }, removeHighlights( queriesParamRepresentation ) ),
+                                       finalState: removeHighlights( queriesParamRepresentation ),
+                                       msg: 'remove highlight when it is true but there is no colors'
                                }
                        ];
 
                        'New query 1',
                        {
                                group2: 'filter5',
-                               highlight: '1',
                                group1__filter1_color: 'c5',
                                group3__group3option1_color: 'c1'
                        }
                        label: 'New query 1',
                        data: {
                                params: {
-                                       group2: 'filter5',
-                                       highlight: '1'
+                                       group2: 'filter5'
                                },
                                highlights: {
                                        group1__filter1_color: 'c5',
                // Find matching query
                matchingItem = queriesModel.findMatchingQuery(
                        {
-                               highlight: '1',
                                group2: 'filter5',
                                group1__filter1_color: 'c5',
                                group3__group3option1_color: 'c1'
                                group2: 'filter5',
                                filter1: '0',
                                filter2: '0',
-                               highlight: '1',
                                invert: '0',
                                group1__filter1_color: 'c5',
                                group3__group3option1_color: 'c1'