jenkins-bot has submitted this change and it was merged.

Change subject: Adopt ApiConventionsTest to MediaWiki 1.25 API module changes
......................................................................


Adopt ApiConventionsTest to MediaWiki 1.25 API module changes

Also minor style enhancements

Change-Id: I69008ed8aebb819bd536d3e9e79d41cc64d3495d
---
M repo/tests/phpunit/includes/api/ApiConventionsTest.php
1 file changed, 34 insertions(+), 21 deletions(-)

Approvals:
  Legoktm: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/repo/tests/phpunit/includes/api/ApiConventionsTest.php 
b/repo/tests/phpunit/includes/api/ApiConventionsTest.php
index 6016f7e..1c5b890 100644
--- a/repo/tests/phpunit/includes/api/ApiConventionsTest.php
+++ b/repo/tests/phpunit/includes/api/ApiConventionsTest.php
@@ -3,10 +3,15 @@
 namespace Wikibase\Test\Api;
 
 use PHPUnit_Framework_TestCase;
+use ApiBase;
+use ApiMain;
+use FauxRequest;
+use ReflectionMethod;
 
 /**
  *
  * @group Wikibase
+ * @group WikibaseRepo
  * @group WikibaseAPI
  *
  * @group medium
@@ -20,7 +25,7 @@
                $argList = array();
 
                foreach ( $GLOBALS['wgAPIModules'] as $moduleClass ) {
-                       //make sure to only test Wikibase Api modules
+                       // Make sure to only test Wikibase Api modules
                        if ( strpos( $moduleClass, 'Wikibase' ) !== false ) {
                                $argList[] = array( $moduleClass );
                        }
@@ -30,33 +35,35 @@
        }
 
        /**
-       * Connects the assertions for the different methods and iterates 
through the api modules
-       * @dataProvider wikibaseApiModuleProvider
+        * Connects the assertions for the different methods and iterates 
through the api modules
+        *
+        * @dataProvider wikibaseApiModuleProvider
        */
        public function testApiConventions( $moduleClass ) {
                $params = array();
                $user =  $GLOBALS['wgUser'];
 
-               $request = new \FauxRequest( $params, true );
-               $main = new \ApiMain( $request );
+               $request = new FauxRequest( $params, true );
+               $main = new ApiMain( $request );
                $main->getContext()->setUser( $user );
                $module = new $moduleClass( $main, 'moduleClass' );
 
                $this->assertGetFinalParamDescription( $moduleClass, $module );
-               $this->assertGetExamples( $moduleClass, $module );
                $this->assertGetFinalDescription( $moduleClass, $module );
+               $this->assertGetExamplesMessages( $moduleClass, $module );
        }
 
        /**
         * This method is for the assertions in particular for 
getFinalDescription as defined in ApiBase
+        *
         * @param string $moduleClass one of the modules in 
$GLOBALS['wgAPIModules'], only in this function for the error messages
-        * @param Module $module is an instance of $moduleClass
+        * @param ApiBase $module is an instance of $moduleClass
         **/
-       private function assertGetFinalDescription ( $moduleClass, $module ) {
+       private function assertGetFinalDescription ( $moduleClass, ApiBase 
$module ) {
                $method = 'getFinalDescription';
                $descArray = $module->$method();
 
-               $rMethod = new \ReflectionMethod( $module, $method );
+               $rMethod = new ReflectionMethod( $module, $method );
                $this->assertTrue( $rMethod->isPublic(), 'the method ' . 
$method . ' of module ' . $moduleClass . ' is not public' );
 
                $this->assertNotEmpty( $module->$method(), 'the Module ' . 
$moduleClass . ' does not have the method ' . $method );
@@ -68,39 +75,45 @@
 
        /**
         * This method is for the assertions for getFinalParamDescription as 
defined in ApiBase, depending on getFinalParams
+        *
         * @param string $moduleClass one of the modules in 
$GLOBALS['wgAPIModules'], only in this function for the error messages
-        * @param Module $module is an instance of $moduleClass
+        * @param ApiBase $module is an instance of $moduleClass
         **/
-       private function assertGetFinalParamDescription ( $moduleClass, $module 
) {
+       private function assertGetFinalParamDescription ( $moduleClass, ApiBase 
$module ) {
                $method = 'getFinalParamDescription';
-               $paramsMethod = 'getFinalParams';
-               $paramsArray = $module->$paramsMethod();
+               $paramsArray = $module->getFinalParams();
+
                if ( !empty( $paramsArray ) ) {
                        $paramDescArray = $module->$method();
                        $this->assertNotEmpty( $paramDescArray, 'the array 
returned by the method ' . $method . ' of module ' . $moduleClass . ' is empty' 
);
 
-                       //comparing the keys of the arrays of 
getParamDescription and getParams
+                       // Comparing the keys of the arrays of 
getParamDescription and getParams
                        $arrayKeysMatch = !array_diff_key( $paramDescArray, 
$paramsArray ) && !array_diff_key( $paramsArray, $paramDescArray );
                        $this->assertTrue( $arrayKeysMatch, 'keys different at 
' . $moduleClass );
                }
        }
 
        /**
-        * This method is for the assertions of getExamples as defined in 
ApiBase
+        * This method is for the assertions of getExamplesMessages/ 
getExamples as defined in ApiBase
+        *
         * @param string $moduleClass one of the modules in 
$GLOBALS['wgAPIModules'], only in this function for the error messages
-        * @param Module $module is an instance of $moduleClass
+        * @param ApiBase $module is an instance of $moduleClass
         **/
-       private function assertGetExamples( $moduleClass, $module ) {
-               $method = 'getExamples';
-               $rMethod = new \ReflectionMethod( $moduleClass,  $method );
+       private function assertGetExamplesMessages( $moduleClass, ApiBase 
$module ) {
+               $method = 'getExamplesMessages';
+               $rMethod = new ReflectionMethod( $moduleClass,  $method );
                $rMethod->setAccessible( true );
                $exArray = $rMethod->invoke( $module );
 
                $this->assertNotEmpty( $exArray, 'there are no examples for ' . 
$moduleClass );
 
                foreach ( $exArray as $key => $value ) {
-                       $this->assertContains('api.php?action=', $key, 'the key 
' . $key . ' is not an url at ' . $moduleClass );
-                       $this->assertInternalType( 'string', $value, 'the value 
of the example for ' . $key . ' in ' . $moduleClass . ' is not a string' );
+                       $this->assertRegExp( '/^action=\w/', $key, 'the key ' . 
$key . ' is not an url at ' . $moduleClass );
+                       if ( is_string( $value ) ) {
+                               $this->assertTrue( wfMessage( $value 
)->exists(), "message ($value) for $key doesn't exist" );
+                       } else {
+                               $this->assertInstanceOf( 'Message', $value, 
'the value of the example for ' . $key . ' in ' . $moduleClass . ' is not a 
Message' );
+                       }
                }
 
        }

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I69008ed8aebb819bd536d3e9e79d41cc64d3495d
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Hoo man <[email protected]>
Gerrit-Reviewer: Addshore <[email protected]>
Gerrit-Reviewer: Aude <[email protected]>
Gerrit-Reviewer: Daniel Kinzler <[email protected]>
Gerrit-Reviewer: JanZerebecki <[email protected]>
Gerrit-Reviewer: Legoktm <[email protected]>
Gerrit-Reviewer: Lucie Kaffee <[email protected]>
Gerrit-Reviewer: Thiemo Mättig (WMDE) <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to