summaryrefslogtreecommitdiff
path: root/tests/phpunit/includes/specials
diff options
context:
space:
mode:
authorPierre Schmitz <pierre@archlinux.de>2014-04-25 06:26:49 +0200
committerPierre Schmitz <pierre@archlinux.de>2014-04-25 06:26:49 +0200
commit2e44b49a2db3026050b136de9b00f749dd3ff939 (patch)
treeef048f4db79a93c25cfc86319264aa7ae2a4ae0b /tests/phpunit/includes/specials
parent9441dde8bfb95277df073717ed7817dced40f948 (diff)
Update to MediaWiki 1.22.6
Diffstat (limited to 'tests/phpunit/includes/specials')
-rw-r--r--tests/phpunit/includes/specials/QueryAllSpecialPagesTest.php79
-rw-r--r--tests/phpunit/includes/specials/SpecialPreferencesTest.php60
-rw-r--r--tests/phpunit/includes/specials/SpecialRecentchangesTest.php125
-rw-r--r--tests/phpunit/includes/specials/SpecialSearchTest.php139
4 files changed, 0 insertions, 403 deletions
diff --git a/tests/phpunit/includes/specials/QueryAllSpecialPagesTest.php b/tests/phpunit/includes/specials/QueryAllSpecialPagesTest.php
deleted file mode 100644
index a806b4ac..00000000
--- a/tests/phpunit/includes/specials/QueryAllSpecialPagesTest.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-/**
- * Test class to run the query of most of all our special pages
- *
- * Copyright © 2011, Antoine Musso
- *
- * @author Antoine Musso
- * @group Database
- */
-
-if ( !defined( 'MEDIAWIKI' ) ) {
- die( 1 );
-}
-
-global $IP;
-require_once "$IP/includes/QueryPage.php"; // Needed to populate $wgQueryPages
-
-class QueryAllSpecialPagesTest extends MediaWikiTestCase {
-
- /** List query pages that can not be tested automatically */
- protected $manualTest = array(
- 'LinkSearchPage'
- );
-
- /**
- * Pages whose query use the same DB table more than once.
- * This is used to skip testing those pages when run against a MySQL backend
- * which does not support reopening a temporary table. See upstream bug:
- * http://bugs.mysql.com/bug.php?id=10327
- */
- protected $reopensTempTable = array(
- 'BrokenRedirects',
- );
-
- /**
- * Initialize all query page objects
- */
- function __construct() {
- parent::__construct();
-
- global $wgQueryPages;
- foreach ( $wgQueryPages as $page ) {
- $class = $page[0];
- if ( !in_array( $class, $this->manualTest ) ) {
- $this->queryPages[$class] = new $class;
- }
- }
- }
-
- /**
- * Test SQL for each of our QueryPages objects
- * @group Database
- */
- public function testQuerypageSqlQuery() {
- global $wgDBtype;
-
- foreach ( $this->queryPages as $page ) {
-
- // With MySQL, skips special pages reopening a temporary table
- // See http://bugs.mysql.com/bug.php?id=10327
- if (
- $wgDBtype === 'mysql'
- && in_array( $page->getName(), $this->reopensTempTable )
- ) {
- $this->markTestSkipped( "SQL query for page {$page->getName()} can not be tested on MySQL backend (it reopens a temporary table)" );
- continue;
- }
-
- $msg = "SQL query for page {$page->getName()} should give a result wrapper object";
-
- $result = $page->reallyDoQuery( 50 );
- if ( $result instanceof ResultWrapper ) {
- $this->assertTrue( true, $msg );
- } else {
- $this->assertFalse( false, $msg );
- }
- }
- }
-}
diff --git a/tests/phpunit/includes/specials/SpecialPreferencesTest.php b/tests/phpunit/includes/specials/SpecialPreferencesTest.php
deleted file mode 100644
index 6c637c65..00000000
--- a/tests/phpunit/includes/specials/SpecialPreferencesTest.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-/**
- * Test class for SpecialPreferences class.
- *
- * Copyright © 2013, Antoine Musso
- * Copyright © 2013, Wikimedia Foundation Inc.
- *
- */
-
-class SpecialPreferencesTest extends MediaWikiTestCase {
-
- /**
- * Make sure a nickname which is longer than $wgMaxSigChars
- * is not throwing a fatal error.
- *
- * Test specifications by Alexandre "ialex" Emsenhuber.
- */
- public function testBug41337() {
-
- // Set a low limit
- $this->setMwGlobals( 'wgMaxSigChars', 2 );
-
- $user = $this->getMock( 'User' );
- $user->expects( $this->any() )
- ->method( 'isAnon' )
- ->will( $this->returnValue( false ) );
-
- # Yeah foreach requires an array, not NULL =(
- $user->expects( $this->any() )
- ->method( 'getEffectiveGroups' )
- ->will( $this->returnValue( array() ) );
-
- # The mocked user has a long nickname
- $user->expects( $this->any() )
- ->method( 'getOption' )
- ->will( $this->returnValueMap( array(
- array( 'nickname', null, false, 'superlongnickname' ),
- )
- ) );
-
- # Validate the mock (FIXME should probably be removed)
- $this->assertFalse( $user->isAnon() );
- $this->assertEquals( array(),
- $user->getEffectiveGroups() );
- $this->assertEquals( 'superlongnickname',
- $user->getOption( 'nickname' ) );
-
- # Forge a request to call the special page
- $context = new RequestContext();
- $context->setRequest( new FauxRequest() );
- $context->setUser( $user );
- $context->setTitle( Title::newFromText( 'Test' ) );
-
- # Do the call, should not spurt a fatal error.
- $special = new SpecialPreferences();
- $special->setContext( $context );
- $special->execute( array() );
- }
-
-}
diff --git a/tests/phpunit/includes/specials/SpecialRecentchangesTest.php b/tests/phpunit/includes/specials/SpecialRecentchangesTest.php
deleted file mode 100644
index 436eb2e2..00000000
--- a/tests/phpunit/includes/specials/SpecialRecentchangesTest.php
+++ /dev/null
@@ -1,125 +0,0 @@
-<?php
-/**
- * Test class for SpecialRecentchanges class
- *
- * Copyright © 2011, Antoine Musso
- *
- * @author Antoine Musso
- * @group Database
- */
-class SpecialRecentchangesTest extends MediaWikiTestCase {
-
- /**
- * @var SpecialRecentChanges
- */
- protected $rc;
-
- /** helper to test SpecialRecentchanges::buildMainQueryConds() */
- private function assertConditions( $expected, $requestOptions = null, $message = '' ) {
- $context = new RequestContext;
- $context->setRequest( new FauxRequest( $requestOptions ) );
-
- # setup the rc object
- $this->rc = new SpecialRecentChanges();
- $this->rc->setContext( $context );
- $formOptions = $this->rc->setup( null );
-
- # Filter out rc_timestamp conditions which depends on the test runtime
- # This condition is not needed as of march 2, 2011 -- hashar
- # @todo FIXME: Find a way to generate the correct rc_timestamp
- $queryConditions = array_filter(
- $this->rc->buildMainQueryConds( $formOptions ),
- 'SpecialRecentchangesTest::filterOutRcTimestampCondition'
- );
-
- $this->assertEquals(
- $expected,
- $queryConditions,
- $message
- );
- }
-
- /** return false if condition begin with 'rc_timestamp ' */
- private static function filterOutRcTimestampCondition( $var ) {
- return ( false === strpos( $var, 'rc_timestamp ' ) );
- }
-
- public function testRcNsFilter() {
- $this->assertConditions(
- array( # expected
- 'rc_bot' => 0,
- #0 => "rc_timestamp >= '20110223000000'",
- 1 => "rc_namespace = '0'",
- ),
- array(
- 'namespace' => NS_MAIN,
- ),
- "rc conditions with no options (aka default setting)"
- );
- }
-
- public function testRcNsFilterInversion() {
- $this->assertConditions(
- array( # expected
- #0 => "rc_timestamp >= '20110223000000'",
- 'rc_bot' => 0,
- 1 => sprintf( "rc_namespace != '%s'", NS_MAIN ),
- ),
- array(
- 'namespace' => NS_MAIN,
- 'invert' => 1,
- ),
- "rc conditions with namespace inverted"
- );
- }
-
- /**
- * @bug 2429
- * @dataProvider provideNamespacesAssociations
- */
- public function testRcNsFilterAssociation( $ns1, $ns2 ) {
- $this->assertConditions(
- array( # expected
- #0 => "rc_timestamp >= '20110223000000'",
- 'rc_bot' => 0,
- 1 => sprintf( "(rc_namespace = '%s' OR rc_namespace = '%s')", $ns1, $ns2 ),
- ),
- array(
- 'namespace' => $ns1,
- 'associated' => 1,
- ),
- "rc conditions with namespace inverted"
- );
- }
-
- /**
- * @bug 2429
- * @dataProvider provideNamespacesAssociations
- */
- public function testRcNsFilterAssociationWithInversion( $ns1, $ns2 ) {
- $this->assertConditions(
- array( # expected
- #0 => "rc_timestamp >= '20110223000000'",
- 'rc_bot' => 0,
- 1 => sprintf( "(rc_namespace != '%s' AND rc_namespace != '%s')", $ns1, $ns2 ),
- ),
- array(
- 'namespace' => $ns1,
- 'associated' => 1,
- 'invert' => 1,
- ),
- "rc conditions with namespace inverted"
- );
- }
-
- /**
- * Provides associated namespaces to test recent changes
- * namespaces association filtering.
- */
- public static function provideNamespacesAssociations() {
- return array( # (NS => Associated_NS)
- array( NS_MAIN, NS_TALK ),
- array( NS_TALK, NS_MAIN ),
- );
- }
-}
diff --git a/tests/phpunit/includes/specials/SpecialSearchTest.php b/tests/phpunit/includes/specials/SpecialSearchTest.php
deleted file mode 100644
index 17e883fd..00000000
--- a/tests/phpunit/includes/specials/SpecialSearchTest.php
+++ /dev/null
@@ -1,139 +0,0 @@
-<?php
-/**
- * Test class for SpecialSearch class
- * Copyright © 2012, Antoine Musso
- *
- * @author Antoine Musso
- * @group Database
- */
-
-class SpecialSearchTest extends MediaWikiTestCase {
- private $search;
-
- /**
- * @covers SpecialSearch::load
- * @dataProvider provideSearchOptionsTests
- * @param $requested Array Request parameters. For example array( 'ns5' => true, 'ns6' => true). NULL to use default options.
- * @param $userOptions Array User options to test with. For example array('searchNs5' => 1 );. NULL to use default options.
- * @param $expectedProfile An expected search profile name
- * @param $expectedNs Array Expected namespaces
- */
- public function testProfileAndNamespaceLoading(
- $requested, $userOptions, $expectedProfile, $expectedNS,
- $message = 'Profile name and namespaces mismatches!'
- ) {
- $context = new RequestContext;
- $context->setUser(
- $this->newUserWithSearchNS( $userOptions )
- );
- /*
- $context->setRequest( new FauxRequest( array(
- 'ns5'=>true,
- 'ns6'=>true,
- ) ));
- */
- $context->setRequest( new FauxRequest( $requested ) );
- $search = new SpecialSearch();
- $search->setContext( $context );
- $search->load();
-
- /**
- * Verify profile name and namespace in the same assertion to make
- * sure we will be able to fully compare the above code. PHPUnit stop
- * after an assertion fail.
- */
- $this->assertEquals(
- array( /** Expected: */
- 'ProfileName' => $expectedProfile,
- 'Namespaces' => $expectedNS,
- )
- , array( /** Actual: */
- 'ProfileName' => $search->getProfile(),
- 'Namespaces' => $search->getNamespaces(),
- )
- , $message
- );
- }
-
- public static function provideSearchOptionsTests() {
- $defaultNS = SearchEngine::defaultNamespaces();
- $EMPTY_REQUEST = array();
- $NO_USER_PREF = null;
-
- return array(
- /**
- * Parameters:
- * <Web Request>, <User options>
- * Followed by expected values:
- * <ProfileName>, <NSList>
- * Then an optional message.
- */
- array(
- $EMPTY_REQUEST, $NO_USER_PREF,
- 'default', $defaultNS,
- 'Bug 33270: No request nor user preferences should give default profile'
- ),
- array(
- array( 'ns5' => 1 ), $NO_USER_PREF,
- 'advanced', array( 5 ),
- 'Web request with specific NS should override user preference'
- ),
- array(
- $EMPTY_REQUEST, array(
- 'searchNs2' => 1,
- 'searchNs14' => 1,
- ) + array_fill_keys( array_map( function ( $ns ) {
- return "searchNs$ns";
- }, $defaultNS ), 0 ),
- 'advanced', array( 2, 14 ),
- 'Bug 33583: search with no option should honor User search preferences'
- . ' and have all other namespace disabled'
- ),
- );
- }
-
- /**
- * Helper to create a new User object with given options
- * User remains anonymous though
- */
- function newUserWithSearchNS( $opt = null ) {
- $u = User::newFromId( 0 );
- if ( $opt === null ) {
- return $u;
- }
- foreach ( $opt as $name => $value ) {
- $u->setOption( $name, $value );
- }
-
- return $u;
- }
-
- /**
- * Verify we do not expand search term in <title> on search result page
- * https://gerrit.wikimedia.org/r/4841
- */
- public function testSearchTermIsNotExpanded() {
-
- # Initialize [[Special::Search]]
- $search = new SpecialSearch();
- $search->getContext()->setTitle( Title::newFromText( 'Special:Search' ) );
- $search->load();
-
- # Simulate a user searching for a given term
- $term = '{{SITENAME}}';
- $search->showResults( $term );
-
- # Lookup the HTML page title set for that page
- $pageTitle = $search
- ->getContext()
- ->getOutput()
- ->getHTMLTitle();
-
- # Compare :-]
- $this->assertRegExp(
- '/' . preg_quote( $term ) . '/',
- $pageTitle,
- "Search term '{$term}' should not be expanded in Special:Search <title>"
- );
- }
-}