wiki.techinc.nl/tests/phpunit/unit/includes/Revision/SlotRoleHandlerTest.php
Timo Tijhof 311b2d0e98 Revision,Storage: Widen @covers tags in tests
> Given all called same-class methods are de-facto and liberally claimed,
> and that we keep the coverage limited to the subject class, it maintains
> the spirit and intent by listing the class as a whole instead.
>
> PHPUnit offers a more precise tool when you need it (i.e. when testing
> legacy monster/god classes), but for well-written code, the
> class-wide tag is exactly what you want.
>
> We lose useful coverage and waste valuable time on keeping tags
> accurate through refactors, especially private functions (or worse,
> forget to update it).
> Tracking tiny per-method details wastes time in realizing (and
> fixing) when people inevitably don't keep them in sync, and time
> lost in finding uncovered code to write tests to realize it was
> already covered but "not yet claimed".

Ref https://gerrit.wikimedia.org/r/q/owner:Krinkle+is:merged+message:Widen

Change-Id: If90fc5285a067ec8f706d87b2ba1ae85020e2ba0
2024-08-30 04:23:11 +00:00

60 lines
1.8 KiB
PHP

<?php
namespace MediaWiki\Tests\Revision;
use MediaWiki\Page\PageIdentityValue;
use MediaWiki\Revision\SlotRoleHandler;
use MediaWiki\Title\Title;
/**
* @covers \MediaWiki\Revision\SlotRoleHandler
*/
class SlotRoleHandlerTest extends \MediaWikiUnitTestCase {
public function testConstruction() {
$handler = new SlotRoleHandler( 'foo', 'FooModel', [ 'frob' => 'niz' ] );
$this->assertSame( 'foo', $handler->getRole() );
$this->assertSame( 'slot-name-foo', $handler->getNameMessageKey() );
$title = $this->createMock( Title::class );
$this->assertSame( 'FooModel', $handler->getDefaultModel( $title ) );
$hints = $handler->getOutputLayoutHints();
$this->assertArrayHasKey( 'frob', $hints );
$this->assertSame( 'niz', $hints['frob'] );
$this->assertArrayHasKey( 'display', $hints );
$this->assertArrayHasKey( 'region', $hints );
$this->assertArrayHasKey( 'placement', $hints );
}
public function testDerived() {
$handler = new SlotRoleHandler( 'foo', 'FooModel', [ 'frob' => 'niz' ] );
$this->assertFalse( $handler->isDerived() );
$handler = new SlotRoleHandler( 'foo', 'FooModel', [ 'frob' => 'niz' ], false );
$this->assertFalse( $handler->isDerived() );
$handler = new SlotRoleHandler( 'foo', 'FooModel', [ 'frob' => 'niz' ], true );
$this->assertTrue( $handler->isDerived() );
}
public function testIsAllowedModel() {
$handler = new SlotRoleHandler( 'foo', 'FooModel' );
$this->assertTrue( $handler->isAllowedModel(
'FooModel',
PageIdentityValue::localIdentity( 1, NS_MAIN, 'Test' )
) );
$this->assertFalse( $handler->isAllowedModel(
'QuaxModel',
PageIdentityValue::localIdentity( 1, NS_MAIN, 'Test' ) )
);
}
public function testSupportsArticleCount() {
$handler = new SlotRoleHandler( 'foo', 'FooModel' );
$this->assertFalse( $handler->supportsArticleCount() );
}
}