summaryrefslogtreecommitdiff
path: root/tests/phpunit/includes/MWNamespaceTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/phpunit/includes/MWNamespaceTest.php')
-rw-r--r--tests/phpunit/includes/MWNamespaceTest.php281
1 files changed, 112 insertions, 169 deletions
diff --git a/tests/phpunit/includes/MWNamespaceTest.php b/tests/phpunit/includes/MWNamespaceTest.php
index 3b05d675..10e9db61 100644
--- a/tests/phpunit/includes/MWNamespaceTest.php
+++ b/tests/phpunit/includes/MWNamespaceTest.php
@@ -11,21 +11,22 @@
*
*/
class MWNamespaceTest extends MediaWikiTestCase {
- /**
- * Sets up the fixture, for example, opens a network connection.
- * This method is called before a test is executed.
- */
protected function setUp() {
- }
+ parent::setUp();
- /**
- * Tears down the fixture, for example, closes a network connection.
- * This method is called after a test is executed.
- */
- protected function tearDown() {
+ $this->setMwGlobals( array(
+ 'wgContentNamespaces' => array( NS_MAIN ),
+ 'wgNamespacesWithSubpages' => array(
+ NS_TALK => true,
+ NS_USER => true,
+ NS_USER_TALK => true,
+ ),
+ 'wgCapitalLinks' => true,
+ 'wgCapitalLinkOverrides' => array(),
+ 'wgNonincludableNamespaces' => array(),
+ ) );
}
-
#### START OF TESTS #########################################################
/**
@@ -41,18 +42,18 @@ class MWNamespaceTest extends MediaWikiTestCase {
*/
public function testIsSubject() {
// Special namespaces
- $this->assertIsSubject( NS_MEDIA );
+ $this->assertIsSubject( NS_MEDIA );
$this->assertIsSubject( NS_SPECIAL );
// Subject pages
$this->assertIsSubject( NS_MAIN );
$this->assertIsSubject( NS_USER );
- $this->assertIsSubject( 100 ); # user defined
+ $this->assertIsSubject( 100 ); # user defined
// Talk pages
- $this->assertIsNotSubject( NS_TALK );
+ $this->assertIsNotSubject( NS_TALK );
$this->assertIsNotSubject( NS_USER_TALK );
- $this->assertIsNotSubject( 101 ); # user defined
+ $this->assertIsNotSubject( 101 ); # user defined
}
/**
@@ -61,18 +62,18 @@ class MWNamespaceTest extends MediaWikiTestCase {
*/
public function testIsTalk() {
// Special namespaces
- $this->assertIsNotTalk( NS_MEDIA );
+ $this->assertIsNotTalk( NS_MEDIA );
$this->assertIsNotTalk( NS_SPECIAL );
// Subject pages
- $this->assertIsNotTalk( NS_MAIN );
- $this->assertIsNotTalk( NS_USER );
- $this->assertIsNotTalk( 100 ); # user defined
+ $this->assertIsNotTalk( NS_MAIN );
+ $this->assertIsNotTalk( NS_USER );
+ $this->assertIsNotTalk( 100 ); # user defined
// Talk pages
- $this->assertIsTalk( NS_TALK );
+ $this->assertIsTalk( NS_TALK );
$this->assertIsTalk( NS_USER_TALK );
- $this->assertIsTalk( 101 ); # user defined
+ $this->assertIsTalk( 101 ); # user defined
}
/**
@@ -124,7 +125,6 @@ class MWNamespaceTest extends MediaWikiTestCase {
public function testGetAssociated() {
$this->assertEquals( NS_TALK, MWNamespace::getAssociated( NS_MAIN ) );
$this->assertEquals( NS_MAIN, MWNamespace::getAssociated( NS_TALK ) );
-
}
### Exceptions with getAssociated()
@@ -134,7 +134,7 @@ class MWNamespaceTest extends MediaWikiTestCase {
* @expectedException MWException
*/
public function testGetAssociatedExceptionsForNsMedia() {
- $this->assertNull( MWNamespace::getAssociated( NS_MEDIA ) );
+ $this->assertNull( MWNamespace::getAssociated( NS_MEDIA ) );
}
/**
@@ -147,14 +147,14 @@ class MWNamespaceTest extends MediaWikiTestCase {
/**
* @todo Implement testExists().
*/
-/*
+ /*
public function testExists() {
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet. Rely on $wgCanonicalNamespaces.'
);
}
-*/
+ */
/**
* Test MWNamespace::equals
@@ -188,7 +188,7 @@ class MWNamespaceTest extends MediaWikiTestCase {
$this->assertSameSubject( NS_USER, NS_USER_TALK );
$this->assertDifferentSubject( NS_PROJECT, NS_TEMPLATE );
- $this->assertDifferentSubject( NS_SPECIAL, NS_MAIN );
+ $this->assertDifferentSubject( NS_SPECIAL, NS_MAIN );
}
public function testSpecialAndMediaAreDifferentSubjects() {
@@ -200,62 +200,63 @@ class MWNamespaceTest extends MediaWikiTestCase {
NS_SPECIAL, NS_MEDIA,
"NS_SPECIAL and NS_MEDIA are different subject namespaces"
);
-
}
/**
* @todo Implement testGetCanonicalNamespaces().
*/
-/*
+ /*
public function testGetCanonicalNamespaces() {
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet. Rely on $wgCanonicalNamespaces.'
);
}
-*/
+ */
/**
* @todo Implement testGetCanonicalName().
*/
-/*
- public function testGetCanonicalName() {
- // Remove the following lines when you implement this test.
- $this->markTestIncomplete(
- 'This test has not been implemented yet. Rely on $wgCanonicalNamespaces.'
- );
- }
-*/
+ /*
+ public function testGetCanonicalName() {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet. Rely on $wgCanonicalNamespaces.'
+ );
+ }
+ */
/**
* @todo Implement testGetCanonicalIndex().
*/
-/*
+ /*
public function testGetCanonicalIndex() {
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet. Rely on $wgCanonicalNamespaces.'
);
}
-*/
+ */
+
/**
* @todo Implement testGetValidNamespaces().
*/
-/*
+ /*
public function testGetValidNamespaces() {
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet. Rely on $wgCanonicalNamespaces.'
);
}
-*/
+ */
+
/**
*/
public function testCanTalk() {
- $this->assertCanNotTalk( NS_MEDIA );
+ $this->assertCanNotTalk( NS_MEDIA );
$this->assertCanNotTalk( NS_SPECIAL );
- $this->assertCanTalk( NS_MAIN );
- $this->assertCanTalk( NS_TALK );
- $this->assertCanTalk( NS_USER );
+ $this->assertCanTalk( NS_MAIN );
+ $this->assertCanTalk( NS_TALK );
+ $this->assertCanTalk( NS_USER );
$this->assertCanTalk( NS_USER_TALK );
// User defined namespaces
@@ -268,82 +269,41 @@ class MWNamespaceTest extends MediaWikiTestCase {
public function testIsContent() {
// NS_MAIN is a content namespace per DefaultSettings.php
// and per function definition.
- $this->assertIsContent( NS_MAIN );
-
- global $wgContentNamespaces;
-
- $saved = $wgContentNamespaces;
- $wgContentNamespaces[] = NS_MAIN;
$this->assertIsContent( NS_MAIN );
// Other namespaces which are not expected to be content
- if ( isset( $wgContentNamespaces[NS_MEDIA] ) ) {
- unset( $wgContentNamespaces[NS_MEDIA] );
- }
- $this->assertIsNotContent( NS_MEDIA );
- if ( isset( $wgContentNamespaces[NS_SPECIAL] ) ) {
- unset( $wgContentNamespaces[NS_SPECIAL] );
- }
+ $this->assertIsNotContent( NS_MEDIA );
$this->assertIsNotContent( NS_SPECIAL );
-
- if ( isset( $wgContentNamespaces[NS_TALK] ) ) {
- unset( $wgContentNamespaces[NS_TALK] );
- }
$this->assertIsNotContent( NS_TALK );
-
- if ( isset( $wgContentNamespaces[NS_USER] ) ) {
- unset( $wgContentNamespaces[NS_USER] );
- }
$this->assertIsNotContent( NS_USER );
-
- if ( isset( $wgContentNamespaces[NS_CATEGORY] ) ) {
- unset( $wgContentNamespaces[NS_CATEGORY] );
- }
$this->assertIsNotContent( NS_CATEGORY );
-
- if ( isset( $wgContentNamespaces[100] ) ) {
- unset( $wgContentNamespaces[100] );
- }
$this->assertIsNotContent( 100 );
-
- $wgContentNamespaces = $saved;
}
/**
* Similar to testIsContent() but alters the $wgContentNamespaces
* global variable.
*/
- public function testIsContentWithAdditionsInWgContentNamespaces() {
- // NS_MAIN is a content namespace per DefaultSettings.php
- // and per function definition.
- $this->assertIsContent( NS_MAIN );
+ public function testIsContentAdvanced() {
+ global $wgContentNamespaces;
- // Tests that user defined namespace #252 is not content:
+ // Test that user defined namespace #252 is not content
$this->assertIsNotContent( 252 );
- # @todo FIXME: Is global saving really required for PHPUnit?
// Bless namespace # 252 as a content namespace
- global $wgContentNamespaces;
- $savedGlobal = $wgContentNamespaces;
$wgContentNamespaces[] = 252;
+
$this->assertIsContent( 252 );
// Makes sure NS_MAIN was not impacted
$this->assertIsContent( NS_MAIN );
-
- // Restore global
- $wgContentNamespaces = $savedGlobal;
-
- // Verify namespaces after global restauration
- $this->assertIsContent( NS_MAIN );
- $this->assertIsNotContent( 252 );
}
public function testIsWatchable() {
// Specials namespaces are not watchable
- $this->assertIsNotWatchable( NS_MEDIA );
+ $this->assertIsNotWatchable( NS_MEDIA );
$this->assertIsNotWatchable( NS_SPECIAL );
// Core defined namespaces are watchables
@@ -356,68 +316,60 @@ class MWNamespaceTest extends MediaWikiTestCase {
}
public function testHasSubpages() {
+ global $wgNamespacesWithSubpages;
+
// Special namespaces:
- $this->assertHasNotSubpages( NS_MEDIA );
+ $this->assertHasNotSubpages( NS_MEDIA );
$this->assertHasNotSubpages( NS_SPECIAL );
- // namespaces without subpages
- # save up global
- global $wgNamespacesWithSubpages;
- $saved = null;
- if( array_key_exists( NS_MAIN, $wgNamespacesWithSubpages ) ) {
- $saved = $wgNamespacesWithSubpages[NS_MAIN];
- unset( $wgNamespacesWithSubpages[NS_MAIN] );
- }
-
+ // Namespaces without subpages
$this->assertHasNotSubpages( NS_MAIN );
$wgNamespacesWithSubpages[NS_MAIN] = true;
$this->assertHasSubpages( NS_MAIN );
+
$wgNamespacesWithSubpages[NS_MAIN] = false;
$this->assertHasNotSubpages( NS_MAIN );
- # restore global
- if( $saved !== null ) {
- $wgNamespacesWithSubpages[NS_MAIN] = $saved;
- }
-
// Some namespaces with subpages
- $this->assertHasSubpages( NS_TALK );
- $this->assertHasSubpages( NS_USER );
+ $this->assertHasSubpages( NS_TALK );
+ $this->assertHasSubpages( NS_USER );
$this->assertHasSubpages( NS_USER_TALK );
}
/**
*/
public function testGetContentNamespaces() {
+ global $wgContentNamespaces;
+
$this->assertEquals(
array( NS_MAIN ),
- MWNamespace::getcontentNamespaces(),
+ MWNamespace::getContentNamespaces(),
'$wgContentNamespaces is an array with only NS_MAIN by default'
);
- global $wgContentNamespaces;
-
- $saved = $wgContentNamespaces;
# test !is_array( $wgcontentNamespaces )
$wgContentNamespaces = '';
- $this->assertEquals( NS_MAIN, MWNamespace::getcontentNamespaces() );
+ $this->assertEquals( array( NS_MAIN ), MWNamespace::getContentNamespaces() );
+
$wgContentNamespaces = false;
- $this->assertEquals( NS_MAIN, MWNamespace::getcontentNamespaces() );
+ $this->assertEquals( array( NS_MAIN ), MWNamespace::getContentNamespaces() );
+
$wgContentNamespaces = null;
- $this->assertEquals( NS_MAIN, MWNamespace::getcontentNamespaces() );
+ $this->assertEquals( array( NS_MAIN ), MWNamespace::getContentNamespaces() );
+
$wgContentNamespaces = 5;
- $this->assertEquals( NS_MAIN, MWNamespace::getcontentNamespaces() );
+ $this->assertEquals( array( NS_MAIN ), MWNamespace::getContentNamespaces() );
# test $wgContentNamespaces === array()
$wgContentNamespaces = array();
- $this->assertEquals( NS_MAIN, MWNamespace::getcontentNamespaces() );
+ $this->assertEquals( array( NS_MAIN ), MWNamespace::getContentNamespaces() );
# test !in_array( NS_MAIN, $wgContentNamespaces )
$wgContentNamespaces = array( NS_USER, NS_CATEGORY );
$this->assertEquals(
array( NS_MAIN, NS_USER, NS_CATEGORY ),
- MWNamespace::getcontentNamespaces(),
+ MWNamespace::getContentNamespaces(),
'NS_MAIN is forced in $wgContentNamespaces even if unwanted'
);
@@ -425,23 +377,21 @@ class MWNamespaceTest extends MediaWikiTestCase {
$wgContentNamespaces = array( NS_MAIN );
$this->assertEquals(
array( NS_MAIN ),
- MWNamespace::getcontentNamespaces()
+ MWNamespace::getContentNamespaces()
);
$wgContentNamespaces = array( NS_MAIN, NS_USER, NS_CATEGORY );
$this->assertEquals(
array( NS_MAIN, NS_USER, NS_CATEGORY ),
- MWNamespace::getcontentNamespaces()
+ MWNamespace::getContentNamespaces()
);
-
- $wgContentNamespaces = $saved;
}
/**
*/
public function testGetSubjectNamespaces() {
$subjectsNS = MWNamespace::getSubjectNamespaces();
- $this->assertContains( NS_MAIN, $subjectsNS,
+ $this->assertContains( NS_MAIN, $subjectsNS,
"Talk namespaces should have NS_MAIN" );
$this->assertNotContains( NS_TALK, $subjectsNS,
"Talk namespaces should have NS_TALK" );
@@ -456,7 +406,7 @@ class MWNamespaceTest extends MediaWikiTestCase {
*/
public function testGetTalkNamespaces() {
$talkNS = MWNamespace::getTalkNamespaces();
- $this->assertContains( NS_TALK, $talkNS,
+ $this->assertContains( NS_TALK, $talkNS,
"Subject namespaces should have NS_TALK" );
$this->assertNotContains( NS_MAIN, $talkNS,
"Subject namespaces should not have NS_MAIN" );
@@ -475,18 +425,18 @@ class MWNamespaceTest extends MediaWikiTestCase {
// NS_MEDIA and NS_FILE are treated the same
$this->assertEquals(
MWNamespace::isCapitalized( NS_MEDIA ),
- MWNamespace::isCapitalized( NS_FILE ),
+ MWNamespace::isCapitalized( NS_FILE ),
'NS_MEDIA and NS_FILE have same capitalization rendering'
);
// Boths are capitalized by default
$this->assertIsCapitalized( NS_MEDIA );
- $this->assertIsCapitalized( NS_FILE );
+ $this->assertIsCapitalized( NS_FILE );
// Always capitalized namespaces
// @see MWNamespace::$alwaysCapitalizedNamespaces
- $this->assertIsCapitalized( NS_SPECIAL );
- $this->assertIsCapitalized( NS_USER );
+ $this->assertIsCapitalized( NS_SPECIAL );
+ $this->assertIsCapitalized( NS_USER );
$this->assertIsCapitalized( NS_MEDIAWIKI );
}
@@ -498,30 +448,26 @@ class MWNamespaceTest extends MediaWikiTestCase {
* $wgCapitalLinkOverrides = array(); by default
* $wgCapitalLinks = true; by default
* This function test $wgCapitalLinks
- *
+ *
* Global setting correctness is tested against the NS_PROJECT and
* NS_PROJECT_TALK namespaces since they are not hardcoded nor specials
*/
public function testIsCapitalizedWithWgCapitalLinks() {
global $wgCapitalLinks;
- // Save the global to easily reset to MediaWiki default settings
- $savedGlobal = $wgCapitalLinks;
- $wgCapitalLinks = true;
- $this->assertIsCapitalized( NS_PROJECT );
+ $this->assertIsCapitalized( NS_PROJECT );
$this->assertIsCapitalized( NS_PROJECT_TALK );
$wgCapitalLinks = false;
+
// hardcoded namespaces (see above function) are still capitalized:
- $this->assertIsCapitalized( NS_SPECIAL );
- $this->assertIsCapitalized( NS_USER );
+ $this->assertIsCapitalized( NS_SPECIAL );
+ $this->assertIsCapitalized( NS_USER );
$this->assertIsCapitalized( NS_MEDIAWIKI );
+
// setting is correctly applied
- $this->assertIsNotCapitalized( NS_PROJECT );
+ $this->assertIsNotCapitalized( NS_PROJECT );
$this->assertIsNotCapitalized( NS_PROJECT_TALK );
-
- // reset global state:
- $wgCapitalLinks = $savedGlobal;
}
/**
@@ -532,81 +478,78 @@ class MWNamespaceTest extends MediaWikiTestCase {
*/
public function testIsCapitalizedWithWgCapitalLinkOverrides() {
global $wgCapitalLinkOverrides;
- // Save the global to easily reset to MediaWiki default settings
- $savedGlobal = $wgCapitalLinkOverrides;
// Test default settings
- $this->assertIsCapitalized( NS_PROJECT );
+ $this->assertIsCapitalized( NS_PROJECT );
$this->assertIsCapitalized( NS_PROJECT_TALK );
+
// hardcoded namespaces (see above function) are capitalized:
- $this->assertIsCapitalized( NS_SPECIAL );
- $this->assertIsCapitalized( NS_USER );
+ $this->assertIsCapitalized( NS_SPECIAL );
+ $this->assertIsCapitalized( NS_USER );
$this->assertIsCapitalized( NS_MEDIAWIKI );
// Hardcoded namespaces remains capitalized
- $wgCapitalLinkOverrides[NS_SPECIAL] = false;
- $wgCapitalLinkOverrides[NS_USER] = false;
+ $wgCapitalLinkOverrides[NS_SPECIAL] = false;
+ $wgCapitalLinkOverrides[NS_USER] = false;
$wgCapitalLinkOverrides[NS_MEDIAWIKI] = false;
- $this->assertIsCapitalized( NS_SPECIAL );
- $this->assertIsCapitalized( NS_USER );
+
+ $this->assertIsCapitalized( NS_SPECIAL );
+ $this->assertIsCapitalized( NS_USER );
$this->assertIsCapitalized( NS_MEDIAWIKI );
- $wgCapitalLinkOverrides = $savedGlobal;
$wgCapitalLinkOverrides[NS_PROJECT] = false;
$this->assertIsNotCapitalized( NS_PROJECT );
- $wgCapitalLinkOverrides[NS_PROJECT] = true ;
- $this->assertIsCapitalized( NS_PROJECT );
- unset( $wgCapitalLinkOverrides[NS_PROJECT] );
+
+ $wgCapitalLinkOverrides[NS_PROJECT] = true;
$this->assertIsCapitalized( NS_PROJECT );
- // reset global state:
- $wgCapitalLinkOverrides = $savedGlobal;
+ unset( $wgCapitalLinkOverrides[NS_PROJECT] );
+ $this->assertIsCapitalized( NS_PROJECT );
}
public function testHasGenderDistinction() {
// Namespaces with gender distinctions
- $this->assertTrue( MWNamespace::hasGenderDistinction( NS_USER ) );
+ $this->assertTrue( MWNamespace::hasGenderDistinction( NS_USER ) );
$this->assertTrue( MWNamespace::hasGenderDistinction( NS_USER_TALK ) );
// Other ones, "genderless"
- $this->assertFalse( MWNamespace::hasGenderDistinction( NS_MEDIA ) );
+ $this->assertFalse( MWNamespace::hasGenderDistinction( NS_MEDIA ) );
$this->assertFalse( MWNamespace::hasGenderDistinction( NS_SPECIAL ) );
- $this->assertFalse( MWNamespace::hasGenderDistinction( NS_MAIN ) );
- $this->assertFalse( MWNamespace::hasGenderDistinction( NS_TALK ) );
-
+ $this->assertFalse( MWNamespace::hasGenderDistinction( NS_MAIN ) );
+ $this->assertFalse( MWNamespace::hasGenderDistinction( NS_TALK ) );
}
public function testIsNonincludable() {
global $wgNonincludableNamespaces;
+
$wgNonincludableNamespaces = array( NS_USER );
$this->assertTrue( MWNamespace::isNonincludable( NS_USER ) );
-
$this->assertFalse( MWNamespace::isNonincludable( NS_TEMPLATE ) );
}
####### HELPERS ###########################################################
function __call( $method, $args ) {
// Call the real method if it exists
- if( method_exists($this, $method ) ) {
+ if ( method_exists( $this, $method ) ) {
return $this->$method( $args );
}
- if( preg_match( '/^assert(Has|Is|Can)(Not|)(Subject|Talk|Watchable|Content|Subpages|Capitalized)$/', $method, $m ) ) {
+ if ( preg_match( '/^assert(Has|Is|Can)(Not|)(Subject|Talk|Watchable|Content|Subpages|Capitalized)$/', $method, $m ) ) {
# Interprets arguments:
- $ns = $args[0];
- $msg = isset($args[1]) ? $args[1] : " dummy message";
+ $ns = $args[0];
+ $msg = isset( $args[1] ) ? $args[1] : " dummy message";
# Forge the namespace constant name:
- if( $ns === 0 ) {
+ if ( $ns === 0 ) {
$ns_name = "NS_MAIN";
} else {
- $ns_name = "NS_" . strtoupper( MWNamespace::getCanonicalName( $ns ) );
+ $ns_name = "NS_" . strtoupper( MWNamespace::getCanonicalName( $ns ) );
}
# ... and the MWNamespace method name
$nsMethod = strtolower( $m[1] ) . $m[3];
- $expect = ($m[2] === '');
+ $expect = ( $m[2] === '' );
$expect_name = $expect ? 'TRUE' : 'FALSE';
return $this->assertEquals( $expect,
@@ -621,8 +564,8 @@ class MWNamespaceTest extends MediaWikiTestCase {
function assertSameSubject( $ns1, $ns2, $msg = '' ) {
$this->assertTrue( MWNamespace::subjectEquals( $ns1, $ns2, $msg ) );
}
+
function assertDifferentSubject( $ns1, $ns2, $msg = '' ) {
$this->assertFalse( MWNamespace::subjectEquals( $ns1, $ns2, $msg ) );
}
}
-