wiki.techinc.nl/tests/phpunit/includes/exception/UserBlockedErrorTest.php
daniel 3d55397207 Move creation of BlockErrorFormatter into FormatterFactory
The idea is that all formatters that need the user language or
other request specific context should be instantiated by
FormatterFactory.

Change-Id: I8334cc89dcf0f293298b82e004116be50a90f0d1
2024-01-26 13:03:44 -05:00

59 lines
2 KiB
PHP

<?php
use MediaWiki\Block\AbstractBlock;
use MediaWiki\Block\BlockErrorFormatter;
use MediaWiki\Language\FormatterFactory;
use MediaWiki\Language\RawMessage;
use MediaWiki\User\UserIdentity;
/**
* @covers UserBlockedError
*/
class UserBlockedErrorTest extends MediaWikiIntegrationTestCase {
private function setUpMockBlockFormatter(
$expectedBlock, $expectedUser, $expectedLanguage, $expectedIp, $returnMessages
) {
$mockBlockErrorFormatter = $this->createMock( BlockErrorFormatter::class );
$mockBlockErrorFormatter->expects( $this->once() )
->method( 'getMessages' )
->with( $expectedBlock, $expectedUser, $expectedIp )
->willReturn( $returnMessages );
$formatterFactory = $this->createNoOpMock( FormatterFactory::class, [ 'getBlockErrorFormatter' ] );
$formatterFactory->method( 'getBlockErrorFormatter' )->willReturn( $mockBlockErrorFormatter );
$this->setService( 'FormatterFactory', $formatterFactory );
}
public function testConstructionProvidedOnlyBlockParameter() {
$context = RequestContext::getMain();
$block = $this->createMock( AbstractBlock::class );
$this->setUpMockBlockFormatter(
$block, $context->getUser(), $context->getLanguage(), $context->getRequest()->getIP(),
[ new RawMessage( 'testing' ) ]
);
$e = new UserBlockedError( $block );
$this->assertSame(
( new RawMessage( 'testing' ) )->text(),
$e->getMessageObject()->text(),
'UserBlockedError did not use the expected message.'
);
}
public function testConstructionProvidedAllParametersWithMultipleBlockMessages() {
$mockUser = $this->createMock( UserIdentity::class );
$mockLanguage = $this->createMock( Language::class );
$block = $this->createMock( AbstractBlock::class );
$this->setUpMockBlockFormatter(
$block, $mockUser, $mockLanguage, '1.2.3.4',
[ new RawMessage( 'testing' ), new RawMessage( 'testing2' ) ]
);
$e = new UserBlockedError( $block, $mockUser, $mockLanguage, '1.2.3.4' );
$this->assertSame(
"* testing\n* testing2",
$e->getMessageObject()->text(),
'UserBlockedError did not use the expected message.'
);
}
}