summaryrefslogtreecommitdiff
path: root/tests/qunit/suites/resources/mediawiki.special/mediawiki.special.recentchanges.test.js
blob: 7fe7baf8614697eeabaaaaf1f3514e2b935907ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
QUnit.module( 'mediawiki.special.recentchanges', QUnit.newMwEnvironment() );

// TODO: verify checkboxes == [ 'nsassociated', 'nsinvert' ]

QUnit.test( '"all" namespace disable checkboxes', function ( assert ) {

	// from Special:Recentchanges
	var select =
	'<select id="namespace" name="namespace" class="namespaceselector">'
	+ '<option value="" selected="selected">all</option>'
	+ '<option value="0">(Main)</option>'
	+ '<option value="1">Talk</option>'
	+ '<option value="2">User</option>'
	+ '<option value="3">User talk</option>'
	+ '<option value="4">ProjectName</option>'
	+ '<option value="5">ProjectName talk</option>'
	+ '</select>'
	+ '<input name="invert" type="checkbox" value="1" id="nsinvert" title="no title" />'
	+ '<label for="nsinvert" title="no title">Invert selection</label>'
	+ '<input name="associated" type="checkbox" value="1" id="nsassociated" title="no title" />'
	+ '<label for="nsassociated" title="no title">Associated namespace</label>'
	+ '<input type="submit" value="Go" />'
	+ '<input type="hidden" value="Special:RecentChanges" name="title" />'
	;

	var $env = $( '<div>' ).html( select ).appendTo( 'body' );

	// TODO abstract the double strictEquals

	// At first checkboxes are enabled
	assert.strictEqual( $( '#nsinvert' ).prop( 'disabled' ), false );
	assert.strictEqual( $( '#nsassociated' ).prop( 'disabled' ), false );

	// Initiate the recentchanges module
	mw.special.recentchanges.init();

	// By default
	assert.strictEqual( $( '#nsinvert' ).prop( 'disabled' ), true );
	assert.strictEqual( $( '#nsassociated' ).prop( 'disabled' ), true );

	// select second option...
	var $options = $( '#namespace' ).find( 'option' );
	$options.eq(0).removeProp( 'selected' );
	$options.eq(1).prop( 'selected', true );
	$( '#namespace' ).change();

	// ... and checkboxes should be enabled again
	assert.strictEqual( $( '#nsinvert' ).prop( 'disabled' ), false );
	assert.strictEqual( $( '#nsassociated' ).prop( 'disabled' ), false );

	// select first option ( 'all' namespace)...
	$options.eq(1).removeProp( 'selected' );
	$options.eq(0).prop( 'selected', true );
	$( '#namespace' ).change();

	// ... and checkboxes should now be disabled
	assert.strictEqual( $( '#nsinvert' ).prop( 'disabled' ), true );
	assert.strictEqual( $( '#nsassociated' ).prop( 'disabled' ), true );

	// DOM cleanup
	$env.remove();
});