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 wfGetDB( DB_MASTER
)->insert( 'logging', $logs );
98 public function runProvider() {
101 'log_type' => 'patrol',
102 'log_action' => 'patrol',
103 'log_user' => '7251',
106 'log_type' => 'patrol',
107 'log_action' => 'autopatrol',
108 'log_user' => '7252',
111 'log_type' => 'block',
112 'log_action' => 'block',
113 'log_user' => '7253',
116 'log_type' => 'patrol',
117 'log_action' => 'patrol',
118 'log_user' => '7253',
121 'log_type' => 'patrol',
122 'log_action' => 'autopatrol',
123 'log_user' => '7254',
126 'log_type' => 'patrol',
127 'log_action' => 'patrol',
128 'log_user' => '7255',
131 'log_type' => 'patrol',
132 'log_action' => 'patrol',
133 'log_user' => '7256',
140 [ '--sleep', '0', '--dry-run', '-q' ]
150 [ '--sleep', '0', '-q' ]
152 'run with before' => [
161 [ '--sleep', '0', '--before', '20060123210426', '-q' ]
163 'run with check-old' => [
172 [ '--sleep', '0', '--check-old', '-q' ]
176 foreach ( $cases as $key => $case ) {
177 yield
$key . '-batch-size-1' => [
179 array_merge( $case[1], [ '--batch-size', '1' ] )
181 yield
$key . '-batch-size-5' => [
183 array_merge( $case[1], [ '--batch-size', '5' ] )
185 yield
$key . '-batch-size-1000' => [
187 array_merge( $case[1], [ '--batch-size', '1000' ] )
193 * @dataProvider runProvider
195 public function testRun( $expected, $args ) {
196 $this->maintenance
->loadWithArgv( $args );
198 $this->maintenance
->execute();
200 $remainingLogs = wfGetDB( DB_REPLICA
)->select(
202 [ 'log_type', 'log_action', 'log_user' ],
205 [ 'ORDER BY' => 'log_id' ]
208 $this->assertEquals( $expected, iterator_to_array( $remainingLogs, false ) );
211 public function testFromId() {
212 $fromId = wfGetDB( DB_REPLICA
)->selectField(
215 [ 'log_params' => 'nanana' ]
218 $this->maintenance
->loadWithArgv( [ '--sleep', '0', '--from-id', strval( $fromId ), '-q' ] );
220 $this->maintenance
->execute();
222 $remainingLogs = wfGetDB( DB_REPLICA
)->select(
224 [ 'log_type', 'log_action', 'log_user' ],
227 [ 'ORDER BY' => 'log_id' ]
231 'log_type' => 'patrol',
232 'log_action' => 'autopatrol',
233 'log_user' => '7254',
236 'log_type' => 'patrol',
237 'log_action' => 'autopatrol',
238 'log_user' => '7252',
241 $remainingLogs = array_map(
245 iterator_to_array( $remainingLogs, false )
248 $this->assertNotContains( $deleted, $remainingLogs );
249 $this->assertContains( $notDeleted, $remainingLogs );