Add basic unit test for dieOnBadUser api method

Change-Id: Ic9fd4e63b0a7e3508c600f34decb8ce18abc1597
This commit is contained in:
addshore 2013-11-15 19:34:53 +01:00 committed by Kunal Mehta
parent c02ced989c
commit 4cdfa4e1f8
2 changed files with 83 additions and 0 deletions

View file

@ -1,6 +1,8 @@
<?php <?php
/** /**
* Integration tests for the Thanks api module
*
* @covers ApiThank * @covers ApiThank
* *
* @group Thanks * @group Thanks

View file

@ -0,0 +1,81 @@
<?php
/**
* Unit tests for the thanks API module
*
* @group Thanks
* @group API
*
* @author Adam Shorland
*/
class ApiThankUnitTest extends MediaWikiTestCase {
static $moduleName = 'thank';
protected function getModule() {
return new ApiThank( new ApiMain(), self::$moduleName );
}
/**
* @dataProvider provideDieOnBadUser
* @covers ApiThank::dieOnBadUser
*/
public function testDieOnBadUser( $user, $expectedError ) {
$module = $this->getModule();
$method = new ReflectionMethod( $module, 'dieOnBadUser' );
$method->setAccessible( true );
if( $expectedError ) {
$this->setExpectedException( 'UsageException', $expectedError );
}
$method->invoke( $module, $user );
//perhaps the method should return true.. For now we must do this
$this->assertTrue( true );
}
public function provideDieOnBadUser() {
$testCases = array();
$mockUser = $this->getMock( 'User' );
$mockUser->expects( $this->once() )
->method( 'isAnon' )
->will( $this->returnValue( true ) );
$testCases[ 'anon' ] = array( $mockUser, 'Anonymous users cannot send thanks' );
$mockUser = $this->getMock( 'User' );
$mockUser->expects( $this->once() )
->method( 'isAnon' )
->will( $this->returnValue( false ) );
$mockUser->expects( $this->once() )
->method( 'pingLimiter' )
->will( $this->returnValue( true ) );
$testCases[ 'ping' ] = array( $mockUser, "You've exceeded your rate limit. Please wait some time and try again" );
$mockUser = $this->getMock( 'User' );
$mockUser->expects( $this->once() )
->method( 'isAnon' )
->will( $this->returnValue( false ) );
$mockUser->expects( $this->once() )
->method( 'pingLimiter' )
->will( $this->returnValue( false ) );
$mockUser->expects( $this->once() )
->method( 'isBlocked' )
->will( $this->returnValue( true ) );
$testCases[ 'blocked' ] = array( $mockUser, 'You have been blocked from editing' );
return $testCases;
}
//@todo test userAlreadySentThanksForRevision
//@todo test getRevisionFromParams
//@todo test getTitleFromRevision
//@todo test getSourceFromParams
//@todo test getUserIdFromRevision
//@todo test markResultSuccess
//@todo test sendThanks
}