2 use MediaWiki\Logger\LoggerFactory
;
5 * @covers MediaWikiTestCase
8 class MediaWikiTestCaseTest
extends MediaWikiTestCase
{
10 const GLOBAL_KEY_NONEXISTING
= 'MediaWikiTestCaseTestGLOBAL-NONExisting';
12 private static $startGlobals = array(
13 'MediaWikiTestCaseTestGLOBAL-ExistingString' => 'foo',
14 'MediaWikiTestCaseTestGLOBAL-ExistingStringEmpty' => '',
15 'MediaWikiTestCaseTestGLOBAL-ExistingArray' => array( 1, 'foo' => 'bar' ),
16 'MediaWikiTestCaseTestGLOBAL-ExistingArrayEmpty' => array(),
19 public static function setUpBeforeClass() {
20 parent
::setUpBeforeClass();
21 foreach ( self
::$startGlobals as $key => $value ) {
22 $GLOBALS[$key] = $value;
26 public static function tearDownAfterClass() {
27 parent
::tearDownAfterClass();
28 foreach ( self
::$startGlobals as $key => $value ) {
29 unset( $GLOBALS[$key] );
33 public function provideExistingKeysAndNewValues() {
34 $providedArray = array();
35 foreach ( array_keys( self
::$startGlobals ) as $key ) {
36 $providedArray[] = array( $key, 'newValue' );
37 $providedArray[] = array( $key, array( 'newValue' ) );
39 return $providedArray;
43 * @dataProvider provideExistingKeysAndNewValues
45 * @covers MediaWikiTestCase::setMwGlobals
46 * @covers MediaWikiTestCase::tearDown
48 public function testSetGlobalsAreRestoredOnTearDown( $globalKey, $newValue ) {
49 $this->setMwGlobals( $globalKey, $newValue );
53 'Global failed to correctly set'
59 self
::$startGlobals[$globalKey],
61 'Global failed to be restored on tearDown'
66 * @dataProvider provideExistingKeysAndNewValues
68 * @covers MediaWikiTestCase::stashMwGlobals
69 * @covers MediaWikiTestCase::tearDown
71 public function testStashedGlobalsAreRestoredOnTearDown( $globalKey, $newValue ) {
72 $this->stashMwGlobals( $globalKey );
73 $GLOBALS[$globalKey] = $newValue;
77 'Global failed to correctly set'
83 self
::$startGlobals[$globalKey],
85 'Global failed to be restored on tearDown'
90 * @covers MediaWikiTestCase::stashMwGlobals
92 public function testExceptionThrownWhenStashingNonExistentGlobals() {
93 $this->setExpectedException(
95 'Global with key ' . self
::GLOBAL_KEY_NONEXISTING
. ' doesn\'t exist and cant be stashed'
98 $this->stashMwGlobals( self
::GLOBAL_KEY_NONEXISTING
);
102 * @covers MediaWikiTestCase::setLogger
103 * @covers MediaWikiTestCase::restoreLogger
105 public function testLoggersAreRestoredOnTearDown() {
106 // replacing an existing logger
107 $logger1 = LoggerFactory
::getInstance( 'foo' );
108 $this->setLogger( 'foo', $this->getMock( '\Psr\Log\LoggerInterface' ) );
109 $logger2 = LoggerFactory
::getInstance( 'foo' );
111 $logger3 = LoggerFactory
::getInstance( 'foo' );
113 $this->assertSame( $logger1, $logger3 );
114 $this->assertNotSame( $logger1, $logger2 );
116 // replacing a non-existing logger
117 $this->setLogger( 'bar', $this->getMock( '\Psr\Log\LoggerInterface' ) );
118 $logger1 = LoggerFactory
::getInstance( 'bar' );
120 $logger2 = LoggerFactory
::getInstance( 'bar' );
122 $this->assertNotSame( $logger1, $logger2 );
123 $this->assertInstanceOf( '\Psr\Log\LoggerInterface', $logger2 );
125 // replacing same logger twice
126 $logger1 = LoggerFactory
::getInstance( 'baz' );
127 $this->setLogger( 'baz', $this->getMock( '\Psr\Log\LoggerInterface' ) );
128 $this->setLogger( 'baz', $this->getMock( '\Psr\Log\LoggerInterface' ) );
130 $logger2 = LoggerFactory
::getInstance( 'baz' );
132 $this->assertSame( $logger1, $logger2 );