4 * Abstract base class for shared logic when testing ChangesListSpecialPage
9 abstract class AbstractChangesListSpecialPageTestCase
extends MediaWikiTestCase
{
10 // Must be initialized by subclass
12 * @var ChangesListSpecialPage
14 protected $changesListSpecialPage;
16 protected $oldPatrollersGroup;
18 protected function setUp() {
19 global $wgGroupPermissions;
22 $this->setMwGlobals( 'wgRCWatchCategoryMembership', true );
24 if ( isset( $wgGroupPermissions['patrollers'] ) ) {
25 $this->oldPatrollersGroup
= $wgGroupPermissions['patrollers'];
28 $wgGroupPermissions['patrollers'] = [
33 protected function tearDown() {
34 global $wgGroupPermissions;
38 if ( $this->oldPatrollersGroup
!== null ) {
39 $wgGroupPermissions['patrollers'] = $this->oldPatrollersGroup
;
44 * @dataProvider provideParseParameters
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 );
52 $this->changesListSpecialPage
->registerFilters();
54 $opts = new FormOptions();
55 foreach ( $expected as $key => $value ) {
56 // Register it as null so sets aren't rejected.
60 FormOptions
::guessType( $expected )
64 $this->changesListSpecialPage
->parseParameters(
69 $this->assertArrayEquals(
71 $opts->getAllValues(),
72 /** ordered= */ false,