MediaWiki  REL1_24
OldChangesListTest.php
Go to the documentation of this file.
00001 <?php
00002 
00015 class OldChangesListTest extends MediaWikiLangTestCase {
00016 
00020     private $testRecentChangesHelper;
00021 
00022     public function __construct( $name = null, array $data = array(), $dataName = '' ) {
00023         parent::__construct( $name, $data, $dataName );
00024 
00025         $this->testRecentChangesHelper = new TestRecentChangesHelper();
00026     }
00027 
00028     protected function setUp() {
00029         parent::setUp();
00030 
00031         $this->setMwGlobals( array(
00032             'wgArticlePath' => '/wiki/$1',
00033             'wgLang' => Language::factory( 'qqx' )
00034         ) );
00035     }
00036 
00040     public function testRecentChangesLine_CssForLineNumber( $expected, $linenumber, $message ) {
00041         $oldChangesList = $this->getOldChangesList();
00042         $recentChange = $this->getEditChange();
00043 
00044         $line = $oldChangesList->recentChangesLine( $recentChange, false, $linenumber );
00045 
00046         $this->assertRegExp( $expected, $line, $message );
00047     }
00048 
00049     public function recentChangesLine_CssForLineNumberProvider() {
00050         return array(
00051             array( '/mw-line-odd/', 1, 'odd line number' ),
00052             array( '/mw-line-even/', 2, 'even line number' )
00053         );
00054     }
00055 
00056     public function testRecentChangesLine_NotWatchedCssClass() {
00057         $oldChangesList = $this->getOldChangesList();
00058         $recentChange = $this->getEditChange();
00059 
00060         $line = $oldChangesList->recentChangesLine( $recentChange, false, 1 );
00061 
00062         $this->assertRegExp( '/mw-changeslist-line-not-watched/', $line );
00063     }
00064 
00065     public function testRecentChangesLine_WatchedCssClass() {
00066         $oldChangesList = $this->getOldChangesList();
00067         $recentChange = $this->getEditChange();
00068 
00069         $line = $oldChangesList->recentChangesLine( $recentChange, true, 1 );
00070 
00071         $this->assertRegExp( '/mw-changeslist-line-watched/', $line );
00072     }
00073 
00074     public function testRecentChangesLine_LogTitle() {
00075         $oldChangesList = $this->getOldChangesList();
00076         $recentChange = $this->getLogChange( 'delete', 'delete' );
00077 
00078         $line = $oldChangesList->recentChangesLine( $recentChange, false, 1 );
00079 
00080         $this->assertRegExp( '/href="\/wiki\/Special:Log\/delete/', $line, 'link has href attribute' );
00081         $this->assertRegExp( '/title="Special:Log\/delete/', $line, 'link has title attribute' );
00082         $this->assertRegExp( "/dellogpage/", $line, 'link text' );
00083     }
00084 
00085     public function testRecentChangesLine_DiffHistLinks() {
00086         $oldChangesList = $this->getOldChangesList();
00087         $recentChange = $this->getEditChange();
00088 
00089         $line = $oldChangesList->recentChangesLine( $recentChange, false, 1 );
00090 
00091         $this->assertRegExp(
00092             '/title=Cat&amp;curid=20131103212153&amp;diff=5&amp;oldid=191/',
00093             $line,
00094             'assert diff link'
00095         );
00096 
00097         $this->assertRegExp( '/tabindex="0"/', $line, 'assert tab index' );
00098         $this->assertRegExp(
00099             '/title=Cat&amp;curid=20131103212153&amp;action=history"/',
00100             $line,
00101             'assert history link'
00102         );
00103     }
00104 
00105     public function testRecentChangesLine_Flags() {
00106         $oldChangesList = $this->getOldChangesList();
00107         $recentChange = $this->getNewBotEditChange();
00108 
00109         $line = $oldChangesList->recentChangesLine( $recentChange, false, 1 );
00110 
00111         $this->assertContains(
00112             "<abbr class='newpage' title='(recentchanges-label-newpage)'>(newpageletter)</abbr>",
00113             $line,
00114             'new page flag'
00115         );
00116 
00117         $this->assertContains(
00118             "<abbr class='botedit' title='(recentchanges-label-bot)'>(boteditletter)</abbr>",
00119             $line,
00120             'bot flag'
00121         );
00122     }
00123 
00124     public function testRecentChangesLine_Tags() {
00125         $recentChange = $this->getEditChange();
00126         $recentChange->mAttribs['ts_tags'] = 'vandalism,newbie';
00127 
00128         $oldChangesList = $this->getOldChangesList();
00129         $line = $oldChangesList->recentChangesLine( $recentChange, false, 1 );
00130 
00131         $this->assertRegExp( '/<li class="[\w\s-]*mw-tag-vandalism[\w\s-]*">/', $line );
00132         $this->assertRegExp( '/<li class="[\w\s-]*mw-tag-newbie[\w\s-]*">/', $line );
00133     }
00134 
00135     private function getNewBotEditChange() {
00136         $user = $this->getTestUser();
00137 
00138         $recentChange = $this->testRecentChangesHelper->makeNewBotEditRecentChange(
00139             $user, 'Abc', '20131103212153', 5, 191, 190, 0, 0
00140         );
00141 
00142         return $recentChange;
00143     }
00144 
00145     private function getLogChange( $logType, $logAction ) {
00146         $user = $this->getTestUser();
00147 
00148         $recentChange = $this->testRecentChangesHelper->makeLogRecentChange(
00149             $logType, $logAction, $user, 'Abc', '20131103212153', 0, 0
00150         );
00151 
00152         return $recentChange;
00153     }
00154 
00155     private function getEditChange() {
00156         $user = $this->getTestUser();
00157         $recentChange = $this->testRecentChangesHelper->makeEditRecentChange(
00158             $user, 'Cat', '20131103212153', 5, 191, 190, 0, 0
00159         );
00160 
00161         return $recentChange;
00162     }
00163 
00164     private function getOldChangesList() {
00165         $context = $this->getContext();
00166         return new OldChangesList( $context );
00167     }
00168 
00169     private function getTestUser() {
00170         $user = User::newFromName( 'TestRecentChangesUser' );
00171 
00172         if ( !$user->getId() ) {
00173             $user->addToDatabase();
00174         }
00175 
00176         return $user;
00177     }
00178 
00179     private function getContext() {
00180         $user = $this->getTestUser();
00181         $context = $this->testRecentChangesHelper->getTestContext( $user );
00182         $context->setLanguage( Language::factory( 'qqx' ) );
00183 
00184         return $context;
00185     }
00186 
00187 }