3232d08a68c1b1b598da01c690c83b302f5aff36
2 QUnit
.module( 'mediawiki.rcfilters - FilterItem' );
4 QUnit
.test( 'Initializing filter item', function ( assert
) {
6 group1
= new mw
.rcfilters
.dm
.FilterGroup( 'group1' ),
7 group2
= new mw
.rcfilters
.dm
.FilterGroup( 'group2' );
9 item
= new mw
.rcfilters
.dm
.FilterItem( 'filter1', group1
);
13 'Filter name is retained.'
18 'Group name is retained.'
21 item
= new mw
.rcfilters
.dm
.FilterItem(
26 description
: 'test description'
32 'Label information is retained.'
37 'Description information is retained.'
40 item
= new mw
.rcfilters
.dm
.FilterItem(
50 'Item can be selected in the config.'
52 item
.toggleSelected( true );
56 'Item can toggle its selected state.'
60 item
= new mw
.rcfilters
.dm
.FilterItem(
64 subset
: [ 'sub1', 'sub2', 'sub3' ]
69 [ 'sub1', 'sub2', 'sub3' ],
70 'Subset information is retained.'
73 item
.existsInSubset( 'sub1' ),
75 'Specific item exists in subset.'
78 item
.existsInSubset( 'sub10' ),
80 'Specific item does not exists in subset.'
85 'Initial state of "included" is false.'
88 item
.toggleIncluded( true );
92 'Item toggles its included state.'
96 item
= new mw
.rcfilters
.dm
.FilterItem(
101 conflict1
: { group
: 'group2', filter
: 'conflict1' },
102 conflict2
: { group
: 'group2', filter
: 'conflict2' },
103 conflict3
: { group
: 'group2', filter
: 'conflict3' }
110 conflict1
: { group
: 'group2', filter
: 'conflict1' },
111 conflict2
: { group
: 'group2', filter
: 'conflict2' },
112 conflict3
: { group
: 'group2', filter
: 'conflict3' }
114 'Conflict information is retained.'
117 // TODO: Consider allowing for either a FilterItem or a filter name
118 // in this method, so it is consistent with the subset one
119 item
.existsInConflicts( new mw
.rcfilters
.dm
.FilterItem( 'conflict1', group2
) ),
121 'Specific item exists in conflicts.'
124 item
.existsInConflicts( new mw
.rcfilters
.dm
.FilterItem( 'conflict10', group1
) ),
126 'Specific item does not exists in conflicts.'
131 'Initial state of "conflicted" is false.'
134 item
.toggleConflicted( true );
138 'Item toggles its conflicted state.'
142 item
= new mw
.rcfilters
.dm
.FilterItem( 'filter1', group1
);
144 item
.isFullyCovered(),
146 'Initial state of "full coverage" is false.'
148 item
.toggleFullyCovered( true );
150 item
.isFullyCovered(),
152 'Item toggles its fully coverage state.'
157 QUnit
.test( 'Emitting events', function ( assert
) {
158 var group1
= new mw
.rcfilters
.dm
.FilterGroup( 'group1' ),
159 item
= new mw
.rcfilters
.dm
.FilterItem( 'filter1', group1
),
162 // Listen to update events
163 item
.on( 'update', function () {
164 events
.push( item
.getState() );
168 item
.toggleSelected( true ); // { selected: true, included: false, conflicted: false, fullyCovered: false }
169 item
.toggleSelected( true ); // No event (duplicate state)
170 item
.toggleIncluded( true ); // { selected: true, included: true, conflicted: false, fullyCovered: false }
171 item
.toggleConflicted( true ); // { selected: true, included: true, conflicted: true, fullyCovered: false }
172 item
.toggleFullyCovered( true ); // { selected: true, included: true, conflicted: true, fullyCovered: true }
173 item
.toggleSelected(); // { selected: false, included: true, conflicted: true, fullyCovered: true }
175 // Check emitted events
179 { selected
: true, included
: false, conflicted
: false, fullyCovered
: false },
180 { selected
: true, included
: true, conflicted
: false, fullyCovered
: false },
181 { selected
: true, included
: true, conflicted
: true, fullyCovered
: false },
182 { selected
: true, included
: true, conflicted
: true, fullyCovered
: true },
183 { selected
: false, included
: true, conflicted
: true, fullyCovered
: true }
185 'Events emitted successfully.'