Merge "Introduce deleteAutoPatrolLogs maintenance script"
[lhc/web/wiklou.git] / tests / phpunit / maintenance / deleteAutoPatrolLogsTest.php
1 <?php
2
3 namespace MediaWiki\Tests\Maintenance;
4
5 use DeleteAutoPatrolLogs;
6
7 /**
8 * @group Database
9 * @covers DeleteAutoPatrolLogs
10 */
11 class DeleteAutoPatrolLogsTest extends MaintenanceBaseTestCase {
12
13 public function getMaintenanceClass() {
14 return DeleteAutoPatrolLogs::class;
15 }
16
17 public function setUp() {
18 parent::setUp();
19 $this->tablesUsed = [ 'logging' ];
20
21 $this->cleanLoggingTable();
22 $this->insertLoggingData();
23 }
24
25 private function cleanLoggingTable() {
26 wfGetDB( DB_MASTER )->delete( 'logging', '*' );
27 }
28
29 private function insertLoggingData() {
30 $logs = [];
31
32 // Manual patrolling
33 $logs[] = [
34 'log_type' => 'patrol',
35 'log_action' => 'patrol',
36 'log_user' => 7251,
37 'log_params' => '',
38 'log_timestamp' => 20041223210426
39 ];
40
41 // Autopatrol #1
42 $logs[] = [
43 'log_type' => 'patrol',
44 'log_action' => 'autopatrol',
45 'log_user' => 7252,
46 'log_params' => '',
47 'log_timestamp' => 20051223210426
48 ];
49
50 // Block
51 $logs[] = [
52 'log_type' => 'block',
53 'log_action' => 'block',
54 'log_user' => 7253,
55 'log_params' => '',
56 'log_timestamp' => 20061223210426
57 ];
58
59 // Autopatrol #2
60 $logs[] = [
61 'log_type' => 'patrol',
62 'log_action' => 'autopatrol',
63 'log_user' => 7254,
64 'log_params' => '',
65 'log_timestamp' => 20071223210426
66 ];
67
68 // Autopatrol #3 old way
69 $logs[] = [
70 'log_type' => 'patrol',
71 'log_action' => 'patrol',
72 'log_user' => 7255,
73 'log_params' => serialize( [ '6::auto' => true ] ),
74 'log_timestamp' => 20081223210426
75 ];
76
77 // Manual patrol #2 old way
78 $logs[] = [
79 'log_type' => 'patrol',
80 'log_action' => 'patrol',
81 'log_user' => 7256,
82 'log_params' => serialize( [ '6::auto' => false ] ),
83 'log_timestamp' => 20091223210426
84 ];
85
86 wfGetDB( DB_MASTER )->insert( 'logging', $logs );
87 }
88
89 public function testBasicRun() {
90 $this->maintenance->loadWithArgv( [ '--sleep', '0', '-q' ] );
91
92 $this->maintenance->execute();
93
94 $remainingLogs = wfGetDB( DB_REPLICA )->select(
95 [ 'logging' ],
96 [ 'log_type', 'log_action', 'log_user' ],
97 [],
98 __METHOD__,
99 [ 'ORDER BY' => 'log_id' ]
100 );
101
102 $expected = [
103 (object)[
104 'log_type' => 'patrol',
105 'log_action' => 'patrol',
106 'log_user' => '7251',
107 ],
108 (object)[
109 'log_type' => 'block',
110 'log_action' => 'block',
111 'log_user' => '7253',
112 ],
113 (object)[
114 'log_type' => 'patrol',
115 'log_action' => 'patrol',
116 'log_user' => '7255',
117 ],
118 (object)[
119 'log_type' => 'patrol',
120 'log_action' => 'patrol',
121 'log_user' => '7256',
122 ],
123 ];
124 $this->assertEquals( $expected, iterator_to_array( $remainingLogs, false ) );
125 }
126
127 public function testDryRun() {
128 $this->maintenance->loadWithArgv( [ '--sleep', '0', '--dry-run', '-q' ] );
129
130 $this->maintenance->execute();
131
132 $remainingLogs = wfGetDB( DB_REPLICA )->select(
133 [ 'logging' ],
134 [ 'log_type', 'log_action', 'log_user' ],
135 [],
136 __METHOD__,
137 [ 'ORDER BY' => 'log_id' ]
138 );
139
140 $expected = [
141 (object)[
142 'log_type' => 'patrol',
143 'log_action' => 'patrol',
144 'log_user' => '7251',
145 ],
146 (object)[
147 'log_type' => 'patrol',
148 'log_action' => 'autopatrol',
149 'log_user' => '7252',
150 ],
151 (object)[
152 'log_type' => 'block',
153 'log_action' => 'block',
154 'log_user' => '7253',
155 ],
156 (object)[
157 'log_type' => 'patrol',
158 'log_action' => 'autopatrol',
159 'log_user' => '7254',
160 ],
161 (object)[
162 'log_type' => 'patrol',
163 'log_action' => 'patrol',
164 'log_user' => '7255',
165 ],
166 (object)[
167 'log_type' => 'patrol',
168 'log_action' => 'patrol',
169 'log_user' => '7256',
170 ],
171 ];
172 $this->assertEquals( $expected, iterator_to_array( $remainingLogs, false ) );
173 }
174
175 public function testRunWithTimestamp() {
176 $this->maintenance->loadWithArgv( [ '--sleep', '0', '--before', '20060123210426', '-q' ] );
177
178 $this->maintenance->execute();
179
180 $remainingLogs = wfGetDB( DB_REPLICA )->select(
181 [ 'logging' ],
182 [ 'log_type', 'log_action', 'log_user' ],
183 [],
184 __METHOD__,
185 [ 'ORDER BY' => 'log_id' ]
186 );
187
188 $expected = [
189 (object)[
190 'log_type' => 'patrol',
191 'log_action' => 'patrol',
192 'log_user' => '7251',
193 ],
194 (object)[
195 'log_type' => 'block',
196 'log_action' => 'block',
197 'log_user' => '7253',
198 ],
199 (object)[
200 'log_type' => 'patrol',
201 'log_action' => 'autopatrol',
202 'log_user' => '7254',
203 ],
204 (object)[
205 'log_type' => 'patrol',
206 'log_action' => 'patrol',
207 'log_user' => '7255',
208 ],
209 (object)[
210 'log_type' => 'patrol',
211 'log_action' => 'patrol',
212 'log_user' => '7256',
213 ]
214 ];
215 $this->assertEquals( $expected, iterator_to_array( $remainingLogs, false ) );
216 }
217
218 public function testRunWithCheckOld() {
219 $this->maintenance->loadWithArgv( [ '--sleep', '0', '--check-old', '-q' ] );
220
221 $this->maintenance->execute();
222
223 $remainingLogs = wfGetDB( DB_REPLICA )->select(
224 [ 'logging' ],
225 [ 'log_type', 'log_action', 'log_user' ],
226 [],
227 __METHOD__,
228 [ 'ORDER BY' => 'log_id' ]
229 );
230
231 $expected = [
232 (object)[
233 'log_type' => 'patrol',
234 'log_action' => 'patrol',
235 'log_user' => '7251',
236 ],
237 (object)[
238 'log_type' => 'patrol',
239 'log_action' => 'autopatrol',
240 'log_user' => '7252',
241 ],
242 (object)[
243 'log_type' => 'block',
244 'log_action' => 'block',
245 'log_user' => '7253',
246 ],
247 (object)[
248 'log_type' => 'patrol',
249 'log_action' => 'autopatrol',
250 'log_user' => '7254',
251 ],
252 (object)[
253 'log_type' => 'patrol',
254 'log_action' => 'patrol',
255 'log_user' => '7256',
256 ]
257 ];
258 $this->assertEquals( $expected, iterator_to_array( $remainingLogs, false ) );
259 }
260
261 }