mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Cite
synced 2024-11-28 00:40:12 +00:00
Add basic test coverage for all CiteHooks code
This also updates an existing test to cover all trim() in the code. Change-Id: I0f0b4f8154004f941f4eaa5a9b2c3be0598fb137
This commit is contained in:
parent
f62acf7e89
commit
ae01d35bf2
79
tests/phpunit/CiteHooksTest.php
Normal file
79
tests/phpunit/CiteHooksTest.php
Normal file
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
|
||||
namespace Cite\Test;
|
||||
|
||||
use ApiQuerySiteinfo;
|
||||
use CiteHooks;
|
||||
use HashBagOStuff;
|
||||
use LinksUpdate;
|
||||
use Title;
|
||||
use WANObjectCache;
|
||||
|
||||
/**
|
||||
* @coversDefaultClass \CiteHooks
|
||||
*/
|
||||
class CiteHooksTest extends \MediaWikiIntegrationTestCase {
|
||||
|
||||
protected function setUp() : void {
|
||||
parent::setUp();
|
||||
|
||||
$this->setMwGlobals( [
|
||||
'wgCiteStoreReferencesData' => true,
|
||||
] );
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::onLinksUpdateComplete
|
||||
*/
|
||||
public function testOnLinksUpdateComplete() {
|
||||
$cache = $this->getMockBuilder( WANObjectCache::class )
|
||||
->setConstructorArgs( [ [ 'cache' => new HashBagOStuff() ] ] )
|
||||
->setMethods( [ 'makeKey', 'relayPurge' ] )
|
||||
->getMock();
|
||||
$cache->method( 'makeKey' )
|
||||
->willReturn( '<KEY>' );
|
||||
// What we actually want to check here is if WANObjectCache::delete() is called, but it's
|
||||
// final and can't be mocked.
|
||||
$cache->expects( $this->once() )
|
||||
->method( 'relayPurge' )
|
||||
->with(
|
||||
'WANCache:v:<KEY>',
|
||||
WANObjectCache::MAX_COMMIT_DELAY,
|
||||
WANObjectCache::HOLDOFF_TTL_NONE
|
||||
);
|
||||
$this->setService( 'MainWANObjectCache', $cache );
|
||||
|
||||
$linksUpdate = $this->createMock( LinksUpdate::class );
|
||||
$linksUpdate->method( 'getAddedProperties' )
|
||||
->willReturn( [ 'references-1' => true ] );
|
||||
$linksUpdate->method( 'getTitle' )
|
||||
->willReturn( $this->createMock( Title::class ) );
|
||||
|
||||
CiteHooks::onLinksUpdateComplete( $linksUpdate );
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::onResourceLoaderGetConfigVars
|
||||
*/
|
||||
public function testOnResourceLoaderGetConfigVars() {
|
||||
$vars = [];
|
||||
|
||||
CiteHooks::onResourceLoaderGetConfigVars( $vars );
|
||||
|
||||
$this->assertArrayHasKey( 'wgCiteVisualEditorOtherGroup', $vars );
|
||||
$this->assertArrayHasKey( 'wgCiteResponsiveReferences', $vars );
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::onAPIQuerySiteInfoGeneralInfo
|
||||
*/
|
||||
public function testOnAPIQuerySiteInfoGeneralInfo() {
|
||||
$api = $this->createMock( ApiQuerySiteinfo::class );
|
||||
$data = [];
|
||||
|
||||
CiteHooks::onAPIQuerySiteInfoGeneralInfo( $api, $data );
|
||||
|
||||
$this->assertArrayHasKey( 'citeresponsivereferences', $data );
|
||||
}
|
||||
|
||||
}
|
105
tests/phpunit/unit/CiteHooksTest.php
Normal file
105
tests/phpunit/unit/CiteHooksTest.php
Normal file
|
@ -0,0 +1,105 @@
|
|||
<?php
|
||||
|
||||
namespace Cite\Test\Unit;
|
||||
|
||||
use Cite;
|
||||
use CiteHooks;
|
||||
use HashConfig;
|
||||
use LinksUpdate;
|
||||
use Parser;
|
||||
use ParserOutput;
|
||||
use ResourceLoader;
|
||||
use Title;
|
||||
|
||||
/**
|
||||
* @coversDefaultClass \CiteHooks
|
||||
*/
|
||||
class CiteHooksTest extends \MediaWikiUnitTestCase {
|
||||
|
||||
protected function setUp() : void {
|
||||
global $wgCiteStoreReferencesData;
|
||||
|
||||
parent::setUp();
|
||||
$wgCiteStoreReferencesData = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::onParserFirstCallInit
|
||||
*/
|
||||
public function testOnParserFirstCallInit() {
|
||||
$parser = $this->createMock( Parser::class );
|
||||
$parser->expects( $this->exactly( 2 ) )
|
||||
->method( 'setHook' )
|
||||
->withConsecutive(
|
||||
[ 'ref', $this->isType( 'callable' ) ],
|
||||
[ 'references', $this->isType( 'callable' ) ]
|
||||
);
|
||||
|
||||
CiteHooks::onParserFirstCallInit( $parser );
|
||||
|
||||
$this->assertInstanceOf( Cite::class, $parser->extCite );
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::onContentHandlerDefaultModelFor
|
||||
*/
|
||||
public function testOnContentHandlerDefaultModelFor() {
|
||||
$title = $this->createMock( Title::class );
|
||||
$title->method( 'inNamespace' )
|
||||
->willReturn( true );
|
||||
$title->method( 'getText' )
|
||||
->willReturn( 'Cite-tool-definition.json' );
|
||||
|
||||
CiteHooks::onContentHandlerDefaultModelFor( $title, $model );
|
||||
|
||||
$this->assertSame( CONTENT_MODEL_JSON, $model );
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::onResourceLoaderTestModules
|
||||
*/
|
||||
public function testOnResourceLoaderTestModules() {
|
||||
$testModules = [];
|
||||
$resourceLoader = $this->createMock( ResourceLoader::class );
|
||||
$resourceLoader->method( 'getConfig' )
|
||||
->willReturn( new HashConfig( [
|
||||
'ResourceModules' => [ 'ext.visualEditor.mediawiki' => true ],
|
||||
] ) );
|
||||
|
||||
CiteHooks::onResourceLoaderTestModules( $testModules, $resourceLoader );
|
||||
|
||||
$this->assertArrayHasKey( 'ext.cite.visualEditor.test', $testModules['qunit'] );
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::onResourceLoaderRegisterModules
|
||||
*/
|
||||
public function testOnResourceLoaderRegisterModules() {
|
||||
$resourceLoader = $this->createMock( ResourceLoader::class );
|
||||
$resourceLoader->expects( $this->atLeastOnce() )
|
||||
->method( 'register' );
|
||||
|
||||
CiteHooks::onResourceLoaderRegisterModules( $resourceLoader );
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::onLinksUpdate
|
||||
*/
|
||||
public function testOnLinksUpdate() {
|
||||
$parserOutput = $this->createMock( ParserOutput::class );
|
||||
$parserOutput->method( 'getExtensionData' )
|
||||
->willReturn( true );
|
||||
$parserOutput->expects( $this->once() )
|
||||
->method( 'setExtensionData' )
|
||||
->with( Cite::EXT_DATA_KEY, null );
|
||||
|
||||
$linksUpdate = $this->createMock( LinksUpdate::class );
|
||||
$linksUpdate->method( 'getParserOutput' )
|
||||
->willReturn( $parserOutput );
|
||||
|
||||
CiteHooks::onLinksUpdate( $linksUpdate );
|
||||
|
||||
$this->assertArrayHasKey( 'references-1', $linksUpdate->mProperties );
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue