mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Gadgets
synced 2024-11-15 11:31:40 +00:00
eca021ed61
Though the hook registration was working fine, the run from Jenkins was failing. Jenkins runs like this: $ php tests/phpunit/phpunit.php extensions/Gadgets Which bypasses UnitTestsList and uses auto-discovery within the given directory of "*.Test.php" files. Renamed to file to match PHPUnit's internal discovery pattern and updated the onUnitTestsList callback to use this pattern as well. Also updated documentation applied recent code conventions in this area (extend MediaWikiTestCase). Change-Id: Iaa52a5eafdebf1529dd02fb1bed89d27c298e0d3
82 lines
2.8 KiB
PHP
82 lines
2.8 KiB
PHP
<?php
|
|
/**
|
|
* @group Gadgets
|
|
*/
|
|
|
|
class GadgetsTest extends MediaWikiTestCase {
|
|
private function create( $line ) {
|
|
$g = Gadget::newFromDefinition( $line );
|
|
// assertInstanceOf() is available since PHPUnit 3.5
|
|
$this->assertEquals( 'Gadget', get_class( $g ) );
|
|
|
|
return $g;
|
|
}
|
|
|
|
function testInvalidLines() {
|
|
$this->assertFalse( Gadget::newFromDefinition( '' ) );
|
|
$this->assertFalse( Gadget::newFromDefinition( '<foo|bar>' ) );
|
|
}
|
|
|
|
function testSimpleCases() {
|
|
$g = $this->create( '* foo bar| foo.css|foo.js|foo.bar' );
|
|
$this->assertEquals( 'foo_bar', $g->getName() );
|
|
$this->assertEquals( 'ext.gadget.foo_bar', $g->getModuleName() );
|
|
$this->assertEquals( array( 'Gadget-foo.js' ), $g->getScripts() );
|
|
$this->assertEquals( array( 'Gadget-foo.css' ), $g->getStyles() );
|
|
$this->assertEquals( array( 'Gadget-foo.js', 'Gadget-foo.css' ),
|
|
$g->getScriptsAndStyles() );
|
|
$this->assertEquals( array( 'Gadget-foo.js' ), $g->getLegacyScripts() );
|
|
$this->assertFalse( $g->supportsResourceLoader() );
|
|
$this->assertTrue( $g->hasModule() );
|
|
}
|
|
|
|
function testRLtag() {
|
|
$g = $this->create( '*foo [ResourceLoader]|foo.js|foo.css' );
|
|
$this->assertEquals( 'foo', $g->getName() );
|
|
$this->assertTrue( $g->supportsResourceLoader() );
|
|
$this->assertEquals( 0, count( $g->getLegacyScripts() ) );
|
|
}
|
|
|
|
function testDependencies() {
|
|
$g = $this->create( '* foo[ResourceLoader|dependencies=jquery.ui]|bar.js' );
|
|
$this->assertEquals( array( 'Gadget-bar.js' ), $g->getScripts() );
|
|
$this->assertTrue( $g->supportsResourceLoader() );
|
|
$this->assertEquals( array( 'jquery.ui' ), $g->getDependencies() );
|
|
}
|
|
|
|
function testPreferences() {
|
|
global $wgUser, $wgOut, $wgTitle;
|
|
|
|
// This test makes call to the parser which requires valids Outputpage
|
|
// and Title objects. Set them up there, they will be released at the
|
|
// end of the test.
|
|
$old_wgOut = $wgOut;
|
|
$old_wgTitle = $wgTitle;
|
|
$wgTitle = Title::newFromText( 'Parser test for Gadgets extension' );
|
|
|
|
// Proceed with test setup:
|
|
$prefs = array();
|
|
$context = new RequestContext();
|
|
$wgOut = $context->getOutput();
|
|
$wgOut->setTitle( Title::newFromText( 'test' ) );
|
|
|
|
Gadget::loadStructuredList( '* foo | foo.js
|
|
==keep-section1==
|
|
* bar| bar.js
|
|
==remove-section==
|
|
* baz [rights=embezzle] |baz.js
|
|
==keep-section2==
|
|
* quux [rights=read] | quux.js' );
|
|
$this->assertTrue( GadgetHooks::getPreferences( $wgUser, $prefs ), 'GetPrefences hook should return true' );
|
|
|
|
$options = $prefs['gadgets']['options'];
|
|
$this->assertFalse( isset( $options['<gadget-section-remove-section>'] ), 'Must not show empty sections' );
|
|
$this->assertTrue( isset( $options['<gadget-section-keep-section1>'] ) );
|
|
$this->assertTrue( isset( $options['<gadget-section-keep-section2>'] ) );
|
|
|
|
// Restore globals
|
|
$wgOut = $old_wgOut;
|
|
$wgTitle = $old_wgTitle;
|
|
}
|
|
}
|