aboutsummaryrefslogtreecommitdiffstats
path: root/tests/phpunit/includes/recentchanges/ChangeTrackingUpdateSpyTrait.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/phpunit/includes/recentchanges/ChangeTrackingUpdateSpyTrait.php')
-rw-r--r--tests/phpunit/includes/recentchanges/ChangeTrackingUpdateSpyTrait.php28
1 files changed, 27 insertions, 1 deletions
diff --git a/tests/phpunit/includes/recentchanges/ChangeTrackingUpdateSpyTrait.php b/tests/phpunit/includes/recentchanges/ChangeTrackingUpdateSpyTrait.php
index d7df06882f7a..dd31a56f75d5 100644
--- a/tests/phpunit/includes/recentchanges/ChangeTrackingUpdateSpyTrait.php
+++ b/tests/phpunit/includes/recentchanges/ChangeTrackingUpdateSpyTrait.php
@@ -2,6 +2,8 @@
namespace MediaWiki\Tests\recentchanges;
+use MediaWiki\JobQueue\JobQueueGroup;
+use MediaWiki\MainConfigNames;
use MediaWiki\RecentChanges\RecentChange;
use MediaWiki\User\TalkPageNotificationManager;
use MediaWiki\User\UserEditTracker;
@@ -25,8 +27,13 @@ trait ChangeTrackingUpdateSpyTrait {
int $rcEdit,
int $rcOther,
int $userEditCount,
- int $talkPageNotifications
+ int $talkPageNotifications,
+ int $categoryMembershipChangeJobs
) {
+ // Force enable RC entry creation for category changes
+ // to verify CategoryMembershipChangeJobs get enqueued irrespective of local configuration.
+ $this->overrideConfigValue( MainConfigNames::RCWatchCategoryMembership, true );
+
// Hack for spying on RC insertions
$rcEditStatus = $this->createMock( StatusValue::class );
$rcEditStatus->expects( $this->exactly( $rcEdit ) )
@@ -75,6 +82,25 @@ trait ChangeTrackingUpdateSpyTrait {
->method( 'removeUserHasNewMessages' );
$this->setService( 'TalkPageNotificationManager', $talkPageNotificationManager );
+
+ $categoryMembershipChangeJobStatus = $this->createMock( StatusValue::class );
+ $categoryMembershipChangeJobStatus->expects( $this->exactly( $categoryMembershipChangeJobs ) )
+ ->method( 'setOK' );
+
+ $jobQueueGroup = $this->createMock( JobQueueGroup::class );
+ $jobQueueGroup->method( $this->logicalOr( 'push', 'lazyPush' ) )
+ ->willReturnCallback(
+ static function ( $specs ) use ( $categoryMembershipChangeJobStatus ): void {
+ $specs = is_array( $specs ) ? $specs : [ $specs ];
+ foreach ( $specs as $spec ) {
+ if ( $spec->getType() === 'categoryMembershipChange' ) {
+ $categoryMembershipChangeJobStatus->setOK( true );
+ }
+ }
+ }
+ );
+
+ $this->setService( 'JobQueueGroup', $jobQueueGroup );
}
}