Merge "Type hint against LinkTarget in WatchedItemStore"
[lhc/web/wiklou.git] / tests / phpunit / unit / includes / Revision / MainSlotRoleHandlerTest.php
1 <?php
2
3 namespace MediaWiki\Tests\Revision;
4
5 use MediaWiki\Revision\MainSlotRoleHandler;
6 use MediaWikiUnitTestCase;
7 use PHPUnit\Framework\MockObject\MockObject;
8 use Title;
9
10 /**
11 * @covers \MediaWiki\Revision\MainSlotRoleHandler
12 */
13 class MainSlotRoleHandlerTest extends MediaWikiUnitTestCase {
14
15 private function makeTitleObject( $ns ) {
16 /** @var Title|MockObject $title */
17 $title = $this->getMockBuilder( Title::class )
18 ->disableOriginalConstructor()
19 ->getMock();
20
21 $title->method( 'getNamespace' )
22 ->willReturn( $ns );
23
24 return $title;
25 }
26
27 /**
28 * @covers \MediaWiki\Revision\MainSlotRoleHandler::__construct
29 * @covers \MediaWiki\Revision\MainSlotRoleHandler::getRole()
30 * @covers \MediaWiki\Revision\MainSlotRoleHandler::getNameMessageKey()
31 * @covers \MediaWiki\Revision\MainSlotRoleHandler::getOutputLayoutHints()
32 */
33 public function testConstruction() {
34 $handler = new MainSlotRoleHandler( [] );
35 $this->assertSame( 'main', $handler->getRole() );
36 $this->assertSame( 'slot-name-main', $handler->getNameMessageKey() );
37
38 $hints = $handler->getOutputLayoutHints();
39 $this->assertArrayHasKey( 'display', $hints );
40 $this->assertArrayHasKey( 'region', $hints );
41 $this->assertArrayHasKey( 'placement', $hints );
42 }
43
44 /**
45 * @covers \MediaWiki\Revision\MainSlotRoleHandler::getDefaultModel()
46 */
47 public function testFetDefaultModel() {
48 $handler = new MainSlotRoleHandler( [ 100 => CONTENT_MODEL_TEXT ] );
49
50 // For the main handler, the namespace determins the default model
51 $titleMain = $this->makeTitleObject( NS_MAIN );
52 $this->assertSame( CONTENT_MODEL_WIKITEXT, $handler->getDefaultModel( $titleMain ) );
53
54 $title100 = $this->makeTitleObject( 100 );
55 $this->assertSame( CONTENT_MODEL_TEXT, $handler->getDefaultModel( $title100 ) );
56 }
57
58 /**
59 * @covers \MediaWiki\Revision\MainSlotRoleHandler::isAllowedModel()
60 */
61 public function testIsAllowedModel() {
62 $handler = new MainSlotRoleHandler( [] );
63
64 // For the main handler, (nearly) all models are allowed
65 $title = $this->makeTitleObject( NS_MAIN );
66 $this->assertTrue( $handler->isAllowedModel( CONTENT_MODEL_WIKITEXT, $title ) );
67 $this->assertTrue( $handler->isAllowedModel( CONTENT_MODEL_TEXT, $title ) );
68 }
69
70 /**
71 * @covers \MediaWiki\Revision\MainSlotRoleHandler::supportsArticleCount()
72 */
73 public function testSupportsArticleCount() {
74 $handler = new MainSlotRoleHandler( [] );
75
76 $this->assertTrue( $handler->supportsArticleCount() );
77 }
78
79 }