We would like to remove DB access in non-database PHPUnit tests. As a first step, avoid database usage in tested code when possible. In particular: - In NameTableStoreFactory, avoid domain ID normalization if the provided ID is already false. - In SpecialDoubleRedirects, do not acquire a DB connection until it's needed (which is just one place). - Use editPage() in TitleDefTest instead of a DIY implementation, and add `@group Database` accordingly. - Avoid parsing titles in ContentHandler tests that don't need to parse titles. Among the many dependencies of parsing titles is the interwiki lookup, which requires DB access. - Also remove test cases that used the "Gadget" namespace; it doesn't exist in core, so these pages were actually in the mainspace. - Mock the database in CategoriesRdfTest. The only two methods that use the database were already being mocked. - Add `@group Database` to test classes that are intentionally using the Database, mainly via getTestUser(). Bug: T155147 Change-Id: I9385fe14cfeb6b7b7378cc322d510034c4ee0711
46 lines
1.4 KiB
PHP
46 lines
1.4 KiB
PHP
<?php
|
|
|
|
use MediaWiki\MainConfigNames;
|
|
use MediaWiki\Title\Title;
|
|
|
|
class CssContentHandlerTest extends MediaWikiLangTestCase {
|
|
|
|
/**
|
|
* @dataProvider provideMakeRedirectContent
|
|
* @covers CssContentHandler::makeRedirectContent
|
|
*/
|
|
public function testMakeRedirectContent( int $namespace, string $title, $expected ) {
|
|
$this->overrideConfigValues( [
|
|
MainConfigNames::Server => '//example.org',
|
|
MainConfigNames::Script => '/w/index.php',
|
|
] );
|
|
$ch = new CssContentHandler();
|
|
$content = $ch->makeRedirectContent( Title::makeTitle( $namespace, $title ) );
|
|
$this->assertInstanceOf( CssContent::class, $content );
|
|
$this->assertEquals( $expected, $content->serialize( CONTENT_FORMAT_CSS ) );
|
|
}
|
|
|
|
/**
|
|
* Keep this in sync with CssContentTest::provideGetRedirectTarget()
|
|
*/
|
|
public static function provideMakeRedirectContent() {
|
|
return [
|
|
[
|
|
NS_MEDIAWIKI,
|
|
'MonoBook.css',
|
|
"/* #REDIRECT */@import url(//example.org/w/index.php?title=MediaWiki:MonoBook.css&action=raw&ctype=text/css);"
|
|
],
|
|
[
|
|
NS_USER,
|
|
'FooBar/common.css',
|
|
"/* #REDIRECT */@import url(//example.org/w/index.php?title=User:FooBar/common.css&action=raw&ctype=text/css);"
|
|
],
|
|
[
|
|
NS_USER,
|
|
'😂/unicode.css',
|
|
'/* #REDIRECT */@import url(//example.org/w/index.php?title=User:%F0%9F%98%82/unicode.css&action=raw&ctype=text/css);'
|
|
],
|
|
];
|
|
// phpcs:enable
|
|
}
|
|
}
|