mediawiki-extensions-Cite/tests/phpunit/CiteDbTest.php
thiemowmde 269f726cff Remove inline @var type hints that are not needed
This is mostly because recent IDEs can understand createMock() quite
good. We usually don't add such hints every time we use createMock().
We would have a million of them. ;-)

Change-Id: If9e37807a6945c4408d374fc97664cd636020ffd
2023-06-05 16:37:03 +02:00

63 lines
1.7 KiB
PHP

<?php
namespace Cite\Tests;
use Cite\Cite;
use Language;
use MediaWiki\MediaWikiServices;
use Parser;
use ParserOptions;
use Title;
/**
* @group Database
*
* @license GPL-2.0-or-later
*/
class CiteDbTest extends \MediaWikiIntegrationTestCase {
/**
* Edge case where a parser call within `<ref>` parse clears the original parser state.
* @see https://phabricator.wikimedia.org/T240248
* @covers \Cite\ReferenceStack::pushRef
*/
public function testReferenceStackError() {
$this->insertPage( 'Cite-tracking-category-cite-error', '{{PAGENAME}}', NS_MEDIAWIKI );
$services = MediaWikiServices::getInstance();
// Reset the MessageCache in order to force it to clone a new parser.
$services->resetServiceForTesting( 'MessageCache' );
$services->getMessageCache()->enable();
$parserOutput = $services->getParser()->parse(
'
<ref name="a">text #1</ref>
<ref name="a">text #2</ref>
<ref>text #3</ref>
',
Title::makeTitle( NS_MAIN, mt_rand() ),
ParserOptions::newFromAnon()
);
$this->assertStringContainsString(
'cite_ref-2',
$parserOutput->getText(),
'Internal counter should not reset to 1 for text #3'
);
}
private function newCite(): Cite {
$mockOptions = $this->createMock( ParserOptions::class );
$mockOptions->method( 'getIsPreview' )->willReturn( false );
$mockOptions->method( 'getIsSectionPreview' )->willReturn( false );
$mockOptions->method( 'getUserLangObj' )->willReturn(
$this->createMock( Language::class ) );
$mockParser = $this->createMock( Parser::class );
$mockParser->method( 'getOptions' )->willReturn( $mockOptions );
$mockParser->method( 'getContentLanguage' )->willReturn(
$this->createMock( Language::class ) );
return new Cite( $mockParser );
}
}