1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
<?php
namespace MediaWiki\Tests\Maintenance;
use MediaWiki\MainConfigNames;
use PurgeRecentChanges;
use Wikimedia\Timestamp\ConvertibleTimestamp;
/**
* @covers \PurgeRecentChanges
* @group Database
* @author Dreamy Jazz
*/
class PurgeRecentChangesTest extends MaintenanceBaseTestCase {
protected function getMaintenanceClass() {
return PurgeRecentChanges::class;
}
public function addDBData() {
// Make two testing edits, which will trigger a recentchanges insert. One of the edits will be made
// over wgRCMaxAge seconds ago while the other will be made a day ago
$testPage = $this->getExistingTestPage();
$testUser = $this->getTestUser()->getAuthority();
// So that only our two testing edits are present, and nothing from creating the test page or test user
$this->truncateTable( 'recentchanges' );
// Fix wgRCMaxAge at a high value to ensure that the recentchanges entries we are creating are not purged
// by later testing edits.
$this->overrideConfigValue( MainConfigNames::RCMaxAge, 24 * 3600 * 1000 );
ConvertibleTimestamp::setFakeTime( '20230405060708' );
$this->editPage( $testPage, 'testing1234', '', NS_MAIN, $testUser );
ConvertibleTimestamp::setFakeTime( '20240405060708' );
$this->editPage( $testPage, 'testing12345', '', NS_MAIN, $testUser );
// Verify that the recentchanges table row count is as expected for the test
$this->newSelectQueryBuilder()
->field( 'COUNT(*)' )
->table( 'recentchanges' )
->assertFieldValue( 2 );
}
public function testExecute() {
// Set the time as one day beyond the last testing edit made in ::addDBData
ConvertibleTimestamp::setFakeTime( '20240406060708' );
// Fix wgRCMaxAge for the test, in case the default value changes.
$this->overrideConfigValue( MainConfigNames::RCMaxAge, 90 * 24 * 3600 );
// Run the maintenance script
$this->maintenance->execute();
// Verify that only the edit made a day ago is now in the recentchanges table
$this->newSelectQueryBuilder()
->field( 'rc_timestamp' )
->table( 'recentchanges' )
->assertFieldValue( $this->getDb()->timestamp( '20240405060708' ) );
}
}
|