Merge "CSSMin: Clean up the logic in getLocalFileReferences()"
[lhc/web/wiklou.git] / tests / phpunit / includes / StatusTest.php
index aa5367e..209b54c 100644 (file)
@@ -166,6 +166,29 @@ class StatusTest extends MediaWikiLangTestCase {
                }
        }
 
+       /**
+        * @dataProvider provideMockMessageDetails
+        * @covers Status::fatal
+        * @covers Status::getErrorsArray
+        * @covers Status::getStatusArray
+        */
+       public function testFatalWithMessage( $mockDetails ) {
+               $status = new Status();
+               $messages = $this->getMockMessages( $mockDetails );
+
+               foreach ( $messages as $message ) {
+                       $status->fatal( $message );
+               }
+               $errors = $status->getErrorsArray();
+
+               $this->assertEquals( count( $messages ), count( $errors ) );
+               foreach ( $messages as $key => $message ) {
+                       $expectedArray = array_merge( array( $message->getKey() ), $message->getParams() );
+                       $this->assertEquals( $errors[$key], $expectedArray );
+               }
+               $this->assertFalse( $status->isOK() );
+       }
+
        protected function getMockMessage( $key = 'key', $params = array() ) {
                $message = $this->getMockBuilder( 'Message' )
                        ->disableOriginalConstructor()
@@ -253,12 +276,14 @@ class StatusTest extends MediaWikiLangTestCase {
                $this->assertEquals( $expected, $method->invoke( $status, $params ) );
        }
 
-       /**
-        * @todo test cleanParams with a callback
-        */
        public static function provideCleanParams() {
+               $cleanCallback = function( $value ) {
+                       return '-' . $value . '-';
+               };
+
                return array(
                        array( false, array( 'foo' => 'bar' ), array( 'foo' => 'bar' ) ),
+                       array( $cleanCallback, array( 'foo' => 'bar' ), array( 'foo' => '-bar-' ) ),
                );
        }
 
@@ -494,4 +519,41 @@ class StatusTest extends MediaWikiLangTestCase {
                $this->assertEquals( $error, $errors[0]['message'] );
        }
 
+       /**
+        * @covers Status::__wakeup
+        */
+       public function testWakeUpSanitizesCallback() {
+               $status = new Status();
+               $status->cleanCallback = function( $value ) {
+                       return '-' . $value . '-';
+               };
+               $status->__wakeup();
+               $this->assertEquals( false, $status->cleanCallback );
+       }
+
+       /**
+        * @dataProvider provideNonObjectMessages
+        * @covers Status::getStatusArray
+        */
+       public function testGetStatusArrayWithNonObjectMessages( $nonObjMsg ) {
+               $status = new Status();
+               if( !array_key_exists( 1, $nonObjMsg ) ) {
+                       $status->warning( $nonObjMsg[0] );
+               } else {
+                       $status->warning( $nonObjMsg[0], $nonObjMsg[1] );
+               }
+
+               $array = $status->getWarningsArray(); // We use getWarningsArray to access getStatusArray
+
+               $this->assertEquals( 1, count( $array ) );
+               $this->assertEquals( $nonObjMsg, $array[0] );
+       }
+
+       public static function provideNonObjectMessages() {
+               return array(
+                       array( array( 'ImaString', array( 'param1' => 'value1' ) ) ),
+                       array( array( 'ImaString' ) ),
+               );
+       }
+
 }