3 namespace MediaWiki\Tests\Maintenance
;
5 use DeleteAutoPatrolLogs
;
9 * @covers DeleteAutoPatrolLogs
11 class DeleteAutoPatrolLogsTest
extends MaintenanceBaseTestCase
{
13 public function getMaintenanceClass() {
14 return DeleteAutoPatrolLogs
::class;
17 public function setUp() {
19 $this->tablesUsed
= [ 'logging' ];
21 $this->cleanLoggingTable();
22 $this->insertLoggingData();
25 private function cleanLoggingTable() {
26 wfGetDB( DB_MASTER
)->delete( 'logging', '*' );
29 private function insertLoggingData() {
34 'log_type' => 'patrol',
35 'log_action' => 'patrol',
38 'log_timestamp' => 20041223210426
43 'log_type' => 'patrol',
44 'log_action' => 'autopatrol',
47 'log_timestamp' => 20051223210426
52 'log_type' => 'block',
53 'log_action' => 'block',
56 'log_timestamp' => 20061223210426
59 // Very old/ invalid patrol
61 'log_type' => 'patrol',
62 'log_action' => 'patrol',
64 'log_params' => 'nanana',
65 'log_timestamp' => 20061223210426
70 'log_type' => 'patrol',
71 'log_action' => 'autopatrol',
74 'log_timestamp' => 20071223210426
77 // Autopatrol #3 old way
79 'log_type' => 'patrol',
80 'log_action' => 'patrol',
82 'log_params' => serialize( [ '6::auto' => true ] ),
83 'log_timestamp' => 20081223210426
86 // Manual patrol #2 old way
88 'log_type' => 'patrol',
89 'log_action' => 'patrol',
91 'log_params' => serialize( [ '6::auto' => false ] ),
92 'log_timestamp' => 20091223210426
95 // Autopatrol #4 very old way
97 'log_type' => 'patrol',
98 'log_action' => 'patrol',
100 'log_params' => "9227851\n0\n1",
101 'log_timestamp' => 20081223210426
104 // Manual patrol #3 very old way
106 'log_type' => 'patrol',
107 'log_action' => 'patrol',
109 'log_params' => "9227851\n0\n0",
110 'log_timestamp' => 20091223210426
113 wfGetDB( DB_MASTER
)->insert( 'logging', $logs );
116 public function runProvider() {
119 'log_type' => 'patrol',
120 'log_action' => 'patrol',
121 'log_user' => '7251',
124 'log_type' => 'patrol',
125 'log_action' => 'autopatrol',
126 'log_user' => '7252',
129 'log_type' => 'block',
130 'log_action' => 'block',
131 'log_user' => '7253',
134 'log_type' => 'patrol',
135 'log_action' => 'patrol',
136 'log_user' => '7253',
139 'log_type' => 'patrol',
140 'log_action' => 'autopatrol',
141 'log_user' => '7254',
144 'log_type' => 'patrol',
145 'log_action' => 'patrol',
146 'log_user' => '7255',
149 'log_type' => 'patrol',
150 'log_action' => 'patrol',
151 'log_user' => '7256',
154 'log_type' => 'patrol',
155 'log_action' => 'patrol',
156 'log_user' => '7257',
159 'log_type' => 'patrol',
160 'log_action' => 'patrol',
161 'log_user' => '7258',
168 [ '--sleep', '0', '--dry-run', '-q' ]
180 [ '--sleep', '0', '-q' ]
182 'run with before' => [
193 [ '--sleep', '0', '--before', '20060123210426', '-q' ]
195 'run with check-old' => [
205 [ '--sleep', '0', '--check-old', '-q' ]
209 foreach ( $cases as $key => $case ) {
210 yield
$key . '-batch-size-1' => [
212 array_merge( $case[1], [ '--batch-size', '1' ] )
214 yield
$key . '-batch-size-5' => [
216 array_merge( $case[1], [ '--batch-size', '5' ] )
218 yield
$key . '-batch-size-1000' => [
220 array_merge( $case[1], [ '--batch-size', '1000' ] )
226 * @dataProvider runProvider
228 public function testRun( $expected, $args ) {
229 $this->maintenance
->loadWithArgv( $args );
231 $this->maintenance
->execute();
233 $remainingLogs = wfGetDB( DB_REPLICA
)->select(
235 [ 'log_type', 'log_action', 'log_user' ],
238 [ 'ORDER BY' => 'log_id' ]
241 $this->assertEquals( $expected, iterator_to_array( $remainingLogs, false ) );
244 public function testFromId() {
245 $fromId = wfGetDB( DB_REPLICA
)->selectField(
248 [ 'log_params' => 'nanana' ]
251 $this->maintenance
->loadWithArgv( [ '--sleep', '0', '--from-id', strval( $fromId ), '-q' ] );
253 $this->maintenance
->execute();
255 $remainingLogs = wfGetDB( DB_REPLICA
)->select(
257 [ 'log_type', 'log_action', 'log_user' ],
260 [ 'ORDER BY' => 'log_id' ]
264 'log_type' => 'patrol',
265 'log_action' => 'autopatrol',
266 'log_user' => '7254',
269 'log_type' => 'patrol',
270 'log_action' => 'autopatrol',
271 'log_user' => '7252',
274 $remainingLogs = array_map(
278 iterator_to_array( $remainingLogs, false )
281 $this->assertNotContains( $deleted, $remainingLogs );
282 $this->assertContains( $notDeleted, $remainingLogs );