RCFilters: Remove isAllowedCallable and isAllowed
[lhc/web/wiklou.git] / tests / phpunit / includes / specialpage / AbstractChangesListSpecialPageTestCase.php
1 <?php
2
3 /**
4 * Abstract base class for shared logic when testing ChangesListSpecialPage
5 * and subclasses
6 *
7 * @group Database
8 */
9 abstract class AbstractChangesListSpecialPageTestCase extends MediaWikiTestCase {
10 // Must be initialized by subclass
11 /**
12 * @var ChangesListSpecialPage
13 */
14 protected $changesListSpecialPage;
15
16 protected $oldPatrollersGroup;
17
18 protected function setUp() {
19 global $wgGroupPermissions;
20
21 parent::setUp();
22 $this->setMwGlobals( 'wgRCWatchCategoryMembership', true );
23
24 if ( isset( $wgGroupPermissions['patrollers'] ) ) {
25 $this->oldPatrollersGroup = $wgGroupPermissions['patrollers'];
26 }
27
28 $wgGroupPermissions['patrollers'] = [
29 'patrol' => true,
30 ];
31 }
32
33 protected function tearDown() {
34 global $wgGroupPermissions;
35
36 parent::tearDown();
37
38 if ( $this->oldPatrollersGroup !== null ) {
39 $wgGroupPermissions['patrollers'] = $this->oldPatrollersGroup;
40 }
41 }
42
43 /**
44 * @dataProvider provideParseParameters
45 */
46 public function testParseParameters( $params, $expected ) {
47 $context = $this->changesListSpecialPage->getContext();
48 $context = new DerivativeContext( $context );
49 $context->setUser( $this->getTestUser( [ 'patrollers' ] )->getUser() );
50 $this->changesListSpecialPage->setContext( $context );
51
52 $this->changesListSpecialPage->registerFilters();
53
54 $opts = new FormOptions();
55 foreach ( $expected as $key => $value ) {
56 // Register it as null so sets aren't rejected.
57 $opts->add(
58 $key,
59 null,
60 FormOptions::guessType( $expected )
61 );
62 }
63
64 $this->changesListSpecialPage->parseParameters(
65 $params,
66 $opts
67 );
68
69 $this->assertArrayEquals(
70 $expected,
71 $opts->getAllValues(),
72 /** ordered= */ false,
73 /** named= */ true
74 );
75 }
76 }