mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Popups
synced 2024-11-13 17:56:55 +00:00
Tests: Unit test getTitle
Real stubs on stubs.js to be removed in followup Bug: T160406 Change-Id: I0b56e70f3ff95fc5c0f6f6dc4cf0a6625f1e5fe4
This commit is contained in:
parent
1da916ee73
commit
f2039605d5
101
tests/node-qunit/getTitle.test.js
Normal file
101
tests/node-qunit/getTitle.test.js
Normal file
|
@ -0,0 +1,101 @@
|
|||
var getTitle = require( '../../src/getTitle' );
|
||||
|
||||
/* global Map */
|
||||
|
||||
QUnit.module( 'getTitle', {
|
||||
beforeEach: function() {
|
||||
this.config = new Map();
|
||||
this.config.set( 'wgArticlePath', '/wiki/$1' );
|
||||
|
||||
this.location = global.location = { hostname: 'en.wikipedia.org' };
|
||||
|
||||
window.mediaWiki.RegExp = {
|
||||
escape: this.sandbox.spy( function( str ) {
|
||||
return str.replace( /([\\{}()|.?*+\-\^$\[\]])/g, '\\$1' );
|
||||
} )
|
||||
};
|
||||
|
||||
window.mediaWiki.Uri = this.sandbox.stub().throws( 'UNIMPLEMENTED' );
|
||||
},
|
||||
afterEach: function() {
|
||||
global.location = null;
|
||||
window.mediaWiki.RegExp = null;
|
||||
window.mediaWiki.Uri = null;
|
||||
}
|
||||
} );
|
||||
|
||||
QUnit.test( 'it should return the title of a url with a title query param', function ( assert ) {
|
||||
var href = '/w/index.php?title=Foo';
|
||||
window.mediaWiki.Uri.withArgs( href ).returns( {
|
||||
host: this.location.hostname,
|
||||
query: {
|
||||
title: 'Foo'
|
||||
}
|
||||
} );
|
||||
|
||||
assert.equal( getTitle( href, this.config ), 'Foo' );
|
||||
} );
|
||||
|
||||
QUnit.test( 'it should return the title of a pretty url if it conforms wgArticlePath', function ( assert ) {
|
||||
var href = '/wiki/Foo';
|
||||
window.mediaWiki.Uri.withArgs( href ).returns( {
|
||||
host: this.location.hostname,
|
||||
path: href,
|
||||
query: {}
|
||||
} );
|
||||
|
||||
assert.equal( getTitle( href, this.config ), 'Foo' );
|
||||
} );
|
||||
|
||||
QUnit.test( 'it should return the title of a pretty url properly decoded', function ( assert ) {
|
||||
var href = '/wiki/%E6%B8%AC%E8%A9%A6';
|
||||
window.mediaWiki.Uri.withArgs( href ).returns( {
|
||||
host: this.location.hostname,
|
||||
path: href,
|
||||
query: {}
|
||||
} );
|
||||
|
||||
assert.equal( getTitle( href, this.config ), '測試' );
|
||||
} );
|
||||
|
||||
QUnit.test( 'it should skip urls that mw.Uri cannot parse', function ( assert ) {
|
||||
var href = 'javascript:void(0);'; // eslint-disable-line no-script-url
|
||||
window.mediaWiki.Uri.withArgs( href ).throws(
|
||||
new Error( 'Cannot parse' )
|
||||
);
|
||||
|
||||
assert.equal( getTitle( href, this.config ), undefined );
|
||||
} );
|
||||
|
||||
QUnit.test( 'it should skip urls that are external', function ( assert ) {
|
||||
var href = 'https://www.youtube.com/watch?v=dQw4w9WgXcQ';
|
||||
window.mediaWiki.Uri.withArgs( href ).returns( {
|
||||
host: 'www.youtube.com',
|
||||
path: '/watch',
|
||||
query: { v: 'dQw4w9WgXcQ' }
|
||||
} );
|
||||
|
||||
assert.equal( getTitle( href, this.config ), undefined );
|
||||
} );
|
||||
|
||||
QUnit.test( 'it should skip urls not on article path without one title query param', function ( assert ) {
|
||||
// No params
|
||||
var href = '/Foo';
|
||||
window.mediaWiki.Uri.withArgs( href ).returns( {
|
||||
host: this.location.hostname,
|
||||
path: '/Foo',
|
||||
query: {}
|
||||
} );
|
||||
|
||||
assert.equal( getTitle( href, this.config ), undefined );
|
||||
|
||||
// Multiple query params
|
||||
href = '/Foo?a=1&title=Foo';
|
||||
window.mediaWiki.Uri.withArgs( href ).returns( {
|
||||
host: this.location.hostname,
|
||||
path: '/Foo',
|
||||
query: { a: 1, title: 'Foo' }
|
||||
} );
|
||||
|
||||
assert.equal( getTitle( href, this.config ), undefined );
|
||||
} );
|
Loading…
Reference in a new issue