6 class SideBarTest
extends MediaWikiLangTestCase
{
8 /** A skin template, reinitialized before each test */
10 /** Local cache for sidebar messages */
13 /** Build $this->messages array */
14 private function initMessagesHref() {
15 # List of default messages for the sidebar:
16 $URL_messages = array(
25 foreach ( $URL_messages as $m ) {
26 $titleName = MessageCache
::singleton()->get( $m );
27 $title = Title
::newFromText( $titleName );
28 $this->messages
[$m]['href'] = $title->getLocalURL();
32 protected function setUp() {
34 $this->initMessagesHref();
35 $this->skin
= new SkinTemplate();
36 $this->skin
->getContext()->setLanguage( Language
::factory( 'en' ) );
39 protected function tearDown() {
45 * Internal helper to test the sidebar
48 * @param $message (Default: '')
50 private function assertSideBar( $expected, $text, $message = '' ) {
52 $this->skin
->addToSidebarPlain( $bar, $text );
53 $this->assertEquals( $expected, $bar, $message );
56 function testSidebarWithOnlyTwoTitles() {
68 function testExpandMessages() {
70 array( 'Title' => array(
73 'href' => $this->messages
['helppage']['href'],
84 function testExternalUrlsRequireADescription() {
86 array( 'Title' => array(
87 # ** http://www.mediawiki.org/| Home
90 'href' => 'http://www.mediawiki.org/',
95 # ** http://valid.no.desc.org/
96 # ... skipped since it is missing a pipe with a description
99 ** http://www.mediawiki.org/| Home
100 ** http://valid.no.desc.org/
106 * bug 33321 - Make sure there's a | after transforming.
109 function testTrickyPipe() {
110 $this->assertSidebar(
111 array( 'Title' => array(
112 # The first 2 are skipped
113 # Doesn't really test the url properly
114 # because it will vary with $wgArticlePath et al.
118 'href' => Title
::newFromText( 'Baz' )->getLocalURL(),
123 'text' => 'title-to-display',
124 'href' => Title
::newFromText( 'page-to-go-to' )->getLocalURL(),
125 'id' => 'n-title-to-display',
133 ** {{PLURAL:1|page-to-go-to{{int:pipe-separator/en}}title-to-display|branch not taken}}
139 #### Attributes for external links ##########################
140 private function getAttribs() {
141 # Sidebar text we will use everytime
143 ** http://www.mediawiki.org/| Home';
146 $this->skin
->addToSideBarPlain( $bar, $text );
148 return $bar['Title'][0];
152 * Simple test to verify our helper assertAttribs() is functional
154 function testTestAttributesAssertionHelper() {
155 $this->setMwGlobals( array(
156 'wgNoFollowLinks' => true,
157 'wgExternalLinkTarget' => false,
159 $attribs = $this->getAttribs();
161 $this->assertArrayHasKey( 'rel', $attribs );
162 $this->assertEquals( 'nofollow', $attribs['rel'] );
164 $this->assertArrayNotHasKey( 'target', $attribs );
168 * Test $wgNoFollowLinks in sidebar
170 function testRespectWgnofollowlinks() {
171 $this->setMwGlobals( 'wgNoFollowLinks', false );
173 $attribs = $this->getAttribs();
174 $this->assertArrayNotHasKey( 'rel', $attribs,
175 'External URL in sidebar do not have rel=nofollow when $wgNoFollowLinks = false'
180 * Test $wgExternaLinkTarget in sidebar
181 * @dataProvider dataRespectExternallinktarget
183 function testRespectExternallinktarget( $externalLinkTarget ) {
184 $this->setMwGlobals( 'wgExternalLinkTarget', $externalLinkTarget );
186 $attribs = $this->getAttribs();
187 $this->assertArrayHasKey( 'target', $attribs );
188 $this->assertEquals( $attribs['target'], $externalLinkTarget );
191 function dataRespectExternallinktarget() {