createNoOpMock( RateLimiter::class, [ 'limit' ] ); $mock->expects( $this->once() ) ->method( 'limit' ) ->with( self::anything(), 'linkpurge', 0 ) ->willReturn( $fail ); return $mock; } public function testPass() { $limiter = $this->getRateLimiter( false ); $subject = new RateLimitSubject( new UserIdentityValue( 1, 'test' ), null, [] ); $constraint = new LinkPurgeRateLimitConstraint( $limiter, $subject ); $this->assertConstraintPassed( $constraint ); } public function testFailure() { $limiter = $this->getRateLimiter( true ); $subject = new RateLimitSubject( new UserIdentityValue( 1, 'test' ), null, [] ); $constraint = new LinkPurgeRateLimitConstraint( $limiter, $subject ); $this->assertConstraintFailed( $constraint, IEditConstraint::AS_RATE_LIMITED ); } }