3 use MediaWiki\MediaWikiServices
;
4 use Wikimedia\Rdbms\IDatabase
;
6 class DatabaseLogEntryTest
extends MediaWikiTestCase
{
7 public function setUp() {
10 // These services cache their joins
11 MediaWikiServices
::getInstance()->resetServiceForTesting( 'CommentStore' );
12 MediaWikiServices
::getInstance()->resetServiceForTesting( 'ActorMigration' );
15 public function tearDown() {
18 MediaWikiServices
::getInstance()->resetServiceForTesting( 'CommentStore' );
19 MediaWikiServices
::getInstance()->resetServiceForTesting( 'ActorMigration' );
23 * @covers DatabaseLogEntry::newFromId
24 * @covers DatabaseLogEntry::getSelectQueryData
26 * @dataProvider provideNewFromId
29 * @param array $selectFields
30 * @param string[]|null $row
31 * @param string[]|null $expectedFields
33 public function testNewFromId( $id,
36 array $expectedFields = null
38 $row = $row ?
(object)$row : null;
39 $db = $this->getMock( IDatabase
::class );
40 $db->expects( self
::once() )
41 ->method( 'selectRow' )
42 ->with( $selectFields['tables'],
43 $selectFields['fields'],
44 $selectFields['conds'],
45 'DatabaseLogEntry::newFromId',
46 $selectFields['options'],
47 $selectFields['join_conds']
49 ->will( self
::returnValue( $row ) );
51 /** @var IDatabase $db */
52 $logEntry = DatabaseLogEntry
::newFromId( $id, $db );
54 if ( !$expectedFields ) {
55 self
::assertNull( $logEntry, "Expected no log entry returned for id=$id" );
57 self
::assertEquals( $id, $logEntry->getId() );
58 self
::assertEquals( $expectedFields['type'], $logEntry->getType() );
59 self
::assertEquals( $expectedFields['comment'], $logEntry->getComment() );
63 public function provideNewFromId() {
68 'comment_log_comment' => 'comment',
69 'actor_log_user' => 'actor'
83 'log_comment_text' => 'comment_log_comment.comment_text',
84 'log_comment_data' => 'comment_log_comment.comment_data',
85 'log_comment_cid' => 'comment_log_comment.comment_id',
86 'log_user' => 'actor_log_user.actor_user',
87 'log_user_text' => 'actor_log_user.actor_name',
88 'log_actor' => 'log_actor',
92 'user' => [ 'LEFT JOIN', 'user_id=actor_log_user.actor_user' ],
93 'comment_log_comment' => [ 'JOIN', 'comment_log_comment.comment_id = log_comment_id' ],
94 'actor_log_user' => [ 'JOIN', 'actor_log_user.actor_id = log_actor' ],
100 $newTables +
[ 'conds' => [ 'log_id' => 0 ] ],
106 $newTables +
[ 'conds' => [ 'log_id' => 123 ] ],
109 'log_type' => 'foobarize',
110 'log_comment_text' => 'test!',
111 'log_comment_data' => null,
113 [ 'type' => 'foobarize', 'comment' => 'test!' ]
117 $newTables +
[ 'conds' => [ 'log_id' => 567 ] ],
120 'log_type' => 'foobarize',
121 'log_comment_text' => 'test!',
122 'log_comment_data' => null,
124 [ 'type' => 'foobarize', 'comment' => 'test!' ]