123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- <?php
- /**
- * @covers OldChangesList
- *
- * @todo add tests to cover article link, timestamp, character difference,
- * log entry, user tool links, direction marks, tags, rollback,
- * watching users, and date header.
- *
- * @group Database
- *
- * @author Katie Filbert < aude.wiki@gmail.com >
- */
- class OldChangesListTest extends MediaWikiLangTestCase {
- /**
- * @var TestRecentChangesHelper
- */
- private $testRecentChangesHelper;
- public function __construct( $name = null, array $data = [], $dataName = '' ) {
- parent::__construct( $name, $data, $dataName );
- $this->testRecentChangesHelper = new TestRecentChangesHelper();
- }
- protected function setUp() {
- parent::setUp();
- $this->setMwGlobals( [
- 'wgArticlePath' => '/wiki/$1',
- ] );
- $this->setUserLang( 'qqx' );
- }
- /**
- * @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 [
- [ '/mw-line-odd/', 1, 'odd line number' ],
- [ '/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', 'delete' );
- $line = $oldChangesList->recentChangesLine( $recentChange, false, 1 );
- $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( "/dellogpage/", $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(
- '/title=Cat&curid=20131103212153&action=history"/',
- $line,
- 'assert history link'
- );
- }
- public function testRecentChangesLine_Flags() {
- $oldChangesList = $this->getOldChangesList();
- $recentChange = $this->getNewBotEditChange();
- $line = $oldChangesList->recentChangesLine( $recentChange, false, 1 );
- $this->assertContains(
- '<abbr class="newpage" title="(recentchanges-label-newpage)">(newpageletter)</abbr>',
- $line,
- 'new page flag'
- );
- $this->assertContains(
- '<abbr class="botedit" title="(recentchanges-label-bot)">(boteditletter)</abbr>',
- $line,
- 'bot flag'
- );
- }
- public function testRecentChangesLine_Attribs() {
- $recentChange = $this->getEditChange();
- $recentChange->mAttribs['ts_tags'] = 'vandalism,newbie';
- $oldChangesList = $this->getOldChangesList();
- $line = $oldChangesList->recentChangesLine( $recentChange, false, 1 );
- $this->assertRegExp(
- '/<li data-mw-revid="\d+" data-mw-ts="\d+" class="[\w\s-]*mw-tag-vandalism[\w\s-]*">/',
- $line
- );
- $this->assertRegExp(
- '/<li data-mw-revid="\d+" data-mw-ts="\d+" class="[\w\s-]*mw-tag-newbie[\w\s-]*">/',
- $line
- );
- }
- public function testRecentChangesLine_numberOfWatchingUsers() {
- $oldChangesList = $this->getOldChangesList();
- $recentChange = $this->getEditChange();
- $recentChange->numberofWatchingusers = 100;
- $line = $oldChangesList->recentChangesLine( $recentChange, false, 1 );
- $this->assertRegExp( "/(number_of_watching_users_RCview: 100)/", $line );
- }
- public function testRecentChangesLine_watchlistCssClass() {
- $oldChangesList = $this->getOldChangesList();
- $oldChangesList->setWatchlistDivs( true );
- $recentChange = $this->getEditChange();
- $line = $oldChangesList->recentChangesLine( $recentChange, false, 1 );
- $this->assertRegExp( "/watchlist-0-Cat/", $line );
- }
- public function testRecentChangesLine_dataAttribute() {
- $oldChangesList = $this->getOldChangesList();
- $oldChangesList->setWatchlistDivs( true );
- $recentChange = $this->getEditChange();
- $line = $oldChangesList->recentChangesLine( $recentChange, false, 1 );
- $this->assertRegExp( '/data-target-page=\"Cat\"/', $line );
- $recentChange = $this->getLogChange( 'delete', 'delete' );
- $line = $oldChangesList->recentChangesLine( $recentChange, false, 1 );
- $this->assertRegExp( '/data-target-page="Abc"/', $line );
- }
- public function testRecentChangesLine_prefix() {
- $mockContext = $this->getMockBuilder( RequestContext::class )
- ->setMethods( [ 'getTitle' ] )
- ->getMock();
- $mockContext->method( 'getTitle' )
- ->will( $this->returnValue( Title::newFromText( 'Expected Context Title' ) ) );
- $oldChangesList = $this->getOldChangesList();
- $oldChangesList->setContext( $mockContext );
- $recentChange = $this->getEditChange();
- $oldChangesList->setChangeLinePrefixer( function ( $rc, $changesList ) {
- // Make sure RecentChange and ChangesList objects are the same
- $this->assertEquals( 'Expected Context Title', $changesList->getContext()->getTitle() );
- $this->assertEquals( 'Cat', $rc->getTitle() );
- return 'I am a prefix';
- } );
- $line = $oldChangesList->recentChangesLine( $recentChange );
- $this->assertRegExp( "/I am a prefix/", $line );
- }
- private function getNewBotEditChange() {
- $user = $this->getMutableTestUser()->getUser();
- $recentChange = $this->testRecentChangesHelper->makeNewBotEditRecentChange(
- $user, 'Abc', '20131103212153', 5, 191, 190, 0, 0
- );
- return $recentChange;
- }
- private function getLogChange( $logType, $logAction ) {
- $user = $this->getMutableTestUser()->getUser();
- $recentChange = $this->testRecentChangesHelper->makeLogRecentChange(
- $logType, $logAction, $user, 'Abc', '20131103212153', 0, 0
- );
- return $recentChange;
- }
- private function getEditChange() {
- $user = $this->getMutableTestUser()->getUser();
- $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 getContext() {
- $user = $this->getMutableTestUser()->getUser();
- $context = $this->testRecentChangesHelper->getTestContext( $user );
- $context->setLanguage( 'qqx' );
- return $context;
- }
- }
|