Merge "Add a 'revdelete-selected-file' message on Special:RevisionDelete"
[lhc/web/wiklou.git] / tests / phpunit / includes / UserArrayFromResultTest.php
1 <?php
2
3 /**
4 * @author Adam Shorland
5 * @covers UserArrayFromResult
6 */
7 class UserArrayFromResultTest extends MediaWikiTestCase {
8
9 private function getMockResultWrapper( $row = null, $numRows = 1 ) {
10 $resultWrapper = $this->getMockBuilder( 'ResultWrapper' )
11 ->disableOriginalConstructor();
12
13 $resultWrapper = $resultWrapper->getMock();
14 $resultWrapper->expects( $this->atLeastOnce() )
15 ->method( 'current' )
16 ->will( $this->returnValue( $row ) );
17 $resultWrapper->expects( $this->any() )
18 ->method( 'numRows' )
19 ->will( $this->returnValue( $numRows ) );
20
21 return $resultWrapper;
22 }
23
24 private function getRowWithUsername( $username = 'fooUser' ) {
25 $row = new stdClass();
26 $row->user_name = $username;
27 return $row;
28 }
29
30 private function getUserArrayFromResult( $resultWrapper ) {
31 return new UserArrayFromResult( $resultWrapper );
32 }
33
34 /**
35 * @covers UserArrayFromResult::__construct
36 */
37 public function testConstructionWithFalseRow() {
38 $row = false;
39 $resultWrapper = $this->getMockResultWrapper( $row );
40
41 $object = $this->getUserArrayFromResult( $resultWrapper );
42
43 $this->assertEquals( $resultWrapper, $object->res );
44 $this->assertSame( 0, $object->key );
45 $this->assertEquals( $row, $object->current );
46 }
47
48 /**
49 * @covers UserArrayFromResult::__construct
50 */
51 public function testConstructionWithRow() {
52 $username = 'addshore';
53 $row = $this->getRowWithUsername( $username );
54 $resultWrapper = $this->getMockResultWrapper( $row );
55
56 $object = $this->getUserArrayFromResult( $resultWrapper );
57
58 $this->assertEquals( $resultWrapper, $object->res );
59 $this->assertSame( 0, $object->key );
60 $this->assertInstanceOf( 'User', $object->current );
61 $this->assertEquals( $username, $object->current->mName );
62 }
63
64 public function provideNumberOfRows() {
65 return array(
66 array( 0 ),
67 array( 1 ),
68 array( 122 ),
69 );
70 }
71
72 /**
73 * @dataProvider provideNumberOfRows
74 * @covers UserArrayFromResult::count
75 */
76 public function testCountWithVaryingValues( $numRows ) {
77 $object = $this->getUserArrayFromResult( $this->getMockResultWrapper( $this->getRowWithUsername(), $numRows ) );
78 $this->assertEquals( $numRows, $object->count() );
79 }
80
81 /**
82 * @covers UserArrayFromResult::current
83 */
84 public function testCurrentAfterConstruction() {
85 $username = 'addshore';
86 $userRow = $this->getRowWithUsername( $username );
87 $object = $this->getUserArrayFromResult( $this->getMockResultWrapper( $userRow ) );
88 $this->assertInstanceOf( 'User', $object->current() );
89 $this->assertEquals( $username, $object->current()->mName );
90 }
91
92 public function provideTestValid() {
93 return array(
94 array( $this->getRowWithUsername(), true ),
95 array( false, false ),
96 );
97 }
98
99 /**
100 * @dataProvider provideTestValid
101 * @covers UserArrayFromResult::valid
102 */
103 public function testValid( $input, $expected ) {
104 $object = $this->getUserArrayFromResult( $this->getMockResultWrapper( $input ) );
105 $this->assertEquals( $expected, $object->valid() );
106 }
107
108 //@todo unit test for key()
109 //@todo unit test for next()
110 //@todo unit test for rewind()
111 }