Addshore has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/95770


Change subject: Further expand Status unit tests
......................................................................

Further expand Status unit tests

When writing these I came accross a case that doesnt
quite seem right (I have left room for the test case
with a comment explaining)

Status now only has 4 untested methods

Change-Id: I61acf141de9f786793e8413d2d2ebb95e27e004d
---
M tests/phpunit/includes/StatusTest.php
1 file changed, 100 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/70/95770/1

diff --git a/tests/phpunit/includes/StatusTest.php 
b/tests/phpunit/includes/StatusTest.php
index 4f64e4f..21d0b02 100644
--- a/tests/phpunit/includes/StatusTest.php
+++ b/tests/phpunit/includes/StatusTest.php
@@ -245,7 +245,7 @@
        }
 
        /**
-        * @dataProvider provideGetWikiText
+        * @dataProvider provideGetWikiTextAndHtml
         * @covers Status::getWikiText
         * @todo test long and short context messages generated through this 
method
         *       this can not really be done now due to use of 
wfMessage()->plain()
@@ -256,11 +256,22 @@
        }
 
        /**
+        * @dataProvider provideGetWikiTextAndHtml
+        * @covers Status::getHtml
+        * @todo test long and short context messages generated through this 
method
+        *       this can not really be done now due to use of 
$this->getWikiText using wfMessage()->plain()
+        *       It is possible to mock such methods but only if namespaces are 
used
+        */
+       public function testGetHtml( Status $status, $expected ) {
+               $this->assertEquals( $expected, $status->getHTML() );
+       }
+
+       /**
         * @return array of arrays with values;
         *    0 => status object
         *    1 => expected string (with no context)
         */
-       public static function provideGetWikiText() {
+       public static function provideGetWikiTextAndHtml() {
                $testCases = array();
 
                $testCases[ 'GoodStatus' ] = array(
@@ -308,12 +319,96 @@
                return $testCases;
        }
 
-       //todo test getMessage
+       /**
+        * @dataProvider provideGetMessage
+        * @covers Status::getMessage
+        * @todo test long and short context messages generated through this 
method
+        */
+       public function testGetMessage( Status $status, $expectedParams = 
array(), $expectedKey ) {
+               $message = $status->getMessage();
+               $this->assertInstanceOf( 'Message', $message );
+               $this->assertEquals( $expectedParams, $message->getParams() );
+               $this->assertEquals( $expectedKey, $message->getKey() );
+       }
+
+       /**
+        * @return array of arrays with values;
+        *    0 => status object
+        *    1 => expected Message Params (with no context)
+        */
+       public static function provideGetMessage() {
+               $testCases = array();
+
+               $testCases[ 'GoodStatus' ] = array(
+                       new Status(),
+                       array( "Status::getMessage called for a good result, 
this is incorrect\n" ),
+                       'internalerror_info'
+               );
+
+               $status = new Status();
+               $status->ok = false;
+               $testCases[ 'GoodButNoError' ] = array(
+                       $status,
+                       array( "Status::getMessage: Invalid result object: no 
error text but not OK\n" ),
+                       'internalerror_info'
+               );
+
+               $status = new Status();
+               $status->warning( 'fooBar!' );
+               $testCases[ '1StringWarning' ] = array(
+                       $status,
+                       array(),
+                       "fooBar!"
+               );
+
+               //NOTE: this seems to return a string instead of a Message 
object...
+//             $status = new Status();
+//             $status->warning( 'fooBar!' );
+//             $status->warning( 'fooBar2!' );
+//             $testCases[ '2StringWarnings' ] = array(
+//                     $status,
+//                     array(),
+//                     ''
+//             );
+
+               $status = new Status();
+               $status->warning( new Message( 'fooBar!', array( 'foo', 'bar' ) 
 ) );
+               $testCases[ '1MessageWarning' ] = array(
+                       $status,
+                       array( 'foo', 'bar' ),
+                       "fooBar!",
+               );
+
+               //NOTE: this seems to return a string instead of a Message 
object...
+//             $status = new Status();
+//             $status->warning( new Message( 'fooBar!', array( 'foo', 'bar' ) 
) );
+//             $status->warning( new Message( 'fooBar2!' ) );
+//             $testCases[ '2MessageWarnings' ] = array(
+//                     $status,
+//                     array(),
+//                     "",
+//             );
+
+               return $testCases;
+       }
+
+       /**
+        * @covers Status::replaceMessage
+        */
+       public function testReplaceMessage() {
+               $status = new Status();
+               $message = new Message( 'key1', array( 'foo1', 'bar1' ) );
+               $status->error( $message );
+               $newMessage = new Message( 'key2', array( 'foo2', 'bar2' ) );
+
+               $status->replaceMessage( $message, $newMessage );
+
+               $this->assertEquals( $newMessage, $status->errors[0]['message'] 
);
+       }
+
        //todo test getErrorMessage
-       //todo test getHTML
        //todo test getErrorMessageArray
        //todo test getStatusArray
        //todo test getErrorsByType
-       //todo test replaceMessage
 
 }

-- 
To view, visit https://gerrit.wikimedia.org/r/95770
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I61acf141de9f786793e8413d2d2ebb95e27e004d
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Addshore <addshorew...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to