X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2Fapi%2FApiOptionsTest.php;h=7e45f4da123ce740876eb98f6204a8d915a915d9;hb=d84c3dde5af90c5c3497d18e427a5c2a38ac6ca8;hp=fff05c76bf291ced311d2d693058d63ddda8291a;hpb=a8247aba334928ac125c641cef6cdf5bb4f3ca4a;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/includes/api/ApiOptionsTest.php b/tests/phpunit/includes/api/ApiOptionsTest.php index fff05c76bf..7e45f4da12 100644 --- a/tests/phpunit/includes/api/ApiOptionsTest.php +++ b/tests/phpunit/includes/api/ApiOptionsTest.php @@ -17,7 +17,7 @@ class ApiOptionsTest extends MediaWikiLangTestCase { /** @var DerivativeContext */ private $mContext; - private static $Success = array( 'options' => 'success' ); + private static $Success = [ 'options' => 'success' ]; protected function setUp() { parent::setUp(); @@ -28,13 +28,13 @@ class ApiOptionsTest extends MediaWikiLangTestCase { // Set up groups and rights $this->mUserMock->expects( $this->any() ) - ->method( 'getEffectiveGroups' )->will( $this->returnValue( array( '*', 'user' ) ) ); + ->method( 'getEffectiveGroups' )->will( $this->returnValue( [ '*', 'user' ] ) ); $this->mUserMock->expects( $this->any() ) - ->method( 'isAllowed' )->will( $this->returnValue( true ) ); + ->method( 'isAllowedAny' )->will( $this->returnValue( true ) ); // Set up callback for User::getOptionKinds $this->mUserMock->expects( $this->any() ) - ->method( 'getOptionKinds' )->will( $this->returnCallback( array( $this, 'getOptionKinds' ) ) ); + ->method( 'getOptionKinds' )->will( $this->returnCallback( [ $this, 'getOptionKinds' ] ) ); // No actual DB data $this->mUserMock->expects( $this->any() ) @@ -48,43 +48,43 @@ class ApiOptionsTest extends MediaWikiLangTestCase { $main = new ApiMain( $this->mContext ); // Empty session - $this->mSession = array(); + $this->mSession = []; $this->mTested = new ApiOptions( $main, 'options' ); - $this->mergeMwGlobalArrayValue( 'wgHooks', array( - 'GetPreferences' => array( - array( $this, 'hookGetPreferences' ) - ) - ) ); + $this->mergeMwGlobalArrayValue( 'wgHooks', [ + 'GetPreferences' => [ + [ $this, 'hookGetPreferences' ] + ] + ] ); } public function hookGetPreferences( $user, &$preferences ) { - $preferences = array(); + $preferences = []; - foreach ( array( 'name', 'willBeNull', 'willBeEmpty', 'willBeHappy' ) as $k ) { - $preferences[$k] = array( + foreach ( [ 'name', 'willBeNull', 'willBeEmpty', 'willBeHappy' ] as $k ) { + $preferences[$k] = [ 'type' => 'text', 'section' => 'test', 'label' => ' ', - ); + ]; } - $preferences['testmultiselect'] = array( + $preferences['testmultiselect'] = [ 'type' => 'multiselect', - 'options' => array( - 'Test' => array( + 'options' => [ + 'Test' => [ 'Some HTML here for option 1' => 'opt1', 'Some HTML here for option 2' => 'opt2', 'Some HTML here for option 3' => 'opt3', 'Some HTML here for option 4' => 'opt4', - ), - ), + ], + ], 'section' => 'test', 'label' => ' ', 'prefix' => 'testmultiselect-', - 'default' => array(), - ); + 'default' => [], + ]; return true; } @@ -97,7 +97,7 @@ class ApiOptionsTest extends MediaWikiLangTestCase { */ public function getOptionKinds( IContextSource $context, $options = null ) { // Match with above. - $kinds = array( + $kinds = [ 'name' => 'registered', 'willBeNull' => 'registered', 'willBeEmpty' => 'registered', @@ -107,13 +107,13 @@ class ApiOptionsTest extends MediaWikiLangTestCase { 'testmultiselect-opt3' => 'registered-multiselect', 'testmultiselect-opt4' => 'registered-multiselect', 'special' => 'special', - ); + ]; if ( $options === null ) { return $kinds; } - $mapping = array(); + $mapping = []; foreach ( $options as $key => $value ) { if ( isset( $kinds[$key] ) ) { $mapping[$key] = $kinds[$key]; @@ -127,13 +127,13 @@ class ApiOptionsTest extends MediaWikiLangTestCase { return $mapping; } - private function getSampleRequest( $custom = array() ) { - $request = array( + private function getSampleRequest( $custom = [] ) { + $request = [ 'token' => '123ABC', 'change' => null, 'optionname' => null, 'optionvalue' => null, - ); + ]; return array_merge( $request, $custom ); } @@ -142,14 +142,14 @@ class ApiOptionsTest extends MediaWikiLangTestCase { $this->mContext->setRequest( new FauxRequest( $request, true, $this->mSession ) ); $this->mTested->execute(); - return $this->mTested->getResult()->getResultData( null, array( 'Strip' => 'all' ) ); + return $this->mTested->getResult()->getResultData( null, [ 'Strip' => 'all' ] ); } /** - * @expectedException UsageException + * @expectedException ApiUsageException */ public function testNoToken() { - $request = $this->getSampleRequest( array( 'token' => null ) ); + $request = $this->getSampleRequest( [ 'token' => null ] ); $this->executeQuery( $request ); } @@ -163,27 +163,23 @@ class ApiOptionsTest extends MediaWikiLangTestCase { $request = $this->getSampleRequest(); $this->executeQuery( $request ); - } catch ( UsageException $e ) { - $this->assertEquals( 'notloggedin', $e->getCodeString() ); - $this->assertEquals( 'Anonymous users cannot change preferences', $e->getMessage() ); - + } catch ( ApiUsageException $e ) { + $this->assertTrue( ApiTestCase::apiExceptionHasCode( $e, 'notloggedin' ) ); return; } - $this->fail( "UsageException was not thrown" ); + $this->fail( "ApiUsageException was not thrown" ); } public function testNoOptionname() { try { - $request = $this->getSampleRequest( array( 'optionvalue' => '1' ) ); + $request = $this->getSampleRequest( [ 'optionvalue' => '1' ] ); $this->executeQuery( $request ); - } catch ( UsageException $e ) { - $this->assertEquals( 'nooptionname', $e->getCodeString() ); - $this->assertEquals( 'The optionname parameter must be set', $e->getMessage() ); - + } catch ( ApiUsageException $e ) { + $this->assertTrue( ApiTestCase::apiExceptionHasCode( $e, 'nooptionname' ) ); return; } - $this->fail( "UsageException was not thrown" ); + $this->fail( "ApiUsageException was not thrown" ); } public function testNoChanges() { @@ -200,19 +196,17 @@ class ApiOptionsTest extends MediaWikiLangTestCase { $request = $this->getSampleRequest(); $this->executeQuery( $request ); - } catch ( UsageException $e ) { - $this->assertEquals( 'nochanges', $e->getCodeString() ); - $this->assertEquals( 'No changes were requested', $e->getMessage() ); - + } catch ( ApiUsageException $e ) { + $this->assertTrue( ApiTestCase::apiExceptionHasCode( $e, 'nochanges' ) ); return; } - $this->fail( "UsageException was not thrown" ); + $this->fail( "ApiUsageException was not thrown" ); } public function testReset() { $this->mUserMock->expects( $this->once() ) ->method( 'resetOptions' ) - ->with( $this->equalTo( array( 'all' ) ) ); + ->with( $this->equalTo( [ 'all' ] ) ); $this->mUserMock->expects( $this->never() ) ->method( 'setOption' ); @@ -220,7 +214,7 @@ class ApiOptionsTest extends MediaWikiLangTestCase { $this->mUserMock->expects( $this->once() ) ->method( 'saveSettings' ); - $request = $this->getSampleRequest( array( 'reset' => '' ) ); + $request = $this->getSampleRequest( [ 'reset' => '' ] ); $response = $this->executeQuery( $request ); @@ -230,7 +224,7 @@ class ApiOptionsTest extends MediaWikiLangTestCase { public function testResetKinds() { $this->mUserMock->expects( $this->once() ) ->method( 'resetOptions' ) - ->with( $this->equalTo( array( 'registered' ) ) ); + ->with( $this->equalTo( [ 'registered' ] ) ); $this->mUserMock->expects( $this->never() ) ->method( 'setOption' ); @@ -238,7 +232,7 @@ class ApiOptionsTest extends MediaWikiLangTestCase { $this->mUserMock->expects( $this->once() ) ->method( 'saveSettings' ); - $request = $this->getSampleRequest( array( 'reset' => '', 'resetkinds' => 'registered' ) ); + $request = $this->getSampleRequest( [ 'reset' => '', 'resetkinds' => 'registered' ] ); $response = $this->executeQuery( $request ); @@ -256,7 +250,7 @@ class ApiOptionsTest extends MediaWikiLangTestCase { $this->mUserMock->expects( $this->once() ) ->method( 'saveSettings' ); - $request = $this->getSampleRequest( array( 'optionname' => 'name', 'optionvalue' => 'value' ) ); + $request = $this->getSampleRequest( [ 'optionname' => 'name', 'optionvalue' => 'value' ] ); $response = $this->executeQuery( $request ); @@ -274,7 +268,7 @@ class ApiOptionsTest extends MediaWikiLangTestCase { $this->mUserMock->expects( $this->once() ) ->method( 'saveSettings' ); - $request = $this->getSampleRequest( array( 'optionname' => 'name' ) ); + $request = $this->getSampleRequest( [ 'optionname' => 'name' ] ); $response = $this->executeQuery( $request ); $this->assertEquals( self::$Success, $response ); @@ -284,33 +278,20 @@ class ApiOptionsTest extends MediaWikiLangTestCase { $this->mUserMock->expects( $this->never() ) ->method( 'resetOptions' ); - $this->mUserMock->expects( $this->at( 2 ) ) - ->method( 'getOptions' ); - - $this->mUserMock->expects( $this->at( 5 ) ) + $this->mUserMock->expects( $this->exactly( 3 ) ) ->method( 'setOption' ) - ->with( $this->equalTo( 'willBeNull' ), $this->identicalTo( null ) ); - - $this->mUserMock->expects( $this->at( 6 ) ) - ->method( 'getOptions' ); - - $this->mUserMock->expects( $this->at( 7 ) ) - ->method( 'setOption' ) - ->with( $this->equalTo( 'willBeEmpty' ), $this->equalTo( '' ) ); - - $this->mUserMock->expects( $this->at( 8 ) ) - ->method( 'getOptions' ); - - $this->mUserMock->expects( $this->at( 9 ) ) - ->method( 'setOption' ) - ->with( $this->equalTo( 'willBeHappy' ), $this->equalTo( 'Happy' ) ); + ->withConsecutive( + [ $this->equalTo( 'willBeNull' ), $this->identicalTo( null ) ], + [ $this->equalTo( 'willBeEmpty' ), $this->equalTo( '' ) ], + [ $this->equalTo( 'willBeHappy' ), $this->equalTo( 'Happy' ) ] + ); $this->mUserMock->expects( $this->once() ) ->method( 'saveSettings' ); - $request = $this->getSampleRequest( array( + $request = $this->getSampleRequest( [ 'change' => 'willBeNull|willBeEmpty=|willBeHappy=Happy' - ) ); + ] ); $response = $this->executeQuery( $request ); @@ -321,29 +302,22 @@ class ApiOptionsTest extends MediaWikiLangTestCase { $this->mUserMock->expects( $this->once() ) ->method( 'resetOptions' ); - $this->mUserMock->expects( $this->at( 5 ) ) - ->method( 'getOptions' ); - - $this->mUserMock->expects( $this->at( 6 ) ) + $this->mUserMock->expects( $this->exactly( 2 ) ) ->method( 'setOption' ) - ->with( $this->equalTo( 'willBeHappy' ), $this->equalTo( 'Happy' ) ); - - $this->mUserMock->expects( $this->at( 7 ) ) - ->method( 'getOptions' ); - - $this->mUserMock->expects( $this->at( 8 ) ) - ->method( 'setOption' ) - ->with( $this->equalTo( 'name' ), $this->equalTo( 'value' ) ); + ->withConsecutive( + [ $this->equalTo( 'willBeHappy' ), $this->equalTo( 'Happy' ) ], + [ $this->equalTo( 'name' ), $this->equalTo( 'value' ) ] + ); $this->mUserMock->expects( $this->once() ) ->method( 'saveSettings' ); - $args = array( + $args = [ 'reset' => '', 'change' => 'willBeHappy=Happy', 'optionname' => 'name', 'optionvalue' => 'value' - ); + ]; $response = $this->executeQuery( $this->getSampleRequest( $args ) ); @@ -354,29 +328,22 @@ class ApiOptionsTest extends MediaWikiLangTestCase { $this->mUserMock->expects( $this->never() ) ->method( 'resetOptions' ); - $this->mUserMock->expects( $this->at( 4 ) ) - ->method( 'setOption' ) - ->with( $this->equalTo( 'testmultiselect-opt1' ), $this->identicalTo( true ) ); - - $this->mUserMock->expects( $this->at( 5 ) ) - ->method( 'setOption' ) - ->with( $this->equalTo( 'testmultiselect-opt2' ), $this->identicalTo( null ) ); - - $this->mUserMock->expects( $this->at( 6 ) ) + $this->mUserMock->expects( $this->exactly( 4 ) ) ->method( 'setOption' ) - ->with( $this->equalTo( 'testmultiselect-opt3' ), $this->identicalTo( false ) ); - - $this->mUserMock->expects( $this->at( 7 ) ) - ->method( 'setOption' ) - ->with( $this->equalTo( 'testmultiselect-opt4' ), $this->identicalTo( false ) ); + ->withConsecutive( + [ $this->equalTo( 'testmultiselect-opt1' ), $this->identicalTo( true ) ], + [ $this->equalTo( 'testmultiselect-opt2' ), $this->identicalTo( null ) ], + [ $this->equalTo( 'testmultiselect-opt3' ), $this->identicalTo( false ) ], + [ $this->equalTo( 'testmultiselect-opt4' ), $this->identicalTo( false ) ] + ); $this->mUserMock->expects( $this->once() ) ->method( 'saveSettings' ); - $request = $this->getSampleRequest( array( + $request = $this->getSampleRequest( [ 'change' => 'testmultiselect-opt1=1|testmultiselect-opt2|' . 'testmultiselect-opt3=|testmultiselect-opt4=0' - ) ); + ] ); $response = $this->executeQuery( $request ); @@ -390,20 +357,20 @@ class ApiOptionsTest extends MediaWikiLangTestCase { $this->mUserMock->expects( $this->never() ) ->method( 'saveSettings' ); - $request = $this->getSampleRequest( array( + $request = $this->getSampleRequest( [ 'change' => 'special=1' - ) ); + ] ); $response = $this->executeQuery( $request ); - $this->assertEquals( array( + $this->assertEquals( [ 'options' => 'success', - 'warnings' => array( - 'options' => array( - 'warnings' => "Validation error for 'special': cannot be set by this module" - ) - ) - ), $response ); + 'warnings' => [ + 'options' => [ + 'warnings' => "Validation error for \"special\": cannot be set by this module." + ] + ] + ], $response ); } public function testUnknownOption() { @@ -413,20 +380,20 @@ class ApiOptionsTest extends MediaWikiLangTestCase { $this->mUserMock->expects( $this->never() ) ->method( 'saveSettings' ); - $request = $this->getSampleRequest( array( + $request = $this->getSampleRequest( [ 'change' => 'unknownOption=1' - ) ); + ] ); $response = $this->executeQuery( $request ); - $this->assertEquals( array( + $this->assertEquals( [ 'options' => 'success', - 'warnings' => array( - 'options' => array( - 'warnings' => "Validation error for 'unknownOption': not a valid preference" - ) - ) - ), $response ); + 'warnings' => [ + 'options' => [ + 'warnings' => "Validation error for \"unknownOption\": not a valid preference." + ] + ] + ], $response ); } public function testUserjsOption() { @@ -440,9 +407,9 @@ class ApiOptionsTest extends MediaWikiLangTestCase { $this->mUserMock->expects( $this->once() ) ->method( 'saveSettings' ); - $request = $this->getSampleRequest( array( + $request = $this->getSampleRequest( [ 'change' => 'userjs-option=1' - ) ); + ] ); $response = $this->executeQuery( $request );