1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
<?php
use MediaWiki\RevisionList\RevisionItemBase;
use MediaWiki\RevisionList\RevisionListBase;
use Wikimedia\Rdbms\IResultWrapper;
use Wikimedia\TestingAccessWrapper;
/**
* @covers \MediaWiki\RevisionList\RevisionListBase
*
* @author DannyS712
*/
class RevisionListBaseTest extends MediaWikiUnitTestCase {
public function testGetType() {
$revisionListBase = $this->getMockBuilder( RevisionListBase::class )
->disableOriginalConstructor()
->getMockForAbstractClass();
$this->assertNull( $revisionListBase->getType() );
}
public function testReset() {
$revisionListBase = $this->getMockBuilder( RevisionListBase::class )
->disableOriginalConstructor()
->getMockForAbstractClass();
$revisionItemBase = $this->getMockBuilder( RevisionItemBase::class )
->disableOriginalConstructor()
->getMockForAbstractClass();
// Actual contents aren't used
$fakeRow = (object)[ 'key' => 'val' ];
$resultWrapper = $this->createMock( IResultWrapper::class );
$resultWrapper->expects( $this->once() )
->method( 'rewind' );
$resultWrapper->expects( $this->once() )
->method( 'current' )
->willReturn( $fakeRow );
$revisionListBase->expects( $this->once() )
->method( 'newItem' )
->with( $fakeRow )
->willReturn( $revisionItemBase );
// res is normally the result of a db query that uses wfGetDB and cannot
// be tested in a unit test
$mockAccess = TestingAccessWrapper::newFromObject( $revisionListBase );
$mockAccess->res = $resultWrapper;
$this->assertSame( $revisionItemBase, $revisionListBase->reset() );
$this->assertSame( $revisionItemBase, $revisionListBase->current() );
}
public function testResultWrapper() {
// Test methods that only depend on the result wrapper
$revisionListBase = $this->getMockBuilder( RevisionListBase::class )
->disableOriginalConstructor()
->getMockForAbstractClass();
$this->assertSame( 0, $revisionListBase->key() );
$this->assertFalse( $revisionListBase->valid() );
$this->assertSame( 0, $revisionListBase->length() );
$resultWrapper = $this->createMock( IResultWrapper::class );
$resultWrapper->expects( $this->once() )
->method( 'key' )
->willReturn( 991 );
$resultWrapper->expects( $this->once() )
->method( 'valid' )
->willReturn( true );
$resultWrapper->expects( $this->once() )
->method( 'numRows' )
->willReturn( 457 );
// res is normally the result of a db query that uses wfGetDB and cannot
// be tested in a unit test
$mockAccess = TestingAccessWrapper::newFromObject( $revisionListBase );
$mockAccess->res = $resultWrapper;
$this->assertSame( 991, $revisionListBase->key() );
$this->assertTrue( $revisionListBase->valid() );
$this->assertSame( 457, $revisionListBase->length() );
}
}
|