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

Reply via email to