mediawiki-extensions-Gadgets/tests/GadgetTest.php
Timo Tijhof eca021ed61 tests: Rename file to end in Test.php
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
2013-05-01 03:20:39 +02:00

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['&lt;gadget-section-remove-section&gt;'] ), 'Must not show empty sections' );
$this->assertTrue( isset( $options['&lt;gadget-section-keep-section1&gt;'] ) );
$this->assertTrue( isset( $options['&lt;gadget-section-keep-section2&gt;'] ) );
// Restore globals
$wgOut = $old_wgOut;
$wgTitle = $old_wgTitle;
}
}