mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Math
synced 2024-11-15 11:48:23 +00:00
6e8ca25d46
Change-Id: I620a56f9edab3a751c7c41cd76ef401aac5d3b79
97 lines
3 KiB
PHP
97 lines
3 KiB
PHP
<?php
|
|
|
|
use Wikibase\DataModel\Entity\PropertyId;
|
|
use Wikibase\DataModel\Services\Entity\PropertyDataTypeMatcher;
|
|
use Wikibase\DataModel\Services\Lookup\PropertyDataTypeLookup;
|
|
|
|
/**
|
|
* Test the MathDataUpdater for Wikidata
|
|
*
|
|
* @covers MathDataUpdater
|
|
**
|
|
* @license GPL-2.0-or-later
|
|
*/
|
|
class MathDataUpdaterTest extends MediaWikiTestCase {
|
|
|
|
/**
|
|
* @var PropertyId
|
|
*/
|
|
private $mathProperty;
|
|
/**
|
|
* @var PropertyId
|
|
*/
|
|
private $otherProperty;
|
|
|
|
/**
|
|
* @inheritDoc
|
|
*/
|
|
protected function setUp() : void {
|
|
parent::setUp();
|
|
$this->mathProperty = new PropertyId( 'P' . DummyPropertyDataTypeLookup::$mathId );
|
|
$this->otherProperty = new PropertyId( 'P' . ( DummyPropertyDataTypeLookup::$mathId + 1 ) );
|
|
}
|
|
|
|
public function testNoMath() {
|
|
$matcher = new PropertyDataTypeMatcher( new DummyPropertyDataTypeLookup() );
|
|
$updater = new MathDataUpdater( $matcher );
|
|
$statement =
|
|
$this->getMockBuilder( Wikibase\DataModel\Statement\Statement::class )
|
|
->setMethods( [ 'getPropertyId' ] )
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
$statement->method( 'getPropertyId' )->willReturn( $this->otherProperty );
|
|
/** @var Wikibase\DataModel\Statement\Statement $statement */
|
|
$updater->processStatement( $statement );
|
|
$parserOutput = $this->getMockBuilder( ParserOutput::class )->setMethods( [
|
|
'addModules',
|
|
'addModuleStyles',
|
|
] )->getMock();
|
|
$parserOutput->expects( $this->never() )->method( 'addModules' );
|
|
$parserOutput->expects( $this->never() )->method( 'addModuleStyles' );
|
|
/** @var ParserOutput $parserOutput */
|
|
$updater->updateParserOutput( $parserOutput );
|
|
}
|
|
|
|
public function testMath() {
|
|
$matcher = new PropertyDataTypeMatcher( new DummyPropertyDataTypeLookup() );
|
|
$updater = new MathDataUpdater( $matcher );
|
|
$statement =
|
|
$this->getMockBuilder( Wikibase\DataModel\Statement\Statement::class )
|
|
->setMethods( [ 'getPropertyId' ] )
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
$statement->method( 'getPropertyId' )->willReturn( $this->mathProperty );
|
|
/** @var Wikibase\DataModel\Statement\Statement $statement */
|
|
$updater->processStatement( $statement );
|
|
$parserOutput = $this->getMockBuilder( ParserOutput::class )->setMethods( [
|
|
'addModules',
|
|
'addModuleStyles',
|
|
] )->getMock();
|
|
$parserOutput->expects( $this->once() )->method( 'addModules' );
|
|
$parserOutput->expects( $this->once() )->method( 'addModuleStyles' );
|
|
/** @var ParserOutput $parserOutput */
|
|
$updater->updateParserOutput( $parserOutput );
|
|
}
|
|
}
|
|
|
|
class DummyPropertyDataTypeLookup implements PropertyDataTypeLookup {
|
|
/**
|
|
* @var int
|
|
*/
|
|
public static $mathId = 1;
|
|
|
|
/**
|
|
* Returns the data type for the Property of which the id is given.
|
|
*
|
|
* @since 2.0
|
|
*
|
|
* @param \Wikibase\DataModel\Entity\PropertyId $propertyId
|
|
*
|
|
* @return string
|
|
* @throws \Wikibase\DataModel\Services\Lookup\PropertyDataTypeLookupException
|
|
*/
|
|
public function getDataTypeIdForProperty( \Wikibase\DataModel\Entity\PropertyId $propertyId ) {
|
|
return $propertyId->getNumericId() == self::$mathId ? 'math' : 'not-math';
|
|
}
|
|
}
|