Merge "Improve "selfmove" message's wording"
[lhc/web/wiklou.git] / tests / phpunit / includes / changes / EnhancedChangesListTest.php
index 28818d9..420fe74 100644 (file)
@@ -74,6 +74,47 @@ class EnhancedChangesListTest extends MediaWikiLangTestCase {
                $this->assertEquals( '', $html );
        }
 
+       public function testRecentChangesPrefix() {
+               $mockContext = $this->getMockBuilder( RequestContext::class )
+                       ->setMethods( [ 'getTitle' ] )
+                       ->getMock();
+               $mockContext->method( 'getTitle' )
+                       ->will( $this->returnValue( Title::newFromText( 'Expected Context Title' ) ) );
+
+               // One group of two lines
+               $enhancedChangesList = $this->newEnhancedChangesList();
+               $enhancedChangesList->setContext( $mockContext );
+               $enhancedChangesList->setChangeLinePrefixer( function ( $rc, $changesList ) {
+                       // Make sure RecentChange and ChangesList objects are the same
+                       $this->assertEquals( 'Expected Context Title', $changesList->getContext()->getTitle() );
+                       $this->assertTrue( $rc->getTitle() == 'Cat' || $rc->getTitle() == 'Dog' );
+                       return 'Hello world prefix';
+               } );
+               $enhancedChangesList->beginRecentChangesList();
+
+               $recentChange = $this->getEditChange( '20131103092153' );
+               $enhancedChangesList->recentChangesLine( $recentChange );
+               $recentChange = $this->getEditChange( '20131103092154' );
+               $enhancedChangesList->recentChangesLine( $recentChange );
+
+               $html = $enhancedChangesList->endRecentChangesList();
+
+               $this->assertRegExp( '/Hello world prefix/', $html );
+
+               // Two separate lines
+               $enhancedChangesList->beginRecentChangesList();
+
+               $recentChange = $this->getEditChange( '20131103092153' );
+               $enhancedChangesList->recentChangesLine( $recentChange );
+               $recentChange = $this->getEditChange( '20131103092154', 'Dog' );
+               $enhancedChangesList->recentChangesLine( $recentChange );
+
+               $html = $enhancedChangesList->endRecentChangesList();
+
+               preg_match_all( '/Hello world prefix/', $html, $matches );
+               $this->assertCount( 2, $matches[0] );
+       }
+
        public function testCategorizationLineFormatting() {
                $html = $this->createCategorizationLine(
                        $this->getCategorizationChange( '20150629191735', 0, 0 )
@@ -99,7 +140,10 @@ class EnhancedChangesListTest extends MediaWikiLangTestCase {
                $enhancedChangesList->recentChangesLine( $recentChange, false );
 
                $html = $enhancedChangesList->endRecentChangesList();
-               $this->assertRegExp( '/data-mw-revid="5" class="[^"]*mw-enhanced-rc[^"]*"/', $html );
+               $this->assertRegExp(
+                       '/data-mw-revid="5" data-mw-ts="20131103092153" class="[^"]*mw-enhanced-rc[^"]*"/',
+                       $html
+               );
 
                $recentChange2 = $this->getEditChange( '20131103092253' );
                $enhancedChangesList->recentChangesLine( $recentChange2, false );
@@ -109,12 +153,16 @@ class EnhancedChangesListTest extends MediaWikiLangTestCase {
                preg_match_all( '/td class="mw-enhanced-rc-nested"/', $html, $matches );
                $this->assertCount( 2, $matches[0] );
 
+               preg_match_all( '/data-target-page="Cat"/', $html, $matches );
+               $this->assertCount( 2, $matches[0] );
+
                $recentChange3 = $this->getLogChange();
                $enhancedChangesList->recentChangesLine( $recentChange3, false );
 
                $html = $enhancedChangesList->endRecentChangesList();
                $this->assertContains( 'data-mw-logaction="foo/bar"', $html );
                $this->assertContains( 'data-mw-logid="25"', $html );
+               $this->assertContains( 'data-target-page="Title"', $html );
        }
 
        /**
@@ -130,10 +178,10 @@ class EnhancedChangesListTest extends MediaWikiLangTestCase {
        /**
         * @return RecentChange
         */
-       private function getEditChange( $timestamp ) {
+       private function getEditChange( $timestamp, $pageTitle = 'Cat' ) {
                $user = $this->getMutableTestUser()->getUser();
                $recentChange = $this->testRecentChangesHelper->makeEditRecentChange(
-                       $user, 'Cat', $timestamp, 5, 191, 190, 0, 0
+                       $user, $pageTitle, 0, 5, 191, $timestamp, 0, 0
                );
 
                return $recentChange;