wiki.techinc.nl/tests/phpunit/unit/includes/Revision/FallbackSlotRoleHandlerTest.php
daniel a67cad6d0f Create fallback for undefined content models.
This causes RevisionStore to use FallbackContent instances to represent
content for which no content handler is defined.

This may happen when loading revisions using a model that was defined
by an extension that has since been uninstalled.

Bug: T220594
Bug: T220793
Bug: T228921
Change-Id: I5cc9e61223ab22406091479617b077512aa6ae2d
2020-07-22 19:59:09 +02:00

72 lines
2.2 KiB
PHP

<?php
namespace MediaWiki\Tests\Revision;
use MediaWiki\Revision\FallbackSlotRoleHandler;
use Title;
/**
* @covers \MediaWiki\Revision\FallbackSlotRoleHandler
*/
class FallbackSlotRoleHandlerTest extends \MediaWikiUnitTestCase {
/**
* @return Title
*/
private function makeBlankTitleObject() {
return $this->createMock( Title::class );
}
/**
* @covers \MediaWiki\Revision\FallbackSlotRoleHandler::__construct
* @covers \MediaWiki\Revision\FallbackSlotRoleHandler::getRole()
* @covers \MediaWiki\Revision\FallbackSlotRoleHandler::getNameMessageKey()
* @covers \MediaWiki\Revision\FallbackSlotRoleHandler::getDefaultModel()
* @covers \MediaWiki\Revision\FallbackSlotRoleHandler::getOutputLayoutHints()
*/
public function testConstruction() {
$handler = new FallbackSlotRoleHandler( 'foo' );
$this->assertSame( 'foo', $handler->getRole() );
$this->assertSame( 'slot-name-foo', $handler->getNameMessageKey() );
$title = $this->makeBlankTitleObject();
$this->assertSame( CONTENT_MODEL_UNKNOWN, $handler->getDefaultModel( $title ) );
$hints = $handler->getOutputLayoutHints();
$this->assertArrayHasKey( 'display', $hints );
$this->assertArrayHasKey( 'region', $hints );
$this->assertArrayHasKey( 'placement', $hints );
}
/**
* @covers \MediaWiki\Revision\FallbackSlotRoleHandler::isAllowedModel()
*/
public function testIsAllowedModel() {
$handler = new FallbackSlotRoleHandler( 'foo', 'FooModel' );
// For the fallback handler, no models are allowed
$title = $this->makeBlankTitleObject();
$this->assertFalse( $handler->isAllowedModel( 'FooModel', $title ) );
$this->assertFalse( $handler->isAllowedModel( 'QuaxModel', $title ) );
}
/**
* @covers \MediaWiki\Revision\SlotRoleHandler::isAllowedModel()
*/
public function testIsAllowedOn() {
$handler = new FallbackSlotRoleHandler( 'foo', 'FooModel' );
$title = $this->makeBlankTitleObject();
$this->assertFalse( $handler->isAllowedOn( $title ) );
}
/**
* @covers \MediaWiki\Revision\FallbackSlotRoleHandler::supportsArticleCount()
*/
public function testSupportsArticleCount() {
$handler = new FallbackSlotRoleHandler( 'foo', 'FooModel' );
$this->assertFalse( $handler->supportsArticleCount() );
}
}