jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/331108 )
Change subject: rcfeed: Add basic PHPUnit integration test ...................................................................... rcfeed: Add basic PHPUnit integration test Change-Id: Ifb5ddd4bda6cd1be050da7a5419ebe90f5ecf60f --- M includes/changes/RecentChange.php A tests/phpunit/includes/rcfeed/RCFeedIntegrationTest.php 2 files changed, 99 insertions(+), 0 deletions(-) Approvals: Aaron Schulz: Looks good to me, approved jenkins-bot: Verified diff --git a/includes/changes/RecentChange.php b/includes/changes/RecentChange.php index 81f64a8..13a5fc7 100644 --- a/includes/changes/RecentChange.php +++ b/includes/changes/RecentChange.php @@ -451,6 +451,9 @@ throw new MWException( __FUNCTION__ . ": Unknown stream logger URI scheme: $scheme" ); } + if ( defined( 'MW_PHPUNIT_TEST' ) && is_object( $wgRCEngines[$scheme] ) ) { + return $wgRCEngines[$scheme]; + } return new $wgRCEngines[$scheme]; } diff --git a/tests/phpunit/includes/rcfeed/RCFeedIntegrationTest.php b/tests/phpunit/includes/rcfeed/RCFeedIntegrationTest.php new file mode 100644 index 0000000..97ea23c --- /dev/null +++ b/tests/phpunit/includes/rcfeed/RCFeedIntegrationTest.php @@ -0,0 +1,96 @@ +<?php + +class RCFeedIntegrationTest extends MediaWikiTestCase { + protected function setUp() { + parent::setUp(); + $this->setMwGlobals( [ + 'wgCanonicalServer' => 'https://example.org', + 'wgServerName' => 'example.org', + 'wgScriptPath' => '/w', + 'wgDBname' => 'example', + 'wgDBprefix' => '', + 'wgRCFeeds' => [], + 'wgRCEngines' => [], + ] ); + } + + /** + * @covers RecentChange::notifyRCFeeds + * @covers RecentChange::getEngine + * @covers RCFeedEngine + * @covers JSONRCFeedFormatter::formatArray + * @covers MachineReadableRCFeedFormatter::getLine + */ + public function testNotify() { + $feed = $this->getMockBuilder( 'RCFeedEngine' ) + ->setConstructorArgs( [ [ 'formatter' => 'JSONRCFeedFormatter' ] ] ) + ->setMethods( [ 'send' ] ) + ->getMock(); + + $feed->method( 'send' ) + ->willReturn( true ); + + $feed->expects( $this->once() ) + ->method( 'send' ) + ->with( $this->anything(), $this->callback( function ( $line ) { + $this->assertJsonStringEqualsJsonString( + json_encode( [ + 'id' => null, + 'type' => 'log', + 'namespace' => 0, + 'title' => 'Example', + 'comment' => '', + 'timestamp' => 1301644800, + 'user' => 'UTSysop', + 'bot' => false, + 'log_id' => 0, + 'log_type' => 'move', + 'log_action' => 'move', + 'log_params' => [ + 'color' => 'green', + 'nr' => 42, + 'pet' => 'cat', + ], + 'log_action_comment' => '', + 'server_url' => 'https://example.org', + 'server_name' => 'example.org', + 'server_script_path' => '/w', + 'wiki' => 'example', + ] ), + $line + ); + return true; + } ) ); + + $this->setMwGlobals( [ + 'wgRCFeeds' => [ + 'myfeed' => [ + 'uri' => 'test://localhost:1234', + 'formatter' => 'JSONRCFeedFormatter', + ], + ], + 'wgRCEngines' => [ + 'test' => $feed, + ], + ] ); + $logpage = SpecialPage::getTitleFor( 'Log', 'move' ); + $user = $this->getTestSysop()->getUser(); + $rc = RecentChange::newLogEntry( + '20110401080000', + $logpage, // &$title + $user, // &$user + '', // $actionComment + '127.0.0.1', // $ip + 'move', // $type + 'move', // $action + Title::makeTitle( 0, 'Example' ), // $target + '', // $logComment + LogEntryBase::makeParamBlob( [ + '4::color' => 'green', + '5:number:nr' => 42, + 'pet' => 'cat', + ] ) + ); + $rc->notifyRCFeeds(); + } +} -- To view, visit https://gerrit.wikimedia.org/r/331108 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ifb5ddd4bda6cd1be050da7a5419ebe90f5ecf60f Gerrit-PatchSet: 6 Gerrit-Project: mediawiki/core Gerrit-Branch: master Gerrit-Owner: Krinkle <krinklem...@gmail.com> Gerrit-Reviewer: Aaron Schulz <asch...@wikimedia.org> Gerrit-Reviewer: Catrope <r...@wikimedia.org> Gerrit-Reviewer: Jeroen De Dauw <jeroended...@gmail.com> Gerrit-Reviewer: Krinkle <krinklem...@gmail.com> Gerrit-Reviewer: Legoktm <lego...@member.fsf.org> Gerrit-Reviewer: MaxSem <maxsem.w...@gmail.com> Gerrit-Reviewer: Reedy <re...@wikimedia.org> Gerrit-Reviewer: Tim Starling <tstarl...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits