diff options
Diffstat (limited to 'tests/phpunit/includes/changes')
-rw-r--r-- | tests/phpunit/includes/changes/EnhancedChangesListTest.php | 43 | ||||
-rw-r--r-- | tests/phpunit/includes/changes/TestRecentChangesHelper.php | 30 |
2 files changed, 73 insertions, 0 deletions
diff --git a/tests/phpunit/includes/changes/EnhancedChangesListTest.php b/tests/phpunit/includes/changes/EnhancedChangesListTest.php index a14a50d2cb21..01e221f95ad5 100644 --- a/tests/phpunit/includes/changes/EnhancedChangesListTest.php +++ b/tests/phpunit/includes/changes/EnhancedChangesListTest.php @@ -74,6 +74,20 @@ class EnhancedChangesListTest extends MediaWikiLangTestCase { $this->assertEquals( '', $html ); } + public function testCategorizationLineFormatting() { + $html = $this->createCategorizationLine( + $this->getCategorizationChange( '20150629191735', 0, 0 ) + ); + $this->assertNotContains( '(diff | hist)', strip_tags( $html ) ); + } + + public function testCategorizationLineFormattingWithRevision() { + $html = $this->createCategorizationLine( + $this->getCategorizationChange( '20150629191735', 1025, 1024 ) + ); + $this->assertContains( '(diff | hist)', strip_tags( $html ) ); + } + /** * @todo more tests for actual formatting, this is more of a smoke test */ @@ -116,6 +130,24 @@ class EnhancedChangesListTest extends MediaWikiLangTestCase { } /** + * @return RecentChange + */ + private function getCategorizationChange( $timestamp, $thisId, $lastId ) { + $wikiPage = new WikiPage( Title::newFromText( 'Testpage' ) ); + $wikiPage->doEditContent( new WikitextContent( 'Some random text' ), 'page created' ); + + $wikiPage = new WikiPage( Title::newFromText( 'Category:Foo' ) ); + $wikiPage->doEditContent( new WikitextContent( 'Some random text' ), 'category page created' ); + + $user = $this->getTestUser(); + $recentChange = $this->testRecentChangesHelper->makeCategorizationRecentChange( + $user, 'Category:Foo', $wikiPage->getId(), $thisId, $lastId, $timestamp + ); + + return $recentChange; + } + + /** * @return User */ private function getTestUser() { @@ -128,4 +160,15 @@ class EnhancedChangesListTest extends MediaWikiLangTestCase { return $user; } + private function createCategorizationLine( $recentChange ) { + $enhancedChangesList = $this->newEnhancedChangesList(); + $cacheEntry = $this->testRecentChangesHelper->getCacheEntry( $recentChange ); + + $reflection = new \ReflectionClass( get_class( $enhancedChangesList ) ); + $method = $reflection->getMethod( 'recentChangesBlockLine' ); + $method->setAccessible( true ); + + return $method->invokeArgs( $enhancedChangesList, array( $cacheEntry ) ); + } + } diff --git a/tests/phpunit/includes/changes/TestRecentChangesHelper.php b/tests/phpunit/includes/changes/TestRecentChangesHelper.php index 2506087bfaa4..e59825a9f55a 100644 --- a/tests/phpunit/includes/changes/TestRecentChangesHelper.php +++ b/tests/phpunit/includes/changes/TestRecentChangesHelper.php @@ -97,6 +97,36 @@ class TestRecentChangesHelper { return $change; } + public function getCacheEntry( $recentChange ) { + $rcCacheFactory = new RCCacheEntryFactory( + new RequestContext(), + array( 'diff' => 'diff', 'cur' => 'cur', 'last' => 'last' ) + ); + return $rcCacheFactory->newFromRecentChange( $recentChange, false ); + } + + public function makeCategorizationRecentChange( + User $user, $titleText, $curid, $thisid, $lastid, $timestamp + ) { + + $attribs = array_merge( + $this->getDefaultAttributes( $titleText, $timestamp ), + array( + 'rc_type' => RC_CATEGORIZE, + 'rc_user' => $user->getId(), + 'rc_user_text' => $user->getName(), + 'rc_this_oldid' => $thisid, + 'rc_last_oldid' => $lastid, + 'rc_cur_id' => $curid, + 'rc_comment' => '[[:Testpage]] added to category', + 'rc_old_len' => 0, + 'rc_new_len' => 0, + ) + ); + + return $this->makeRecentChange( $attribs, 0, 0 ); + } + private function getDefaultAttributes( $titleText, $timestamp ) { return array( 'rc_id' => 545, |