Avoid the complexity of MWDebug added in 2704be7df8.
Motivated by I1d4a166b6dff8b, which makes the native deprecation happen
always, and would otherwise make this test fail since native warnings
become exceptions in PHPUnit.
Change-Id: I83f19c26bb69b8aa5d1a91f7aa286aad56f5e64d
83 lines
2.2 KiB
PHP
83 lines
2.2 KiB
PHP
<?php
|
|
|
|
use MediaWiki\Debug\DeprecatablePropertyArray;
|
|
|
|
/**
|
|
* @covers \MediaWiki\Debug\DeprecatablePropertyArray
|
|
*/
|
|
class DeprecatablePropertyArrayTest extends MediaWikiUnitTestCase {
|
|
|
|
private const PROP_NAME = 'test_property';
|
|
|
|
/**
|
|
* @dataProvider provideDeprecationWarning
|
|
* @param callable $callback
|
|
*/
|
|
public function testDeprecationWarning( callable $callback, string $message ) {
|
|
$this->expectDeprecation();
|
|
$this->expectDeprecationMessage( $message );
|
|
$callback();
|
|
}
|
|
|
|
public function provideDeprecationWarning() {
|
|
$propName = self::PROP_NAME;
|
|
$array = new DeprecatablePropertyArray(
|
|
[
|
|
self::PROP_NAME => 'test_value',
|
|
'callback' => function () {
|
|
return 'callback_test_value';
|
|
},
|
|
],
|
|
[
|
|
self::PROP_NAME => 'DEPRECATED_VERSION',
|
|
'callback' => 'DEPRECATED_VERSION',
|
|
],
|
|
'TEST'
|
|
);
|
|
|
|
yield 'get' => [
|
|
function () use ( $array ) {
|
|
$this->assertSame( 'test_value', $array[ self::PROP_NAME ] );
|
|
},
|
|
"TEST get '{$propName}'"
|
|
];
|
|
yield 'get, callback' => [
|
|
function () use ( $array ) {
|
|
$this->assertSame( 'callback_test_value', $array[ 'callback' ] );
|
|
},
|
|
"TEST get 'callback'"
|
|
];
|
|
yield 'exists' => [
|
|
function () use ( $array ) {
|
|
$this->assertTrue( isset( $array[ self::PROP_NAME ] ) );
|
|
},
|
|
"TEST exists '{$propName}'"
|
|
];
|
|
yield 'unset' => [
|
|
function () use ( $array ) {
|
|
unset( $array[ self::PROP_NAME ] );
|
|
},
|
|
"TEST unset '{$propName}'"
|
|
];
|
|
}
|
|
|
|
public function testNonDeprecated() {
|
|
$array = new DeprecatablePropertyArray( [], [], __METHOD__ );
|
|
$this->assertFalse( isset( $array[self::PROP_NAME] ) );
|
|
$array[self::PROP_NAME] = 'test_value';
|
|
$this->assertTrue( isset( $array[self::PROP_NAME] ) );
|
|
$this->assertSame( 'test_value', $array[self::PROP_NAME] );
|
|
unset( $array[self::PROP_NAME] );
|
|
$this->assertFalse( isset( $array[self::PROP_NAME] ) );
|
|
}
|
|
|
|
public function testNonDeprecatedNumerical() {
|
|
$array = new DeprecatablePropertyArray( [], [], __METHOD__ );
|
|
$this->assertFalse( isset( $array[0] ) );
|
|
$array[] = 'test_value';
|
|
$this->assertTrue( isset( $array[0] ) );
|
|
$this->assertSame( 'test_value', $array[0] );
|
|
unset( $array[0] );
|
|
$this->assertFalse( isset( $array[0] ) );
|
|
}
|
|
}
|