wiki.techinc.nl/tests/phpunit/unit/includes/HookContainer/DeprecatedHooksTest.php
Tim Starling 977ee0730e Change HookContainer's namespace from HookRunner to HookContainer
It makes even less sense now that HookRunner has been modularized, with
API hooks being split out to ApiHookRunner. HookRunner is inherently
local and private and doesn't deserve to be a namespace.

Change-Id: I97ddc56e96c7bfeb1594f4a84619665aee9c401c
2020-04-29 10:58:24 +10:00

75 lines
2.6 KiB
PHP

<?php
namespace MediaWiki\HookContainer;
use MediaWikiUnitTestCase;
use Wikimedia\TestingAccessWrapper;
class DeprecatedHooksTest extends MediaWikiUnitTestCase {
/**
* @covers \MediaWiki\HookContainer\DeprecatedHooks::__construct
* @covers \MediaWiki\HookContainer\DeprecatedHooks::isHookDeprecated
*/
public function testIsHookDeprecated() {
$extDeprecatedHooks = [
'FooBaz' => [ 'deprecatedVersion' => '1.35', 'component' => 'ComponentFooBaz' ]
];
$deprecatedHooks = new DeprecatedHooks( $extDeprecatedHooks );
$this->assertTrue( $deprecatedHooks->isHookDeprecated( 'FooBaz' ) );
$this->assertFalse( $deprecatedHooks->isHookDeprecated( 'FooBazBar' ) );
}
/**
* @covers \MediaWiki\HookContainer\DeprecatedHooks::markDeprecated
*/
public function testMarkDeprecatedException() {
$extDeprecatedHooks = [
'FooBaz' => [ 'deprecatedVersion' => '1.35', 'component' => 'ComponentFooBaz' ]
];
$deprecatedHooks = new DeprecatedHooks( $extDeprecatedHooks );
$this->expectExceptionMessage(
"Cannot mark hook 'FooBaz' deprecated with version 1.31. " .
"It is already marked deprecated with version 1.35"
);
$deprecatedHooks->markDeprecated( 'FooBaz', '1.31' );
}
/**
* @covers \MediaWiki\HookContainer\DeprecatedHooks::markDeprecated
*/
public function testMarkDeprecated() {
$deprecatedHooks = new DeprecatedHooks();
$deprecatedHooks->markDeprecated( 'FooBaz', '1.31', 'ComponentFooBaz' );
$allDeprecated = $deprecatedHooks->getDeprecationInfo();
$this->assertArrayHasKey( 'FooBaz', $allDeprecated );
$this->assertContains(
[ 'deprecatedVersion' => '1.31', 'component' => 'ComponentFooBaz' ],
$allDeprecated
);
}
/**
* @covers \MediaWiki\HookContainer\DeprecatedHooks::getDeprecationInfo
*/
public function testGetDeprecationInfo() {
$extDeprecatedHooks = [
'FooBar' => [ 'deprecatedVersion' => '1.21', 'component' => 'ComponentFooBar' ],
'FooBarBaz' => [ 'deprecatedVersion' => '1.21' ]
];
$deprecatedHooksWrapper = TestingAccessWrapper::newFromObject( new DeprecatedHooks() );
$preRegisteredDeprecated = $deprecatedHooksWrapper->deprecatedHooks;
$deprecatedHooks = new DeprecatedHooks( $extDeprecatedHooks );
$hookDeprecationInfo = $deprecatedHooks->getDeprecationInfo( 'FooBar' );
$this->assertNull( $deprecatedHooks->getDeprecationInfo( 'FooBazBaz' ) );
$this->assertEquals(
$hookDeprecationInfo,
[ 'deprecatedVersion' => '1.21', 'component' => 'ComponentFooBar' ]
);
$this->assertCount(
count( $preRegisteredDeprecated ) + count( $extDeprecatedHooks ),
$deprecatedHooks->getDeprecationInfo()
);
}
}