These new classes provide a mechanism for defining the behavior of slots, like the content models it supports. This acts as an extension point for extensions that need to define custom slots, like the MediaInfo extension for the SDC project. Bug: T194046 Change-Id: Ia20c98eee819293199e541be75b5521f6413bc2f
75 lines
2.3 KiB
PHP
75 lines
2.3 KiB
PHP
<?php
|
|
|
|
namespace MediaWiki\Tests\Revision;
|
|
|
|
use MediaWiki\Revision\FallbackSlotRoleHandler;
|
|
use MediaWikiTestCase;
|
|
use Title;
|
|
|
|
/**
|
|
* @covers \MediaWiki\Revision\FallbackSlotRoleHandler
|
|
*/
|
|
class FallbackSlotRoleHandlerTest extends MediaWikiTestCase {
|
|
|
|
private function makeBlankTitleObject() {
|
|
/** @var Title $title */
|
|
$title = $this->getMockBuilder( Title::class )
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
|
|
return $title;
|
|
}
|
|
|
|
/**
|
|
* @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_TEXT, $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() );
|
|
}
|
|
|
|
}
|