1 /* eslint-disable camelcase */
3 QUnit
.module( 'mediawiki.rcfilters - FilterItem' );
5 QUnit
.test( 'Initializing filter item', function ( assert
) {
7 group1
= new mw
.rcfilters
.dm
.FilterGroup( 'group1' ),
8 group2
= new mw
.rcfilters
.dm
.FilterGroup( 'group2' );
10 item
= new mw
.rcfilters
.dm
.FilterItem( 'filter1', group1
);
14 'Filter name is retained.'
19 'Group name is retained.'
22 item
= new mw
.rcfilters
.dm
.FilterItem(
27 description
: 'test description'
33 'Label information is retained.'
38 'Description information is retained.'
41 item
= new mw
.rcfilters
.dm
.FilterItem(
51 'Item can be selected in the config.'
53 item
.toggleSelected( true );
57 'Item can toggle its selected state.'
61 item
= new mw
.rcfilters
.dm
.FilterItem(
65 subset
: [ 'sub1', 'sub2', 'sub3' ]
70 [ 'sub1', 'sub2', 'sub3' ],
71 'Subset information is retained.'
74 item
.existsInSubset( 'sub1' ),
76 'Specific item exists in subset.'
79 item
.existsInSubset( 'sub10' ),
81 'Specific item does not exists in subset.'
86 'Initial state of "included" is false.'
89 item
.toggleIncluded( true );
93 'Item toggles its included state.'
97 item
= new mw
.rcfilters
.dm
.FilterItem(
102 group2__conflict1
: { group
: 'group2', filter
: 'group2__conflict1' },
103 group2__conflict2
: { group
: 'group2', filter
: 'group2__conflict2' },
104 group2__conflict3
: { group
: 'group2', filter
: 'group2__conflict3' }
111 group2__conflict1
: { group
: 'group2', filter
: 'group2__conflict1' },
112 group2__conflict2
: { group
: 'group2', filter
: 'group2__conflict2' },
113 group2__conflict3
: { group
: 'group2', filter
: 'group2__conflict3' }
115 'Conflict information is retained.'
118 item
.existsInConflicts( new mw
.rcfilters
.dm
.FilterItem( 'conflict1', group2
) ),
120 'Specific item exists in conflicts.'
123 item
.existsInConflicts( new mw
.rcfilters
.dm
.FilterItem( 'conflict10', group1
) ),
125 'Specific item does not exists in conflicts.'
130 'Initial state of "conflicted" is false.'
133 item
.toggleConflicted( true );
137 'Item toggles its conflicted state.'
141 item
= new mw
.rcfilters
.dm
.FilterItem( 'filter1', group1
);
143 item
.isFullyCovered(),
145 'Initial state of "full coverage" is false.'
147 item
.toggleFullyCovered( true );
149 item
.isFullyCovered(),
151 'Item toggles its fully coverage state.'
156 QUnit
.test( 'Emitting events', function ( assert
) {
157 var group1
= new mw
.rcfilters
.dm
.FilterGroup( 'group1' ),
158 item
= new mw
.rcfilters
.dm
.FilterItem( 'filter1', group1
),
161 // Listen to update events
162 item
.on( 'update', function () {
163 events
.push( item
.getState() );
167 item
.toggleSelected( true ); // { selected: true, included: false, conflicted: false, fullyCovered: false }
168 item
.toggleSelected( true ); // No event (duplicate state)
169 item
.toggleIncluded( true ); // { selected: true, included: true, conflicted: false, fullyCovered: false }
170 item
.toggleConflicted( true ); // { selected: true, included: true, conflicted: true, fullyCovered: false }
171 item
.toggleFullyCovered( true ); // { selected: true, included: true, conflicted: true, fullyCovered: true }
172 item
.toggleSelected(); // { selected: false, included: true, conflicted: true, fullyCovered: true }
174 // Check emitted events
178 { selected
: true, included
: false, conflicted
: false, fullyCovered
: false },
179 { selected
: true, included
: true, conflicted
: false, fullyCovered
: false },
180 { selected
: true, included
: true, conflicted
: true, fullyCovered
: false },
181 { selected
: true, included
: true, conflicted
: true, fullyCovered
: true },
182 { selected
: false, included
: true, conflicted
: true, fullyCovered
: true }
184 'Events emitted successfully.'
188 QUnit
.test( 'get/set boolean value', function ( assert
) {
189 var group
= new mw
.rcfilters
.dm
.FilterGroup( 'group1', { type
: 'boolean' } ),
190 item
= new mw
.rcfilters
.dm
.FilterItem( 'filter1', group
);
192 item
.setValue( '1' );
194 assert
.strictEqual( item
.getValue(), true, 'Value is coerced to boolean' );
197 QUnit
.test( 'get/set any value', function ( assert
) {
198 var group
= new mw
.rcfilters
.dm
.FilterGroup( 'group1', { type
: 'any_value' } ),
199 item
= new mw
.rcfilters
.dm
.FilterItem( 'filter1', group
);
201 item
.setValue( '1' );
203 assert
.strictEqual( item
.getValue(), '1', 'Value is kept as-is' );