From: aude Date: Fri, 25 Jul 2014 13:08:12 +0000 (+0200) Subject: Add some tests for OldChangesList X-Git-Tag: 1.31.0-rc.0~14744 X-Git-Url: http://git.cyclocoop.org/%24href?a=commitdiff_plain;h=230990f084f990dfea183b9d5ed5efa2e5dd79be;p=lhc%2Fweb%2Fwiklou.git Add some tests for OldChangesList Change-Id: I6681ce6aa4e753fef33fe9f4719596d630889da6 --- diff --git a/tests/phpunit/includes/changes/OldChangesListTest.php b/tests/phpunit/includes/changes/OldChangesListTest.php new file mode 100644 index 0000000000..9783ae3ca4 --- /dev/null +++ b/tests/phpunit/includes/changes/OldChangesListTest.php @@ -0,0 +1,157 @@ + + */ +class OldChangesListTest extends MediaWikiLangTestCase { + + /** + * @var TestRecentChangesHelper + */ + private $testRecentChangesHelper; + + public function __construct( $name = null, array $data = array(), $dataName = '' ) { + parent::__construct( $name, $data, $dataName ); + + $this->testRecentChangesHelper = new TestRecentChangesHelper(); + } + + protected function setUp() { + parent::setUp(); + + $this->setMwGlobals( array( + 'wgArticlePath' => '/wiki/$1' + ) ); + } + + /** + * @dataProvider recentChangesLine_CssForLineNumberProvider + */ + public function testRecentChangesLine_CssForLineNumber( $expected, $linenumber, $message ) { + $oldChangesList = $this->getOldChangesList(); + $recentChange = $this->getEditChange(); + + $line = $oldChangesList->recentChangesLine( $recentChange, false, $linenumber ); + + $this->assertRegExp( $expected, $line, $message ); + } + + public function recentChangesLine_CssForLineNumberProvider() { + return array( + array( '/mw-line-odd/', 1, 'odd line number' ), + array( '/mw-line-even/', 2, 'even line number' ) + ); + } + + public function testRecentChangesLine_NotWatchedCssClass() { + $oldChangesList = $this->getOldChangesList(); + $recentChange = $this->getEditChange(); + + $line = $oldChangesList->recentChangesLine( $recentChange, false, 1 ); + + $this->assertRegExp( '/mw-changeslist-line-not-watched/', $line ); + } + + public function testRecentChangesLine_WatchedCssClass() { + $oldChangesList = $this->getOldChangesList(); + $recentChange = $this->getEditChange(); + + $line = $oldChangesList->recentChangesLine( $recentChange, true, 1 ); + + $this->assertRegExp( '/mw-changeslist-line-watched/', $line ); + } + + public function testRecentChangesLine_LogTitle() { + $oldChangesList = $this->getOldChangesList(); + $recentChange = $this->getLogChange( 'delete' ); + + $line = $oldChangesList->recentChangesLine( $recentChange, false, 1 ); + + $message = new Message( 'dellogpage' ); + $expectedLinkText = $message->inLanguage( 'en' )->text(); + + $this->assertRegExp( '/href="\/wiki\/Special:Log\/delete/', $line, 'link has href attribute' ); + $this->assertRegExp( '/title="Special:Log\/delete/', $line, 'link has title attribute' ); + $this->assertRegExp( "/$expectedLinkText/", $line, 'link text' ); + } + + public function testRecentChangesLine_DiffHistLinks() { + $oldChangesList = $this->getOldChangesList(); + $recentChange = $this->getEditChange(); + + $line = $oldChangesList->recentChangesLine( $recentChange, false, 1 ); + + $this->assertRegExp( + '/title=Cat&curid=20131103212153&diff=5&oldid=191/', + $line, + 'assert diff link' + ); + + $this->assertRegExp( '/tabindex="0"/', $line, 'assert tab index' ); + $this->assertRegExp( + '/title=Cat&curid=20131103212153&action=history"/', + $line, + 'assert history link' + ); + } + + private function getNewBotEditChange() { + $user = $this->getTestUser(); + + $recentChange = $this->testRecentChangesHelper->makeNewBotEditRecentChange( + $user, 'Abc', '20131103212153', 0, 0 + ); + + return $recentChange; + } + + private function getLogChange( $logType ) { + $user = $this->getTestUser(); + + $recentChange = $this->testRecentChangesHelper->makeLogRecentChange( + $logType, $user, 'Abc', '20131103212153', 0, 0 + ); + + return $recentChange; + } + + private function getEditChange() { + $user = $this->getTestUser(); + $recentChange = $this->testRecentChangesHelper->makeEditRecentChange( + $user, 'Cat', '20131103212153', 5, 191, 190, 0, 0 + ); + + return $recentChange; + } + + private function getOldChangesList() { + $context = $this->getContext(); + return new OldChangesList( $context ); + } + + private function getTestUser() { + $user = User::newFromName( 'TestRecentChangesUser' ); + + if ( !$user->getId() ) { + $user->addToDatabase(); + } + + return $user; + } + + private function getContext() { + $user = $this->getTestUser(); + $context = $this->testRecentChangesHelper->getTestContext( $user ); + + $title = Title::newFromText( 'RecentChanges', NS_SPECIAL ); + $context->setTitle( $title ); + + return $context; + } + +}