mediawiki-extensions-Gadgets/tests/phpunit/integration/GadgetHooksTest.php
Krinkle 7c4ac597e2 Revert "Make each gadget a separate preference, instead of one huge multiselect"
This reverts commit 82281d82d0.

Bug: T126962
Bug: T292777
Change-Id: I7c858b8c4bc12626ea1d53374ea4d75862f684ff
2021-10-07 19:52:18 +00:00

62 lines
1.5 KiB
PHP

<?php
use Wikimedia\TestingAccessWrapper;
/**
* @group Gadgets
*/
class GadgetHooksTest extends MediaWikiIntegrationTestCase {
/**
* @var User
*/
protected $user;
public function setUp(): void {
global $wgGroupPermissions;
parent::setUp();
$wgGroupPermissions['unittesters'] = [
'test' => true,
];
$this->user = $this->getTestUser( [ 'unittesters' ] )->getUser();
}
public function tearDown(): void {
GadgetRepo::setSingleton();
parent::tearDown();
}
/**
* @covers Gadget
* @covers GadgetHooks::getPreferences
* @covers GadgetRepo
* @covers MediaWikiGadgetsDefinitionRepo
*/
public function testPreferences() {
$prefs = [];
$repo = TestingAccessWrapper::newFromObject( new MediaWikiGadgetsDefinitionRepo() );
// Force usage of a MediaWikiGadgetsDefinitionRepo
GadgetRepo::setSingleton( $repo );
/** @var MediaWikiGadgetsDefinitionRepo $repo */
$gadgets = $repo->fetchStructuredList( '* foo | foo.js
==keep-section1==
* bar| bar.js
==remove-section==
* baz [rights=embezzle] |baz.js
==keep-section2==
* quux [rights=test] | quux.js' );
$this->assertGreaterThanOrEqual( 2, count( $gadgets ), "Gadget list parsed" );
$repo->definitionCache = $gadgets;
GadgetHooks::getPreferences( $this->user, $prefs );
$options = $prefs['gadgets']['options-messages'];
$this->assertArrayNotHasKey( 'gadget-section-remove-section', $options,
'Must not show empty sections' );
$this->assertArrayHasKey( 'gadget-section-keep-section1', $options );
$this->assertArrayHasKey( 'gadget-section-keep-section2', $options );
}
}