mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Math
synced 2024-12-21 11:52:40 +00:00
8b481b45f1
Adding action=purge to the url did not bypass cache in native mode, because the check request was performed before the purge information was passed. * Move purge property to the base class * Pass purge option via the checker constructor * Add cache checking for mathoid checker * Adjust method signatures accordingly Change-Id: I6f545060ae72dac8b12fb0f85662c4048059b2e9
113 lines
3.6 KiB
PHP
113 lines
3.6 KiB
PHP
<?php
|
|
|
|
namespace phpunit\InputCheck;
|
|
|
|
use MediaWiki\Config\ServiceOptions;
|
|
use MediaWiki\Extension\Math\InputCheck\InputCheckFactory;
|
|
use MediaWiki\Extension\Math\InputCheck\LocalChecker;
|
|
use MediaWiki\Extension\Math\InputCheck\MathoidChecker;
|
|
use MediaWiki\Extension\Math\InputCheck\RestbaseChecker;
|
|
use MediaWiki\Http\HttpRequestFactory;
|
|
use MediaWiki\Logger\LoggerFactory;
|
|
use MediaWiki\Tests\Unit\MockServiceDependenciesTrait;
|
|
use MediaWikiIntegrationTestCase;
|
|
use Message;
|
|
use WANObjectCache;
|
|
|
|
/**
|
|
* @method InputCheckFactory newServiceInstance(string $serviceClass, array $parameterOverrides)
|
|
* @covers \MediaWiki\Extension\Math\InputCheck\InputCheckFactory
|
|
*/
|
|
class InputCheckFactoryTest extends MediaWikiIntegrationTestCase {
|
|
|
|
use MockServiceDependenciesTrait;
|
|
|
|
private $fakeHTTP;
|
|
private $fakeWAN;
|
|
|
|
protected function setUp(): void {
|
|
parent::setUp();
|
|
$this->fakeHTTP = $this->createMock( HttpRequestFactory::class );
|
|
$this->fakeWAN = $this->createMock( WANObjectCache::class );
|
|
}
|
|
|
|
public function testNewMathoidChecker() {
|
|
$checker = $this->newServiceInstance( InputCheckFactory::class, [
|
|
'options' => new ServiceOptions( InputCheckFactory::CONSTRUCTOR_OPTIONS, [
|
|
'MathMathMLUrl' => 'something',
|
|
'MathTexVCService' => 'mathoid',
|
|
'MathLaTeXMLTimeout' => 240
|
|
] )
|
|
] )
|
|
->newMathoidChecker( 'FORMULA', 'TYPE', false );
|
|
$this->assertInstanceOf( MathoidChecker::class, $checker );
|
|
}
|
|
|
|
public function testNewRestbaseChecker() {
|
|
$checker = $this->newServiceInstance( InputCheckFactory::class, [] )
|
|
->newRestbaseChecker( 'FORMULA', 'TYPE' );
|
|
$this->assertInstanceOf( RestbaseChecker::class, $checker );
|
|
}
|
|
|
|
public function testNewLocalChecker() {
|
|
$checker = $this->newServiceInstance( InputCheckFactory::class, [] )
|
|
->newLocalChecker( 'FORMULA', 'tex' );
|
|
$this->assertInstanceOf( LocalChecker::class, $checker );
|
|
}
|
|
|
|
public function testInvalidLocalChecker() {
|
|
$myFactory = new InputCheckFactory(
|
|
new ServiceOptions( InputCheckFactory::CONSTRUCTOR_OPTIONS, [
|
|
'MathMathMLUrl' => 'something',
|
|
'MathTexVCService' => 'local',
|
|
'MathLaTeXMLTimeout' => 240
|
|
] ),
|
|
$this->fakeWAN,
|
|
$this->fakeHTTP,
|
|
LoggerFactory::getInstance( 'Math' )
|
|
);
|
|
$checker = $myFactory->newLocalChecker( 'FORMULA', 'INVALIDTYPE' );
|
|
$this->assertInstanceOf( LocalChecker::class, $checker );
|
|
$this->assertInstanceOf( Message::class, $checker->getError() );
|
|
$this->assertFalse( $checker->isValid() );
|
|
}
|
|
|
|
public function testNewDefaultChecker() {
|
|
$checker = $this->newServiceInstance( InputCheckFactory::class, [] )
|
|
->newDefaultChecker( 'FORMULA', 'TYPE' );
|
|
$this->assertInstanceOf( RestbaseChecker::class, $checker );
|
|
}
|
|
|
|
public function testNewMLocalCheckerDefault() {
|
|
$myFactory = new InputCheckFactory(
|
|
new ServiceOptions( InputCheckFactory::CONSTRUCTOR_OPTIONS, [
|
|
'MathMathMLUrl' => 'something',
|
|
'MathTexVCService' => 'local',
|
|
'MathLaTeXMLTimeout' => 240
|
|
] ),
|
|
$this->fakeWAN,
|
|
$this->fakeHTTP,
|
|
LoggerFactory::getInstance( 'Math' )
|
|
);
|
|
|
|
$checker = $myFactory->newDefaultChecker( 'FORMULA', 'tex' );
|
|
$this->assertInstanceOf( LocalChecker::class, $checker );
|
|
}
|
|
|
|
public function testMathoidCheckerInDefault() {
|
|
$myFactory = new InputCheckFactory(
|
|
new ServiceOptions( InputCheckFactory::CONSTRUCTOR_OPTIONS, [
|
|
'MathMathMLUrl' => 'something',
|
|
'MathTexVCService' => 'mathoid',
|
|
'MathLaTeXMLTimeout' => 240
|
|
] ),
|
|
$this->fakeWAN,
|
|
$this->fakeHTTP,
|
|
LoggerFactory::getInstance( 'Math' )
|
|
);
|
|
|
|
$checker = $myFactory->newDefaultChecker( 'FORMULA', 'TYPE' );
|
|
$this->assertInstanceOf( MathoidChecker::class, $checker );
|
|
}
|
|
}
|