http://www.mediawiki.org/wiki/Special:Code/MediaWiki/97830

Revision: 97830
Author:   reedy
Date:     2011-09-22 17:39:04 +0000 (Thu, 22 Sep 2011)
Log Message:
-----------
Copy SideBarTest from trunk for bug 3110

Added Paths:
-----------
    branches/REL1_18/phase3/tests/phpunit/skins/SideBarTest.php

Copied: branches/REL1_18/phase3/tests/phpunit/skins/SideBarTest.php (from rev 
97812, trunk/phase3/tests/phpunit/skins/SideBarTest.php)
===================================================================
--- branches/REL1_18/phase3/tests/phpunit/skins/SideBarTest.php                 
        (rev 0)
+++ branches/REL1_18/phase3/tests/phpunit/skins/SideBarTest.php 2011-09-22 
17:39:04 UTC (rev 97830)
@@ -0,0 +1,175 @@
+<?php
+
+/**
+ * @group Skin
+ */
+class SideBarTest extends MediaWikiLangTestCase {
+
+       /** A skin template, reinitialized before each test */
+       private $skin;
+       /** Local cache for sidebar messages */
+       private $messages;
+
+       function __construct() {
+               parent::__construct();
+       }
+
+       /** Build $this->messages array */
+       private function initMessagesHref() {
+               # List of default messages for the sidebar:
+               $URL_messages = array(
+                       'mainpage',
+                       'portal-url',
+                       'currentevents-url',
+                       'recentchanges-url',
+                       'randompage-url',
+                       'helppage',
+               );
+
+               foreach( $URL_messages as $m ) {
+                       $titleName = MessageCache::singleton()->get($m);
+                       $title = Title::newFromText( $titleName );
+                       $this->messages[$m]['href'] = $title->getLocalURL();
+               }
+       }
+
+       function setUp() {
+               parent::setUp();
+               $this->initMessagesHref();
+               $this->skin = new SkinTemplate();
+       }
+       function tearDown() {
+               parent::tearDown();
+               $this->skin = null;
+       }
+
+       /**
+        * Internal helper to test the sidebar
+        * @param $expected
+        * @param $text
+        * @param $message (Default: '')
+        */
+       private function assertSideBar( $expected, $text, $message = '' ) {
+               $bar = array();
+               $this->skin->addToSidebarPlain( $bar, $text );
+               $this->assertEquals( $expected, $bar, $message );
+       }
+
+       function testSidebarWithOnlyTwoTitles() {
+               $this->assertSideBar(
+               array(
+                       'Title1' => array(),
+                       'Title2' => array(),
+               ),
+'* Title1
+* Title2
+'
+               );
+       }
+
+       function testExpandMessages() {
+               $this->assertSidebar(
+               array( 'Title' => array(
+                       array(
+                               'text' => 'Help',
+                               'href' => $this->messages['helppage']['href'],
+                               'id' => 'n-help',
+                               'active' => null
+                       )
+               )),
+'* Title
+** helppage|help
+'
+               );
+       }
+
+       function testExternalUrlsRequireADescription() {
+               $this->assertSidebar(
+               array( 'Title' => array(
+                       # ** http://www.mediawiki.org/| Home
+                       array(
+                               'text'   => 'Home',
+                               'href'   => 'http://www.mediawiki.org/',
+                               'id'     => 'n-Home',
+                               'active' => null,
+                               'rel'    => 'nofollow',
+                       ),
+                       # ** http://valid.no.desc.org/
+                       # ... skipped since it is missing a pipe with a 
description
+               )),
+'* Title
+** http://www.mediawiki.org/| Home
+** http://valid.no.desc.org/
+'
+
+               );
+
+       }
+
+
+       #### Attributes for external links ##########################
+       private function getAttribs( ) {
+               # Sidebar text we will use everytime
+               $text = '* Title
+** http://www.mediawiki.org/| Home';
+
+               $bar = array();
+               $this->skin->addToSideBarPlain( $bar, $text );
+
+               return $bar['Title'][0];
+       }
+
+       /**
+        * Simple test to verify our helper assertAttribs() is functional
+        * Please note this assume MediaWiki default settings:
+        *   $wgNoFollowLinks = true
+        *   $wgExternalLinkTarget = false
+        */
+       function testTestAttributesAssertionHelper() {
+               $attribs = $this->getAttribs();
+
+               $this->assertArrayHasKey( 'rel', $attribs );
+               $this->assertEquals( 'nofollow', $attribs['rel'] );
+
+               $this->assertArrayNotHasKey( 'target', $attribs );
+       }
+
+       /**
+        * Test wgNoFollowLinks in sidebar
+        */
+       function testRespectWgnofollowlinks() {
+               global $wgNoFollowLinks;
+               $saved = $wgNoFollowLinks;
+               $wgNoFollowLinks = false;
+
+               $attribs = $this->getAttribs();
+               $this->assertArrayNotHasKey( 'rel', $attribs,
+                       'External URL in sidebar do not have rel=nofollow when 
wgNoFollowLinks = false'
+               );
+
+               // Restore global
+               $wgNoFollowLinks = $saved;
+       }
+
+       /**
+        * Test wgExternaLinkTarget in sidebar
+        */
+       function testRespectExternallinktarget() {
+               global $wgExternalLinkTarget;
+               $saved = $wgExternalLinkTarget;
+
+               $wgExternalLinkTarget = '_blank';
+               $attribs = $this->getAttribs();
+               $this->assertArrayHasKey( 'target', $attribs );
+               $this->assertEquals( $attribs['target'], '_blank' );
+
+               $wgExternalLinkTarget = '_self';
+               $attribs = $this->getAttribs();
+               $this->assertArrayHasKey( 'target', $attribs );
+               $this->assertEquals( $attribs['target'], '_self' );
+
+               // Restore global
+               $wgExternalLinkTarget = $saved;
+       }
+
+}


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to