Increasing coverage of mw.Title with unit tests.
authorKrinkle <krinkle@users.mediawiki.org>
Sat, 30 Jul 2011 08:08:24 +0000 (08:08 +0000)
committerKrinkle <krinkle@users.mediawiki.org>
Sat, 30 Jul 2011 08:08:24 +0000 (08:08 +0000)
* QUnit Completeness Test – Before:
Title.prototype.getNamespaceId
Title.prototype.getPrefixedText
Title.prototype.getExtension
Title.prototype.setNameAndExtension
Title.prototype.getUrl
Title.prototype.exists

* QUnit Completeness Test – After:
Title.prototype.getNamespaceId
Title.prototype.getPrefixedText
Title.prototype.getExtension

tests/qunit/suites/resources/mediawiki/mediawiki.Title.js

index 33a1eb1..b873e7f 100644 (file)
@@ -134,3 +134,63 @@ test( 'Namespace detection and conversion', function() {
                title.setNamespace( 'Entirely Unknown' );
        });
 });
+
+test( 'Case-sensivity', function() {
+       expect(3);
+       _titleConfig();
+
+       var title;
+
+       // Default config
+       mw.config.set( 'wgCaseSensitiveNamespaces', [] );
+
+       title = new mw.Title( 'article' );
+       equal( title.toString(), 'Article', 'Default config: No sensitive namespaces by default. First-letter becomes uppercase' );
+
+       // $wgCapitalLinks = false;
+       mw.config.set( 'wgCaseSensitiveNamespaces', [0, -2, 1, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15] );
+
+       title = new mw.Title( 'article' );
+       equal( title.toString(), 'article', '$wgCapitalLinks=false: Article namespace is sensitive, first-letter case stays lowercase' );
+
+       title = new mw.Title( 'john', 2 );
+       equal( title.toString(), 'User:John', '$wgCapitalLinks=false: User namespace is insensitive, first-letter becomes uppercase' );
+});
+
+test( 'Exists', function() {
+       expect(3);
+       _titleConfig();
+
+       var title;
+
+       // Empty registry, checks default to null
+
+       title = new mw.Title( 'Some random page', 4 );
+       strictEqual( title.exists(), null, 'Return null with empty existance registry' );
+
+       // Basic registry, checks default to boolean
+       mw.Title.exist.set( ['Does_exist', 'User_talk:NeilK', 'Wikipedia:Sandbox_rules'], true );
+       mw.Title.exist.set( ['Does_not_exist', 'User:John', 'Foobar'], false );
+
+       title = new mw.Title( 'Project:Sandbox rules' );
+       assertTrue( title.exists(), 'Return true for page titles marked as existing' );
+       title = new mw.Title( 'Foobar' );
+       assertFalse( title.exists(), 'Return false for page titles marked as inexisting' );
+
+});
+
+test( 'Url', function() {
+       expect(2);
+       _titleConfig();
+
+       var title;
+
+       // Config
+       mw.config.set( 'wgArticlePath', '/wiki/$1' );
+
+       title = new mw.Title( 'Foobar' );
+       equal( title.getUrl(), '/wiki/Foobar', 'Basic functionally, toString passing to wikiGetlink' );
+
+       title = new mw.Title( 'John Doe', 3 );
+       equal( title.getUrl(), '/wiki/User_talk:John_Doe', 'Escaping in title and namespace for urls' );
+});
\ No newline at end of file