MediaWiki
REL1_24
|
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&curid=20131103212153&diff=5&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&curid=20131103212153&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 }