summaryrefslogtreecommitdiff
path: root/tests/qunit/suites/resources/jquery
diff options
context:
space:
mode:
authorPierre Schmitz <pierre@archlinux.de>2015-12-17 09:15:42 +0100
committerPierre Schmitz <pierre@archlinux.de>2015-12-17 09:44:51 +0100
commita1789ddde42033f1b05cc4929491214ee6e79383 (patch)
tree63615735c4ddffaaabf2428946bb26f90899f7bf /tests/qunit/suites/resources/jquery
parent9e06a62f265e3a2aaabecc598d4bc617e06fa32d (diff)
Update to MediaWiki 1.26.0
Diffstat (limited to 'tests/qunit/suites/resources/jquery')
-rw-r--r--tests/qunit/suites/resources/jquery/jquery.accessKeyLabel.test.js40
-rw-r--r--tests/qunit/suites/resources/jquery/jquery.autoEllipsis.test.js4
-rw-r--r--tests/qunit/suites/resources/jquery/jquery.color.test.js2
-rw-r--r--tests/qunit/suites/resources/jquery/jquery.colorUtil.test.js36
-rw-r--r--tests/qunit/suites/resources/jquery/jquery.hidpi.test.js16
-rw-r--r--tests/qunit/suites/resources/jquery/jquery.localize.test.js14
-rw-r--r--tests/qunit/suites/resources/jquery/jquery.makeCollapsible.test.js18
-rw-r--r--tests/qunit/suites/resources/jquery/jquery.mwExtension.test.js15
-rw-r--r--tests/qunit/suites/resources/jquery/jquery.placeholder.test.js172
-rw-r--r--tests/qunit/suites/resources/jquery/jquery.tablesorter.parsers.test.js220
-rw-r--r--tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js413
-rw-r--r--tests/qunit/suites/resources/jquery/jquery.textSelection.test.js33
12 files changed, 537 insertions, 446 deletions
diff --git a/tests/qunit/suites/resources/jquery/jquery.accessKeyLabel.test.js b/tests/qunit/suites/resources/jquery/jquery.accessKeyLabel.test.js
index 4484467d..cf34fc11 100644
--- a/tests/qunit/suites/resources/jquery/jquery.accessKeyLabel.test.js
+++ b/tests/qunit/suites/resources/jquery/jquery.accessKeyLabel.test.js
@@ -1,7 +1,7 @@
( function ( $ ) {
QUnit.module( 'jquery.accessKeyLabel', QUnit.newMwEnvironment( {
messages: {
- 'brackets': '[$1]',
+ brackets: '[$1]',
'word-separator': ' '
}
} ) );
@@ -9,23 +9,23 @@
var getAccessKeyPrefixTestData = [
// ua string, platform string, expected prefix
// Internet Explorer
- ['Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)', 'Win32', 'alt-'],
- ['Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)', 'Win32', 'alt-'],
- ['Mozilla/5.0 (Windows NT 6.3; Win64; x64; Trident/7.0; rv:11.0) like Gecko', 'Win64', 'alt-'],
+ [ 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)', 'Win32', 'alt-' ],
+ [ 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)', 'Win32', 'alt-' ],
+ [ 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; Trident/7.0; rv:11.0) like Gecko', 'Win64', 'alt-' ],
// Firefox
- ['Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.19) Gecko/20110420 Firefox/3.5.19', 'MacIntel', 'ctrl-'],
- ['Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110422 Ubuntu/10.10 (maverick) Firefox/3.6.17', 'Linux i686', 'alt-shift-'],
- ['Mozilla/5.0 (Windows NT 6.0; rv:2.0.1) Gecko/20100101 Firefox/4.0.1', 'Win32', 'alt-shift-'],
+ [ 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.19) Gecko/20110420 Firefox/3.5.19', 'MacIntel', 'ctrl-' ],
+ [ 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110422 Ubuntu/10.10 (maverick) Firefox/3.6.17', 'Linux i686', 'alt-shift-' ],
+ [ 'Mozilla/5.0 (Windows NT 6.0; rv:2.0.1) Gecko/20100101 Firefox/4.0.1', 'Win32', 'alt-shift-' ],
// Safari / Konqueror
- ['Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; nl-nl) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7', 'MacIntel', 'ctrl-alt-'],
- ['Mozilla/5.0 (Windows; U; Windows NT 6.0; cs-CZ) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7', 'Win32', 'alt-'],
- ['Mozilla/5.0 (X11; Linux i686) KHTML/4.9.1 (like Gecko) Konqueror/4.9', 'Linux i686', 'ctrl-'],
+ [ 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; nl-nl) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7', 'MacIntel', 'ctrl-alt-' ],
+ [ 'Mozilla/5.0 (Windows; U; Windows NT 6.0; cs-CZ) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7', 'Win32', 'alt-' ],
+ [ 'Mozilla/5.0 (X11; Linux i686) KHTML/4.9.1 (like Gecko) Konqueror/4.9', 'Linux i686', 'ctrl-' ],
// Opera
- ['Opera/9.80 (Windows NT 5.1)', 'Win32', 'shift-esc-'],
- ['Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.52 Safari/537.36 OPR/15.0.1147.130', 'Win32', 'shift-esc-'],
+ [ 'Opera/9.80 (Windows NT 5.1)', 'Win32', 'shift-esc-' ],
+ [ 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.52 Safari/537.36 OPR/15.0.1147.130', 'Win32', 'shift-esc-' ],
// Chrome
- ['Mozilla/5.0 (Macintosh; Intel Mac OS X 10_5_8) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112 Safari/534.30', 'MacIntel', 'ctrl-option-'],
- ['Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.68 Safari/534.30', 'Linux i686', 'alt-shift-']
+ [ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_5_8) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112 Safari/534.30', 'MacIntel', 'ctrl-option-' ],
+ [ 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.68 Safari/534.30', 'Linux i686', 'alt-shift-' ]
],
// strings appended to title to make sure updateTooltipAccessKeys handles them correctly
updateTooltipAccessKeysTestData = [ '', ' [a]', ' [test-a]', ' [alt-b]' ];
@@ -39,9 +39,9 @@
var i;
for ( i = 0; i < getAccessKeyPrefixTestData.length; i++ ) {
assert.equal( $.fn.updateTooltipAccessKeys.getAccessKeyPrefix( {
- userAgent: getAccessKeyPrefixTestData[i][0],
- platform: getAccessKeyPrefixTestData[i][1]
- } ), getAccessKeyPrefixTestData[i][2], 'Correct prefix for ' + getAccessKeyPrefixTestData[i][0] );
+ userAgent: getAccessKeyPrefixTestData[ i ][ 0 ],
+ platform: getAccessKeyPrefixTestData[ i ][ 1 ]
+ } ), getAccessKeyPrefixTestData[ i ][ 2 ], 'Correct prefix for ' + getAccessKeyPrefixTestData[ i ][ 0 ] );
}
} );
@@ -52,13 +52,13 @@
// (no browser is known using such a short prefix, though) or "Alt+Umschalt+" in German Firefox.
result = /^Title \[(.+)[aA]\]$/.exec( title );
assert.ok( result, 'title should match expected structure.' );
- assert.notEqual( result[1], 'test-', 'Prefix used for testing shouldn\'t be used in production.' );
+ assert.notEqual( result[ 1 ], 'test-', 'Prefix used for testing shouldn\'t be used in production.' );
} );
QUnit.test( 'updateTooltipAccessKeys - no access key', updateTooltipAccessKeysTestData.length, function ( assert ) {
var i, oldTitle, $input, newTitle;
for ( i = 0; i < updateTooltipAccessKeysTestData.length; i++ ) {
- oldTitle = 'Title' + updateTooltipAccessKeysTestData[i];
+ oldTitle = 'Title' + updateTooltipAccessKeysTestData[ i ];
$input = $( makeInput( oldTitle ) );
$( '#qunit-fixture' ).append( $input );
newTitle = $input.updateTooltipAccessKeys().prop( 'title' );
@@ -70,7 +70,7 @@
$.fn.updateTooltipAccessKeys.setTestMode( true );
var i, oldTitle, $input, newTitle;
for ( i = 0; i < updateTooltipAccessKeysTestData.length; i++ ) {
- oldTitle = 'Title' + updateTooltipAccessKeysTestData[i];
+ oldTitle = 'Title' + updateTooltipAccessKeysTestData[ i ];
$input = $( makeInput( oldTitle, 'a' ) );
$( '#qunit-fixture' ).append( $input );
newTitle = $input.updateTooltipAccessKeys().prop( 'title' );
diff --git a/tests/qunit/suites/resources/jquery/jquery.autoEllipsis.test.js b/tests/qunit/suites/resources/jquery/jquery.autoEllipsis.test.js
index e8c51214..a1b2e5c3 100644
--- a/tests/qunit/suites/resources/jquery/jquery.autoEllipsis.test.js
+++ b/tests/qunit/suites/resources/jquery/jquery.autoEllipsis.test.js
@@ -11,7 +11,7 @@
function findDivergenceIndex( a, b ) {
var i = 0;
- while ( i < a.length && i < b.length && a[i] === b[i] ) {
+ while ( i < a.length && i < b.length && a[ i ] === b[ i ] ) {
i++;
}
return i;
@@ -41,7 +41,7 @@
// Add two characters using scary black magic
spanText = $span.text();
d = findDivergenceIndex( origText, spanText );
- spanTextNew = spanText.slice( 0, d ) + origText[d] + origText[d] + '...';
+ spanTextNew = spanText.slice( 0, d ) + origText[ d ] + origText[ d ] + '...';
assert.gt( spanTextNew.length, spanText.length, 'Verify that the new span-length is indeed greater' );
diff --git a/tests/qunit/suites/resources/jquery/jquery.color.test.js b/tests/qunit/suites/resources/jquery/jquery.color.test.js
index c8e8ac70..9afd793e 100644
--- a/tests/qunit/suites/resources/jquery/jquery.color.test.js
+++ b/tests/qunit/suites/resources/jquery/jquery.color.test.js
@@ -10,7 +10,7 @@
$canvas.animate( { backgroundColor: '#000' }, 10 ).promise().then( function () {
var endColors = $.colorUtil.getRGB( $canvas.css( 'background-color' ) );
- assert.deepEqual( endColors, [0, 0, 0], 'end state' );
+ assert.deepEqual( endColors, [ 0, 0, 0 ], 'end state' );
} );
this.clock.tick( 20 );
diff --git a/tests/qunit/suites/resources/jquery/jquery.colorUtil.test.js b/tests/qunit/suites/resources/jquery/jquery.colorUtil.test.js
index 39ae363c..00de895d 100644
--- a/tests/qunit/suites/resources/jquery/jquery.colorUtil.test.js
+++ b/tests/qunit/suites/resources/jquery/jquery.colorUtil.test.js
@@ -4,25 +4,25 @@
QUnit.test( 'getRGB', 18, function ( assert ) {
assert.strictEqual( $.colorUtil.getRGB(), undefined, 'No arguments' );
assert.strictEqual( $.colorUtil.getRGB( '' ), undefined, 'Empty string' );
- assert.deepEqual( $.colorUtil.getRGB( [0, 100, 255] ), [0, 100, 255], 'Parse array of rgb values' );
- assert.deepEqual( $.colorUtil.getRGB( 'rgb(0,100,255)' ), [0, 100, 255], 'Parse simple rgb string' );
- assert.deepEqual( $.colorUtil.getRGB( 'rgb(0, 100, 255)' ), [0, 100, 255], 'Parse simple rgb string with spaces' );
- assert.deepEqual( $.colorUtil.getRGB( 'rgb(0%,20%,40%)' ), [0, 51, 102], 'Parse rgb string with percentages' );
- assert.deepEqual( $.colorUtil.getRGB( 'rgb(0%, 20%, 40%)' ), [0, 51, 102], 'Parse rgb string with percentages and spaces' );
- assert.deepEqual( $.colorUtil.getRGB( '#f2ddee' ), [242, 221, 238], 'Hex string: 6 char lowercase' );
- assert.deepEqual( $.colorUtil.getRGB( '#f2DDEE' ), [242, 221, 238], 'Hex string: 6 char uppercase' );
- assert.deepEqual( $.colorUtil.getRGB( '#f2DdEe' ), [242, 221, 238], 'Hex string: 6 char mixed' );
- assert.deepEqual( $.colorUtil.getRGB( '#eee' ), [238, 238, 238], 'Hex string: 3 char lowercase' );
- assert.deepEqual( $.colorUtil.getRGB( '#EEE' ), [238, 238, 238], 'Hex string: 3 char uppercase' );
- assert.deepEqual( $.colorUtil.getRGB( '#eEe' ), [238, 238, 238], 'Hex string: 3 char mixed' );
- assert.deepEqual( $.colorUtil.getRGB( 'rgba(0, 0, 0, 0)' ), [255, 255, 255], 'Zero rgba for Safari 3; Transparent (whitespace)' );
+ assert.deepEqual( $.colorUtil.getRGB( [ 0, 100, 255 ] ), [ 0, 100, 255 ], 'Parse array of rgb values' );
+ assert.deepEqual( $.colorUtil.getRGB( 'rgb(0,100,255)' ), [ 0, 100, 255 ], 'Parse simple rgb string' );
+ assert.deepEqual( $.colorUtil.getRGB( 'rgb(0, 100, 255)' ), [ 0, 100, 255 ], 'Parse simple rgb string with spaces' );
+ assert.deepEqual( $.colorUtil.getRGB( 'rgb(0%,20%,40%)' ), [ 0, 51, 102 ], 'Parse rgb string with percentages' );
+ assert.deepEqual( $.colorUtil.getRGB( 'rgb(0%, 20%, 40%)' ), [ 0, 51, 102 ], 'Parse rgb string with percentages and spaces' );
+ assert.deepEqual( $.colorUtil.getRGB( '#f2ddee' ), [ 242, 221, 238 ], 'Hex string: 6 char lowercase' );
+ assert.deepEqual( $.colorUtil.getRGB( '#f2DDEE' ), [ 242, 221, 238 ], 'Hex string: 6 char uppercase' );
+ assert.deepEqual( $.colorUtil.getRGB( '#f2DdEe' ), [ 242, 221, 238 ], 'Hex string: 6 char mixed' );
+ assert.deepEqual( $.colorUtil.getRGB( '#eee' ), [ 238, 238, 238 ], 'Hex string: 3 char lowercase' );
+ assert.deepEqual( $.colorUtil.getRGB( '#EEE' ), [ 238, 238, 238 ], 'Hex string: 3 char uppercase' );
+ assert.deepEqual( $.colorUtil.getRGB( '#eEe' ), [ 238, 238, 238 ], 'Hex string: 3 char mixed' );
+ assert.deepEqual( $.colorUtil.getRGB( 'rgba(0, 0, 0, 0)' ), [ 255, 255, 255 ], 'Zero rgba for Safari 3; Transparent (whitespace)' );
// Perhaps this is a bug in colorUtil, but it is the current behavior so, let's keep
// track of it, so we will know in case it would ever change.
assert.strictEqual( $.colorUtil.getRGB( 'rgba(0,0,0,0)' ), undefined, 'Zero rgba without whitespace' );
- assert.deepEqual( $.colorUtil.getRGB( 'lightGreen' ), [144, 238, 144], 'Color names (lightGreen)' );
- assert.deepEqual( $.colorUtil.getRGB( 'transparent' ), [255, 255, 255], 'Color names (transparent)' );
+ assert.deepEqual( $.colorUtil.getRGB( 'lightGreen' ), [ 144, 238, 144 ], 'Color names (lightGreen)' );
+ assert.deepEqual( $.colorUtil.getRGB( 'transparent' ), [ 255, 255, 255 ], 'Color names (transparent)' );
assert.strictEqual( $.colorUtil.getRGB( 'mediaWiki' ), undefined, 'Inexisting color name' );
} );
@@ -37,9 +37,9 @@
// Re-create the rgbToHsl return array items, limited to two decimals.
hsl = $.colorUtil.rgbToHsl( 144, 238, 144 );
- ret = [ dualDecimals( hsl[0] ), dualDecimals( hsl[1] ), dualDecimals( hsl[2] ) ];
+ ret = [ dualDecimals( hsl[ 0 ] ), dualDecimals( hsl[ 1 ] ), dualDecimals( hsl[ 2 ] ) ];
- assert.deepEqual( ret, [0.33, 0.73, 0.75], 'rgb(144, 238, 144): hsl(0.33, 0.73, 0.75)' );
+ assert.deepEqual( ret, [ 0.33, 0.73, 0.75 ], 'rgb(144, 238, 144): hsl(0.33, 0.73, 0.75)' );
} );
QUnit.test( 'hslToRgb', 1, function ( assert ) {
@@ -47,9 +47,9 @@
rgb = $.colorUtil.hslToRgb( 0.3, 0.7, 0.8 );
// Re-create the hslToRgb return array items, rounded to whole numbers.
- ret = [ Math.round( rgb[0] ), Math.round( rgb[1] ), Math.round( rgb[2] ) ];
+ ret = [ Math.round( rgb[ 0 ] ), Math.round( rgb[ 1 ] ), Math.round( rgb[ 2 ] ) ];
- assert.deepEqual( ret, [183, 240, 168], 'hsl(0.3, 0.7, 0.8): rgb(183, 240, 168)' );
+ assert.deepEqual( ret, [ 183, 240, 168 ], 'hsl(0.3, 0.7, 0.8): rgb(183, 240, 168)' );
} );
QUnit.test( 'getColorBrightness', 2, function ( assert ) {
diff --git a/tests/qunit/suites/resources/jquery/jquery.hidpi.test.js b/tests/qunit/suites/resources/jquery/jquery.hidpi.test.js
index 906369ee..8c628765 100644
--- a/tests/qunit/suites/resources/jquery/jquery.hidpi.test.js
+++ b/tests/qunit/suites/resources/jquery/jquery.hidpi.test.js
@@ -6,6 +6,22 @@
assert.equal( typeof devicePixelRatio, 'number', '$.devicePixelRatio() returns a number' );
} );
+ QUnit.test( 'bracketedDevicePixelRatio', 1, function ( assert ) {
+ var devicePixelRatio = $.devicePixelRatio();
+ assert.equal( typeof devicePixelRatio, 'number', '$.bracketedDevicePixelRatio() returns a number' );
+ } );
+
+ QUnit.test( 'bracketDevicePixelRatio', 8, function ( assert ) {
+ assert.equal( $.bracketDevicePixelRatio( 0.75 ), 1, '0.75 gives 1' );
+ assert.equal( $.bracketDevicePixelRatio( 1 ), 1, '1 gives 1' );
+ assert.equal( $.bracketDevicePixelRatio( 1.25 ), 1.5, '1.25 gives 1.5' );
+ assert.equal( $.bracketDevicePixelRatio( 1.5 ), 1.5, '1.5 gives 1.5' );
+ assert.equal( $.bracketDevicePixelRatio( 1.75 ), 2, '1.75 gives 2' );
+ assert.equal( $.bracketDevicePixelRatio( 2 ), 2, '2 gives 2' );
+ assert.equal( $.bracketDevicePixelRatio( 2.5 ), 2, '2.5 gives 2' );
+ assert.equal( $.bracketDevicePixelRatio( 3 ), 2, '3 gives 2' );
+ } );
+
QUnit.test( 'matchSrcSet', 6, function ( assert ) {
var srcset = 'onefive.png 1.5x, two.png 2x';
diff --git a/tests/qunit/suites/resources/jquery/jquery.localize.test.js b/tests/qunit/suites/resources/jquery/jquery.localize.test.js
index 3ef27903..c503fc99 100644
--- a/tests/qunit/suites/resources/jquery/jquery.localize.test.js
+++ b/tests/qunit/suites/resources/jquery/jquery.localize.test.js
@@ -76,8 +76,8 @@
html = '<div><span title-msg="title"><html:msg key="label" /></span></div>';
$lc = $( html ).localize( {
keys: {
- 'title': 'foo-' + x + '-title',
- 'label': 'foo-' + x + '-label'
+ title: 'foo-' + x + '-title',
+ label: 'foo-' + x + '-label'
}
} ).find( 'span' );
@@ -88,7 +88,7 @@
html = '<div><span><html:msg key="foo-welcome" /></span></div>';
$lc = $( html ).localize( {
params: {
- 'foo-welcome': [sitename, 'yesterday']
+ 'foo-welcome': [ sitename, 'yesterday' ]
}
} ).find( 'span' );
@@ -100,12 +100,12 @@
$lc = $( html ).localize( {
prefix: 'foo-',
keys: {
- 'title': x + '-title',
- 'label': x + '-label'
+ title: x + '-title',
+ label: x + '-label'
},
params: {
- 'title': [sitename, '3 minutes ago'],
- 'label': [sitename, '3 minutes ago']
+ title: [ sitename, '3 minutes ago' ],
+ label: [ sitename, '3 minutes ago' ]
}
} ).find( 'span' );
diff --git a/tests/qunit/suites/resources/jquery/jquery.makeCollapsible.test.js b/tests/qunit/suites/resources/jquery/jquery.makeCollapsible.test.js
index 80405819..c51e4093 100644
--- a/tests/qunit/suites/resources/jquery/jquery.makeCollapsible.test.js
+++ b/tests/qunit/suites/resources/jquery/jquery.makeCollapsible.test.js
@@ -336,4 +336,22 @@
this.clock.tick( 500 );
} );
+ QUnit.test( 'cloned collapsibles can be made collapsible again', 2, function ( assert ) {
+ var test = this,
+ $collapsible = prepareCollapsible(
+ '<div class="mw-collapsible">' + loremIpsum + '</div>'
+ ),
+ $clone = $collapsible.clone() // clone without data and events
+ .appendTo( '#qunit-fixture' ).makeCollapsible(),
+ $content = $clone.find( '.mw-collapsible-content' );
+
+ assert.assertTrue( $content.is( ':visible' ), 'content is visible' );
+
+ $clone.on( 'afterCollapse.mw-collapsible', function () {
+ assert.assertTrue( $content.is( ':hidden' ), 'after collapsing: content is hidden' );
+ } );
+
+ $clone.find( '.mw-collapsible-toggle a' ).trigger( 'click' );
+ test.clock.tick( 500 );
+ } );
}( mediaWiki, jQuery ) );
diff --git a/tests/qunit/suites/resources/jquery/jquery.mwExtension.test.js b/tests/qunit/suites/resources/jquery/jquery.mwExtension.test.js
index 795c2bbb..029edd55 100644
--- a/tests/qunit/suites/resources/jquery/jquery.mwExtension.test.js
+++ b/tests/qunit/suites/resources/jquery/jquery.mwExtension.test.js
@@ -1,5 +1,14 @@
( function ( $ ) {
- QUnit.module( 'jquery.mwExtension', QUnit.newMwEnvironment() );
+ QUnit.module( 'jquery.mwExtension', QUnit.newMwEnvironment( {
+ // This entire module is deprecated.
+ // Surpress deprecation warnings in test output.
+ setup: function () {
+ this.suppressWarnings();
+ },
+ teardown: function () {
+ this.restoreWarnings();
+ }
+ } ) );
QUnit.test( 'String functions', 7, function ( assert ) {
assert.equal( $.trimLeft( ' foo bar ' ), 'foo bar ', 'trimLeft' );
@@ -43,9 +52,9 @@
} );
QUnit.test( 'Comparison functions', 5, function ( assert ) {
- assert.ok( $.compareArray( [0, 'a', [], [2, 'b'] ], [0, 'a', [], [2, 'b'] ] ),
+ assert.ok( $.compareArray( [ 0, 'a', [], [ 2, 'b' ] ], [ 0, 'a', [], [ 2, 'b' ] ] ),
'compareArray: Two deep arrays that are excactly the same' );
- assert.ok( !$.compareArray( [1], [2] ), 'compareArray: Two different arrays (false)' );
+ assert.ok( !$.compareArray( [ 1 ], [ 2 ] ), 'compareArray: Two different arrays (false)' );
assert.ok( $.compareObject( {}, {} ), 'compareObject: Two empty objects' );
assert.ok( $.compareObject( { foo: 1 }, { foo: 1 } ), 'compareObject: Two the same objects' );
diff --git a/tests/qunit/suites/resources/jquery/jquery.placeholder.test.js b/tests/qunit/suites/resources/jquery/jquery.placeholder.test.js
index 78c185f1..5d0ddebb 100644
--- a/tests/qunit/suites/resources/jquery/jquery.placeholder.test.js
+++ b/tests/qunit/suites/resources/jquery/jquery.placeholder.test.js
@@ -1,13 +1,13 @@
-( function ($) {
+( function ( $ ) {
- QUnit.module('jquery.placeholder', QUnit.newMwEnvironment());
+ QUnit.module( 'jquery.placeholder', QUnit.newMwEnvironment() );
- QUnit.test('caches results of feature tests', 2, function (assert) {
- assert.strictEqual( typeof $.fn.placeholder.input, 'boolean', '$.fn.placeholder.input');
- assert.strictEqual( typeof $.fn.placeholder.textarea, 'boolean', '$.fn.placeholder.textarea');
- });
+ QUnit.test( 'caches results of feature tests', 2, function ( assert ) {
+ assert.strictEqual( typeof $.fn.placeholder.input, 'boolean', '$.fn.placeholder.input' );
+ assert.strictEqual( typeof $.fn.placeholder.textarea, 'boolean', '$.fn.placeholder.textarea' );
+ } );
- if ($.fn.placeholder.input && $.fn.placeholder.textarea) {
+ if ( $.fn.placeholder.input && $.fn.placeholder.textarea ) {
return;
}
@@ -20,126 +20,126 @@
'<input id="input-type-password" type="password" placeholder="e.g. hunter2">' +
'<textarea id="textarea" name="message" placeholder="Your message goes here"></textarea>' +
'</form>',
- testElement = function ($el, assert) {
+ testElement = function ( $el, assert ) {
- var el = $el[0],
- placeholder = el.getAttribute('placeholder');
+ var el = $el[ 0 ],
+ placeholder = el.getAttribute( 'placeholder' );
- assert.strictEqual($el.placeholder(), $el, 'should be chainable');
+ assert.strictEqual( $el.placeholder(), $el, 'should be chainable' );
- assert.strictEqual(el.value, placeholder, 'should set `placeholder` text as `value`');
- assert.strictEqual($el.prop('value'), '', 'propHooks works properly');
- assert.strictEqual($el.val(), '', 'valHooks works properly');
- assert.ok($el.hasClass('placeholder'), 'should have `placeholder` class');
+ assert.strictEqual( el.value, placeholder, 'should set `placeholder` text as `value`' );
+ assert.strictEqual( $el.prop( 'value' ), '', 'propHooks works properly' );
+ assert.strictEqual( $el.val(), '', 'valHooks works properly' );
+ assert.ok( $el.hasClass( 'placeholder' ), 'should have `placeholder` class' );
// test on focus
$el.focus();
- assert.strictEqual(el.value, '', '`value` should be the empty string on focus');
- assert.strictEqual($el.prop('value'), '', 'propHooks works properly');
- assert.strictEqual($el.val(), '', 'valHooks works properly');
- assert.ok(!$el.hasClass('placeholder'), 'should not have `placeholder` class on focus');
+ assert.strictEqual( el.value, '', '`value` should be the empty string on focus' );
+ assert.strictEqual( $el.prop( 'value' ), '', 'propHooks works properly' );
+ assert.strictEqual( $el.val(), '', 'valHooks works properly' );
+ assert.ok( !$el.hasClass( 'placeholder' ), 'should not have `placeholder` class on focus' );
// and unfocus (blur) again
$el.blur();
- assert.strictEqual(el.value, placeholder, 'should set `placeholder` text as `value`');
- assert.strictEqual($el.prop('value'), '', 'propHooks works properly');
- assert.strictEqual($el.val(), '', 'valHooks works properly');
- assert.ok($el.hasClass('placeholder'), 'should have `placeholder` class');
+ assert.strictEqual( el.value, placeholder, 'should set `placeholder` text as `value`' );
+ assert.strictEqual( $el.prop( 'value' ), '', 'propHooks works properly' );
+ assert.strictEqual( $el.val(), '', 'valHooks works properly' );
+ assert.ok( $el.hasClass( 'placeholder' ), 'should have `placeholder` class' );
// change the value
- $el.val('lorem ipsum');
- assert.strictEqual($el.prop('value'), 'lorem ipsum', '`$el.val(string)` should change the `value` property');
- assert.strictEqual(el.value, 'lorem ipsum', '`$el.val(string)` should change the `value` attribute');
- assert.ok(!$el.hasClass('placeholder'), '`$el.val(string)` should remove `placeholder` class');
+ $el.val( 'lorem ipsum' );
+ assert.strictEqual( $el.prop( 'value' ), 'lorem ipsum', '`$el.val(string)` should change the `value` property' );
+ assert.strictEqual( el.value, 'lorem ipsum', '`$el.val(string)` should change the `value` attribute' );
+ assert.ok( !$el.hasClass( 'placeholder' ), '`$el.val(string)` should remove `placeholder` class' );
// and clear it again
- $el.val('');
- assert.strictEqual($el.prop('value'), '', '`$el.val("")` should change the `value` property');
- assert.strictEqual(el.value, placeholder, '`$el.val("")` should change the `value` attribute');
- assert.ok($el.hasClass('placeholder'), '`$el.val("")` should re-enable `placeholder` class');
+ $el.val( '' );
+ assert.strictEqual( $el.prop( 'value' ), '', '`$el.val("")` should change the `value` property' );
+ assert.strictEqual( el.value, placeholder, '`$el.val("")` should change the `value` attribute' );
+ assert.ok( $el.hasClass( 'placeholder' ), '`$el.val("")` should re-enable `placeholder` class' );
// make sure the placeholder property works as expected.
- assert.strictEqual($el.prop('placeholder'), placeholder, '$el.prop(`placeholder`) should return the placeholder value');
- $el.placeholder('new placeholder');
- assert.strictEqual(el.getAttribute('placeholder'), 'new placeholder', '$el.placeholder(<string>) should set the placeholder value');
- assert.strictEqual(el.value, 'new placeholder', '$el.placeholder(<string>) should update the displayed placeholder value');
- $el.placeholder(placeholder);
+ assert.strictEqual( $el.prop( 'placeholder' ), placeholder, '$el.prop(`placeholder`) should return the placeholder value' );
+ $el.placeholder( 'new placeholder' );
+ assert.strictEqual( el.getAttribute( 'placeholder' ), 'new placeholder', '$el.placeholder(<string>) should set the placeholder value' );
+ assert.strictEqual( el.value, 'new placeholder', '$el.placeholder(<string>) should update the displayed placeholder value' );
+ $el.placeholder( placeholder );
};
- QUnit.test('emulates placeholder for <input type=text>', 22, function (assert) {
- $('<div>').html(html).appendTo($('#qunit-fixture'));
- testElement($('#input-type-text'), assert);
- });
+ QUnit.test( 'emulates placeholder for <input type=text>', 22, function ( assert ) {
+ $( '<div>' ).html( html ).appendTo( $( '#qunit-fixture' ) );
+ testElement( $( '#input-type-text' ), assert );
+ } );
- QUnit.test('emulates placeholder for <input type=search>', 22, function (assert) {
- $('<div>').html(html).appendTo($('#qunit-fixture'));
- testElement($('#input-type-search'), assert);
- });
+ QUnit.test( 'emulates placeholder for <input type=search>', 22, function ( assert ) {
+ $( '<div>' ).html( html ).appendTo( $( '#qunit-fixture' ) );
+ testElement( $( '#input-type-search' ), assert );
+ } );
- QUnit.test('emulates placeholder for <input type=email>', 22, function (assert) {
- $('<div>').html(html).appendTo($('#qunit-fixture'));
- testElement($('#input-type-email'), assert);
- });
+ QUnit.test( 'emulates placeholder for <input type=email>', 22, function ( assert ) {
+ $( '<div>' ).html( html ).appendTo( $( '#qunit-fixture' ) );
+ testElement( $( '#input-type-email' ), assert );
+ } );
- QUnit.test('emulates placeholder for <input type=url>', 22, function (assert) {
- $('<div>').html(html).appendTo($('#qunit-fixture'));
- testElement($('#input-type-url'), assert);
- });
+ QUnit.test( 'emulates placeholder for <input type=url>', 22, function ( assert ) {
+ $( '<div>' ).html( html ).appendTo( $( '#qunit-fixture' ) );
+ testElement( $( '#input-type-url' ), assert );
+ } );
- QUnit.test('emulates placeholder for <input type=tel>', 22, function (assert) {
- $('<div>').html(html).appendTo($('#qunit-fixture'));
- testElement($('#input-type-tel'), assert);
- });
+ QUnit.test( 'emulates placeholder for <input type=tel>', 22, function ( assert ) {
+ $( '<div>' ).html( html ).appendTo( $( '#qunit-fixture' ) );
+ testElement( $( '#input-type-tel' ), assert );
+ } );
- QUnit.test('emulates placeholder for <input type=password>', 13, function (assert) {
- $('<div>').html(html).appendTo($('#qunit-fixture'));
+ QUnit.test( 'emulates placeholder for <input type=password>', 13, function ( assert ) {
+ $( '<div>' ).html( html ).appendTo( $( '#qunit-fixture' ) );
var selector = '#input-type-password',
- $el = $(selector),
- el = $el[0],
- placeholder = el.getAttribute('placeholder');
+ $el = $( selector ),
+ el = $el[ 0 ],
+ placeholder = el.getAttribute( 'placeholder' );
- assert.strictEqual($el.placeholder(), $el, 'should be chainable');
+ assert.strictEqual( $el.placeholder(), $el, 'should be chainable' );
// Re-select the element, as it gets replaced by another one in some browsers
- $el = $(selector);
- el = $el[0];
+ $el = $( selector );
+ el = $el[ 0 ];
- assert.strictEqual(el.value, placeholder, 'should set `placeholder` text as `value`');
- assert.strictEqual($el.prop('value'), '', 'propHooks works properly');
- assert.strictEqual($el.val(), '', 'valHooks works properly');
- assert.ok($el.hasClass('placeholder'), 'should have `placeholder` class');
+ assert.strictEqual( el.value, placeholder, 'should set `placeholder` text as `value`' );
+ assert.strictEqual( $el.prop( 'value' ), '', 'propHooks works properly' );
+ assert.strictEqual( $el.val(), '', 'valHooks works properly' );
+ assert.ok( $el.hasClass( 'placeholder' ), 'should have `placeholder` class' );
// test on focus
$el.focus();
// Re-select the element, as it gets replaced by another one in some browsers
- $el = $(selector);
- el = $el[0];
+ $el = $( selector );
+ el = $el[ 0 ];
- assert.strictEqual(el.value, '', '`value` should be the empty string on focus');
- assert.strictEqual($el.prop('value'), '', 'propHooks works properly');
- assert.strictEqual($el.val(), '', 'valHooks works properly');
- assert.ok(!$el.hasClass('placeholder'), 'should not have `placeholder` class on focus');
+ assert.strictEqual( el.value, '', '`value` should be the empty string on focus' );
+ assert.strictEqual( $el.prop( 'value' ), '', 'propHooks works properly' );
+ assert.strictEqual( $el.val(), '', 'valHooks works properly' );
+ assert.ok( !$el.hasClass( 'placeholder' ), 'should not have `placeholder` class on focus' );
// and unfocus (blur) again
$el.blur();
// Re-select the element, as it gets replaced by another one in some browsers
- $el = $(selector);
- el = $el[0];
+ $el = $( selector );
+ el = $el[ 0 ];
- assert.strictEqual(el.value, placeholder, 'should set `placeholder` text as `value`');
- assert.strictEqual($el.prop('value'), '', 'propHooks works properly');
- assert.strictEqual($el.val(), '', 'valHooks works properly');
- assert.ok($el.hasClass('placeholder'), 'should have `placeholder` class');
+ assert.strictEqual( el.value, placeholder, 'should set `placeholder` text as `value`' );
+ assert.strictEqual( $el.prop( 'value' ), '', 'propHooks works properly' );
+ assert.strictEqual( $el.val(), '', 'valHooks works properly' );
+ assert.ok( $el.hasClass( 'placeholder' ), 'should have `placeholder` class' );
- });
+ } );
- QUnit.test('emulates placeholder for <textarea></textarea>', 22, function (assert) {
- $('<div>').html(html).appendTo($('#qunit-fixture'));
- testElement($('#textarea'), assert);
- });
+ QUnit.test( 'emulates placeholder for <textarea></textarea>', 22, function ( assert ) {
+ $( '<div>' ).html( html ).appendTo( $( '#qunit-fixture' ) );
+ testElement( $( '#textarea' ), assert );
+ } );
-}(jQuery));
+}( jQuery ) );
diff --git a/tests/qunit/suites/resources/jquery/jquery.tablesorter.parsers.test.js b/tests/qunit/suites/resources/jquery/jquery.tablesorter.parsers.test.js
index 97a3ae12..032551d8 100644
--- a/tests/qunit/suites/resources/jquery/jquery.tablesorter.parsers.test.js
+++ b/tests/qunit/suites/resources/jquery/jquery.tablesorter.parsers.test.js
@@ -12,32 +12,32 @@
setup: function () {
this.liveMonths = mw.language.months;
mw.language.months = {
- 'keys': {
- 'names': ['january', 'february', 'march', 'april', 'may_long', 'june',
- 'july', 'august', 'september', 'october', 'november', 'december'],
- 'genitive': ['january-gen', 'february-gen', 'march-gen', 'april-gen', 'may-gen', 'june-gen',
- 'july-gen', 'august-gen', 'september-gen', 'october-gen', 'november-gen', 'december-gen'],
- 'abbrev': ['jan', 'feb', 'mar', 'apr', 'may', 'jun',
- 'jul', 'aug', 'sep', 'oct', 'nov', 'dec']
+ keys: {
+ names: [ 'january', 'february', 'march', 'april', 'may_long', 'june',
+ 'july', 'august', 'september', 'october', 'november', 'december' ],
+ genitive: [ 'january-gen', 'february-gen', 'march-gen', 'april-gen', 'may-gen', 'june-gen',
+ 'july-gen', 'august-gen', 'september-gen', 'october-gen', 'november-gen', 'december-gen' ],
+ abbrev: [ 'jan', 'feb', 'mar', 'apr', 'may', 'jun',
+ 'jul', 'aug', 'sep', 'oct', 'nov', 'dec' ]
},
- 'names': ['January', 'February', 'March', 'April', 'May', 'June',
- 'July', 'August', 'September', 'October', 'November', 'December'],
- 'genitive': ['January', 'February', 'March', 'April', 'May', 'June',
- 'July', 'August', 'September', 'October', 'November', 'December'],
- 'abbrev': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
- 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
+ names: [ 'January', 'February', 'March', 'April', 'May', 'June',
+ 'July', 'August', 'September', 'October', 'November', 'December' ],
+ genitive: [ 'January', 'February', 'March', 'April', 'May', 'June',
+ 'July', 'August', 'September', 'October', 'November', 'December' ],
+ abbrev: [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
+ 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ]
};
},
teardown: function () {
mw.language.months = this.liveMonths;
},
config: {
- wgContentLanguage: 'en',
+ wgPageContentLanguage: 'en',
/* default date format of the content language */
wgDefaultDateFormat: 'dmy',
/* These two are important for numeric interpretations */
- wgSeparatorTransformTable: ['', ''],
- wgDigitTransformTable: ['', '']
+ wgSeparatorTransformTable: [ '', '' ],
+ wgDigitTransformTable: [ '', '' ]
}
} ) );
@@ -57,17 +57,17 @@
QUnit.test( msg, data.length * 2, function ( assert ) {
var extractedR, extractedF, parser;
- if (callback !== undefined ) {
+ if ( callback !== undefined ) {
callback();
}
parser = $.tablesorter.getParser( parserId );
$.each( data, function ( index, testcase ) {
- extractedR = parser.is( testcase[0] );
- extractedF = parser.format( testcase[0] );
+ extractedR = parser.is( testcase[ 0 ] );
+ extractedF = parser.format( testcase[ 0 ] );
- assert.strictEqual( extractedR, testcase[1], 'Detect: ' + testcase[3] );
- assert.strictEqual( extractedF, testcase[2], 'Sortkey: ' + testcase[3] );
+ assert.strictEqual( extractedR, testcase[ 1 ], 'Detect: ' + testcase[ 3 ] );
+ assert.strictEqual( extractedF, testcase[ 2 ], 'Sortkey: ' + testcase[ 3 ] );
} );
} );
@@ -82,139 +82,139 @@
ipv4 = [
// Some randomly generated fake IPs
- ['0.0.0.0', true, 0, 'An IP address' ],
- ['255.255.255.255', true, 255255255255, 'An IP address' ],
- ['45.238.27.109', true, 45238027109, 'An IP address' ],
- ['1.238.27.1', true, 1238027001, 'An IP address with small numbers' ],
- ['238.27.1', false, 238027001, 'A malformed IP Address' ],
- ['1', false, 1, 'A super malformed IP Address' ],
- ['Just text', false, 0, 'A line with just text' ],
- ['45.238.27.109Postfix', false, 45238027109, 'An IP address with a connected postfix' ],
- ['45.238.27.109 postfix', false, 45238027109, 'An IP address with a seperated postfix' ]
+ [ '0.0.0.0', true, 0, 'An IP address' ],
+ [ '255.255.255.255', true, 255255255255, 'An IP address' ],
+ [ '45.238.27.109', true, 45238027109, 'An IP address' ],
+ [ '1.238.27.1', true, 1238027001, 'An IP address with small numbers' ],
+ [ '238.27.1', false, 238027001, 'A malformed IP Address' ],
+ [ '1', false, 1, 'A super malformed IP Address' ],
+ [ 'Just text', false, 0, 'A line with just text' ],
+ [ '45.238.27.109Postfix', false, 45238027109, 'An IP address with a connected postfix' ],
+ [ '45.238.27.109 postfix', false, 45238027109, 'An IP address with a seperated postfix' ]
];
parserTest( 'IPv4', 'IPAddress', ipv4 );
simpleMDYDatesInMDY = [
- ['January 17, 2010', true, 20100117, 'Long middle endian date'],
- ['Jan 17, 2010', true, 20100117, 'Short middle endian date'],
- ['1/17/2010', true, 20100117, 'Numeric middle endian date'],
- ['01/17/2010', true, 20100117, 'Numeric middle endian date with padding on month'],
- ['01/07/2010', true, 20100107, 'Numeric middle endian date with padding on day'],
- ['01/07/0010', true, 20100107, 'Numeric middle endian date with padding on year'],
- ['5.12.1990', true, 19900512, 'Numeric middle endian date with . separator']
+ [ 'January 17, 2010', true, 20100117, 'Long middle endian date' ],
+ [ 'Jan 17, 2010', true, 20100117, 'Short middle endian date' ],
+ [ '1/17/2010', true, 20100117, 'Numeric middle endian date' ],
+ [ '01/17/2010', true, 20100117, 'Numeric middle endian date with padding on month' ],
+ [ '01/07/2010', true, 20100107, 'Numeric middle endian date with padding on day' ],
+ [ '01/07/0010', true, 20100107, 'Numeric middle endian date with padding on year' ],
+ [ '5.12.1990', true, 19900512, 'Numeric middle endian date with . separator' ]
];
parserTest( 'MDY Dates using mdy content language', 'date', simpleMDYDatesInMDY );
simpleMDYDatesInDMY = [
- ['January 17, 2010', true, 20100117, 'Long middle endian date'],
- ['Jan 17, 2010', true, 20100117, 'Short middle endian date'],
- ['1/17/2010', true, 20101701, 'Numeric middle endian date'],
- ['01/17/2010', true, 20101701, 'Numeric middle endian date with padding on month'],
- ['01/07/2010', true, 20100701, 'Numeric middle endian date with padding on day'],
- ['01/07/0010', true, 20100701, 'Numeric middle endian date with padding on year'],
- ['5.12.1990', true, 19901205, 'Numeric middle endian date with . separator']
+ [ 'January 17, 2010', true, 20100117, 'Long middle endian date' ],
+ [ 'Jan 17, 2010', true, 20100117, 'Short middle endian date' ],
+ [ '1/17/2010', true, 20101701, 'Numeric middle endian date' ],
+ [ '01/17/2010', true, 20101701, 'Numeric middle endian date with padding on month' ],
+ [ '01/07/2010', true, 20100701, 'Numeric middle endian date with padding on day' ],
+ [ '01/07/0010', true, 20100701, 'Numeric middle endian date with padding on year' ],
+ [ '5.12.1990', true, 19901205, 'Numeric middle endian date with . separator' ]
];
parserTest( 'MDY Dates using dmy content language', 'date', simpleMDYDatesInDMY, function () {
mw.config.set( {
- 'wgDefaultDateFormat': 'dmy',
- 'wgContentLanguage': 'de'
+ wgDefaultDateFormat: 'dmy',
+ wgPageContentLanguage: 'de'
} );
} );
oldMDYDates = [
- ['January 19, 1400 BC', false, '99999999', 'BC'],
- ['January 19, 1400BC', false, '99999999', 'Connected BC'],
- ['January, 19 1400 B.C.', false, '99999999', 'B.C.'],
- ['January 19, 1400 AD', false, '99999999', 'AD'],
- ['January, 19 10', true, 20100119, 'AD'],
- ['January, 19 1', false, '99999999', 'AD']
+ [ 'January 19, 1400 BC', false, '99999999', 'BC' ],
+ [ 'January 19, 1400BC', false, '99999999', 'Connected BC' ],
+ [ 'January, 19 1400 B.C.', false, '99999999', 'B.C.' ],
+ [ 'January 19, 1400 AD', false, '99999999', 'AD' ],
+ [ 'January, 19 10', true, 20100119, 'AD' ],
+ [ 'January, 19 1', false, '99999999', 'AD' ]
];
parserTest( 'Very old MDY dates', 'date', oldMDYDates );
complexMDYDates = [
- ['January, 19 2010', true, 20100119, 'Comma after month'],
- ['January 19, 2010', true, 20100119, 'Comma after day'],
- ['January/19/2010', true, 20100119, 'Forward slash separator'],
- ['04 22 1991', true, 19910422, 'Month with 0 padding'],
- ['April 21 1991', true, 19910421, 'Space separation'],
- ['04 22 1991', true, 19910422, 'Month with 0 padding'],
- ['December 12 \'10', true, 20101212, ''],
- ['Dec 12 \'10', true, 20101212, ''],
- ['Dec. 12 \'10', true, 20101212, '']
+ [ 'January, 19 2010', true, 20100119, 'Comma after month' ],
+ [ 'January 19, 2010', true, 20100119, 'Comma after day' ],
+ [ 'January/19/2010', true, 20100119, 'Forward slash separator' ],
+ [ '04 22 1991', true, 19910422, 'Month with 0 padding' ],
+ [ 'April 21 1991', true, 19910421, 'Space separation' ],
+ [ '04 22 1991', true, 19910422, 'Month with 0 padding' ],
+ [ 'December 12 \'10', true, 20101212, '' ],
+ [ 'Dec 12 \'10', true, 20101212, '' ],
+ [ 'Dec. 12 \'10', true, 20101212, '' ]
];
parserTest( 'MDY Dates', 'date', complexMDYDates );
clobberedDates = [
- ['January, 19 2010 - January, 20 2010', false, '99999999', 'Date range with hyphen'],
- ['January, 19 2010 — January, 20 2010', false, '99999999', 'Date range with mdash'],
- ['prefixJanuary, 19 2010', false, '99999999', 'Connected prefix'],
- ['prefix January, 19 2010', false, '99999999', 'Prefix'],
- ['December 12 2010postfix', false, '99999999', 'ConnectedPostfix'],
- ['December 12 2010 postfix', false, '99999999', 'Postfix'],
- ['A simple text', false, '99999999', 'Plain text in date sort'],
- ['04l22l1991', false, '99999999', 'l char as separator'],
- ['January\\19\\2010', false, '99999999', 'backslash as date separator']
+ [ 'January, 19 2010 - January, 20 2010', false, '99999999', 'Date range with hyphen' ],
+ [ 'January, 19 2010 — January, 20 2010', false, '99999999', 'Date range with mdash' ],
+ [ 'prefixJanuary, 19 2010', false, '99999999', 'Connected prefix' ],
+ [ 'prefix January, 19 2010', false, '99999999', 'Prefix' ],
+ [ 'December 12 2010postfix', false, '99999999', 'ConnectedPostfix' ],
+ [ 'December 12 2010 postfix', false, '99999999', 'Postfix' ],
+ [ 'A simple text', false, '99999999', 'Plain text in date sort' ],
+ [ '04l22l1991', false, '99999999', 'l char as separator' ],
+ [ 'January\\19\\2010', false, '99999999', 'backslash as date separator' ]
];
parserTest( 'Clobbered Dates', 'date', clobberedDates );
MYDates = [
- ['December 2010', false, '99999999', 'Plain month year'],
- ['Dec 2010', false, '99999999', 'Abreviated month year'],
- ['12 2010', false, '99999999', 'Numeric month year']
+ [ 'December 2010', false, '99999999', 'Plain month year' ],
+ [ 'Dec 2010', false, '99999999', 'Abreviated month year' ],
+ [ '12 2010', false, '99999999', 'Numeric month year' ]
];
parserTest( 'MY Dates', 'date', MYDates );
YDates = [
- ['2010', false, '99999999', 'Plain 4-digit year'],
- ['876', false, '99999999', '3-digit year'],
- ['76', false, '99999999', '2-digit year'],
- ['\'76', false, '99999999', '2-digit millenium bug year'],
- ['2010 BC', false, '99999999', '4-digit year BC']
+ [ '2010', false, '99999999', 'Plain 4-digit year' ],
+ [ '876', false, '99999999', '3-digit year' ],
+ [ '76', false, '99999999', '2-digit year' ],
+ [ '\'76', false, '99999999', '2-digit millenium bug year' ],
+ [ '2010 BC', false, '99999999', '4-digit year BC' ]
];
parserTest( 'Y Dates', 'date', YDates );
currencyData = [
- ['1.02 $', true, 1.02, ''],
- ['$ 3.00', true, 3, ''],
- ['€ 2,99', true, 299, ''],
- ['$ 1.00', true, 1, ''],
- ['$3.50', true, 3.50, ''],
- ['$ 1.50', true, 1.50, ''],
- ['€ 0.99', true, 0.99, ''],
- ['$ 299.99', true, 299.99, ''],
- ['$ 2,299.99', true, 2299.99, ''],
- ['$ 2,989', true, 2989, ''],
- ['$ 2 299.99', true, 2299.99, ''],
- ['$ 2 989', true, 2989, ''],
- ['$ 2.989', true, 2.989, '']
+ [ '1.02 $', true, 1.02, '' ],
+ [ '$ 3.00', true, 3, '' ],
+ [ '€ 2,99', true, 299, '' ],
+ [ '$ 1.00', true, 1, '' ],
+ [ '$3.50', true, 3.50, '' ],
+ [ '$ 1.50', true, 1.50, '' ],
+ [ '€ 0.99', true, 0.99, '' ],
+ [ '$ 299.99', true, 299.99, '' ],
+ [ '$ 2,299.99', true, 2299.99, '' ],
+ [ '$ 2,989', true, 2989, '' ],
+ [ '$ 2 299.99', true, 2299.99, '' ],
+ [ '$ 2 989', true, 2989, '' ],
+ [ '$ 2.989', true, 2.989, '' ]
];
parserTest( 'Currency', 'currency', currencyData );
transformedCurrencyData = [
- ['1.02 $', true, 102, ''],
- ['$ 3.00', true, 300, ''],
- ['€ 2,99', true, 2.99, ''],
- ['$ 1.00', true, 100, ''],
- ['$3.50', true, 350, ''],
- ['$ 1.50', true, 150, ''],
- ['€ 0.99', true, 99, ''],
- ['$ 299.99', true, 29999, ''],
- ['$ 2\'299,99', true, 2299.99, ''],
- ['$ 2,989', true, 2.989, ''],
- ['$ 2 299.99', true, 229999, ''],
- ['2 989 $', true, 2989, ''],
- ['299.99 $', true, 29999, ''],
- ['2\'299,99 $', true, 2299.99, ''],
- ['2,989 $', true, 2.989, ''],
- ['2 299.99 $', true, 229999, ''],
- ['2 989 $', true, 2989, '']
+ [ '1.02 $', true, 102, '' ],
+ [ '$ 3.00', true, 300, '' ],
+ [ '€ 2,99', true, 2.99, '' ],
+ [ '$ 1.00', true, 100, '' ],
+ [ '$3.50', true, 350, '' ],
+ [ '$ 1.50', true, 150, '' ],
+ [ '€ 0.99', true, 99, '' ],
+ [ '$ 299.99', true, 29999, '' ],
+ [ '$ 2\'299,99', true, 2299.99, '' ],
+ [ '$ 2,989', true, 2.989, '' ],
+ [ '$ 2 299.99', true, 229999, '' ],
+ [ '2 989 $', true, 2989, '' ],
+ [ '299.99 $', true, 29999, '' ],
+ [ '2\'299,99 $', true, 2299.99, '' ],
+ [ '2,989 $', true, 2.989, '' ],
+ [ '2 299.99 $', true, 229999, '' ],
+ [ '2 989 $', true, 2989, '' ]
];
parserTest( 'Currency with european separators', 'currency', transformedCurrencyData, function () {
mw.config.set( {
// We expect 22'234.444,22
// Map from ascii separators => localized separators
- wgSeparatorTransformTable: [', . ,', '\' , .'],
- wgDigitTransformTable: ['', '']
+ wgSeparatorTransformTable: [ ', . ,', '\' , .' ],
+ wgDigitTransformTable: [ '', '' ]
} );
} );
diff --git a/tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js b/tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js
index f63aa27a..d4d0ce1e 100644
--- a/tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js
+++ b/tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js
@@ -1,5 +1,19 @@
( function ( $, mw ) {
- var header,
+ var header = [ 'Planet', 'Radius (km)' ],
+
+ // Data set "planets"
+ mercury = [ 'Mercury', '2439.7' ],
+ venus = [ 'Venus', '6051.8' ],
+ earth = [ 'Earth', '6371.0' ],
+ mars = [ 'Mars', '3390.0' ],
+ jupiter = [ 'Jupiter', '69911' ],
+ saturn = [ 'Saturn', '58232' ],
+ planets = [ mercury, venus, earth, mars, jupiter, saturn ],
+ planetsAscName = [ earth, jupiter, mars, mercury, saturn, venus ],
+ planetsAscRadius = [ mercury, mars, venus, earth, saturn, jupiter ],
+ planetsRowspan,
+ planetsRowspanII,
+ planetsAscNameLegacy,
// Data set "simple"
a1 = [ 'A', '1' ],
@@ -8,11 +22,12 @@
b1 = [ 'B', '1' ],
b2 = [ 'B', '2' ],
b3 = [ 'B', '3' ],
- simple = [a2, b3, a1, a3, b2, b1],
- simpleAsc = [a1, a2, a3, b1, b2, b3],
- simpleDescasc = [b1, b2, b3, a1, a2, a3],
+ simple = [ a2, b3, a1, a3, b2, b1 ],
+ simpleAsc = [ a1, a2, a3, b1, b2, b3 ],
+ simpleDescasc = [ b1, b2, b3, a1, a2, a3 ],
// Data set "colspan"
+ header4 = [ 'column1a', 'column1b', 'column1c', 'column2' ],
aaa1 = [ 'A', 'A', 'A', '1' ],
aab5 = [ 'A', 'A', 'B', '5' ],
abc3 = [ 'A', 'B', 'C', '3' ],
@@ -20,159 +35,145 @@
caa4 = [ 'C', 'A', 'A', '4' ],
colspanInitial = [ aab5, aaa1, abc3, bbc2, caa4 ],
- // Data set "planets"
- mercury = [ 'Mercury', '2439.7' ],
- venus = [ 'Venus', '6051.8' ],
- earth = [ 'Earth', '6371.0' ],
- mars = [ 'Mars', '3390.0' ],
- jupiter = [ 'Jupiter', '69911' ],
- saturn = [ 'Saturn', '58232' ],
- planets = [mercury, venus, earth, mars, jupiter, saturn],
- planetsAscName = [earth, jupiter, mars, mercury, saturn, venus],
- planetsAscRadius = [mercury, mars, venus, earth, saturn, jupiter],
- planetsRowspan,
- planetsRowspanII,
- planetsAscNameLegacy,
-
// Data set "ipv4"
ipv4 = [
// Some randomly generated fake IPs
- ['45.238.27.109'],
- ['44.172.9.22'],
- ['247.240.82.209'],
- ['204.204.132.158'],
- ['170.38.91.162'],
- ['197.219.164.9'],
- ['45.68.154.72'],
- ['182.195.149.80']
+ [ '45.238.27.109' ],
+ [ '44.172.9.22' ],
+ [ '247.240.82.209' ],
+ [ '204.204.132.158' ],
+ [ '170.38.91.162' ],
+ [ '197.219.164.9' ],
+ [ '45.68.154.72' ],
+ [ '182.195.149.80' ]
],
ipv4Sorted = [
// Sort order should go octet by octet
- ['44.172.9.22'],
- ['45.68.154.72'],
- ['45.238.27.109'],
- ['170.38.91.162'],
- ['182.195.149.80'],
- ['197.219.164.9'],
- ['204.204.132.158'],
- ['247.240.82.209']
+ [ '44.172.9.22' ],
+ [ '45.68.154.72' ],
+ [ '45.238.27.109' ],
+ [ '170.38.91.162' ],
+ [ '182.195.149.80' ],
+ [ '197.219.164.9' ],
+ [ '204.204.132.158' ],
+ [ '247.240.82.209' ]
],
// Data set "umlaut"
umlautWords = [
- ['Günther'],
- ['Peter'],
- ['Björn'],
- ['Bjorn'],
- ['Apfel'],
- ['Äpfel'],
- ['Strasse'],
- ['Sträßschen']
+ [ 'Günther' ],
+ [ 'Peter' ],
+ [ 'Björn' ],
+ [ 'Bjorn' ],
+ [ 'Apfel' ],
+ [ 'Äpfel' ],
+ [ 'Strasse' ],
+ [ 'Sträßschen' ]
],
umlautWordsSorted = [
- ['Äpfel'],
- ['Apfel'],
- ['Björn'],
- ['Bjorn'],
- ['Günther'],
- ['Peter'],
- ['Sträßschen'],
- ['Strasse']
+ [ 'Äpfel' ],
+ [ 'Apfel' ],
+ [ 'Björn' ],
+ [ 'Bjorn' ],
+ [ 'Günther' ],
+ [ 'Peter' ],
+ [ 'Sträßschen' ],
+ [ 'Strasse' ]
],
complexMDYDates = [
- ['January, 19 2010'],
- ['April 21 1991'],
- ['04 22 1991'],
- ['5.12.1990'],
- ['December 12 \'10']
+ [ 'January, 19 2010' ],
+ [ 'April 21 1991' ],
+ [ '04 22 1991' ],
+ [ '5.12.1990' ],
+ [ 'December 12 \'10' ]
],
complexMDYSorted = [
- ['5.12.1990'],
- ['April 21 1991'],
- ['04 22 1991'],
- ['January, 19 2010'],
- ['December 12 \'10']
+ [ '5.12.1990' ],
+ [ 'April 21 1991' ],
+ [ '04 22 1991' ],
+ [ 'January, 19 2010' ],
+ [ 'December 12 \'10' ]
],
currencyUnsorted = [
- ['1.02 $'],
- ['$ 3.00'],
- ['€ 2,99'],
- ['$ 1.00'],
- ['$3.50'],
- ['$ 1.50'],
- ['€ 0.99']
+ [ '1.02 $' ],
+ [ '$ 3.00' ],
+ [ '€ 2,99' ],
+ [ '$ 1.00' ],
+ [ '$3.50' ],
+ [ '$ 1.50' ],
+ [ '€ 0.99' ]
],
currencySorted = [
- ['€ 0.99'],
- ['$ 1.00'],
- ['1.02 $'],
- ['$ 1.50'],
- ['$ 3.00'],
- ['$3.50'],
+ [ '€ 0.99' ],
+ [ '$ 1.00' ],
+ [ '1.02 $' ],
+ [ '$ 1.50' ],
+ [ '$ 3.00' ],
+ [ '$3.50' ],
// Comma's sort after dots
// Not intentional but test to detect changes
- ['€ 2,99']
+ [ '€ 2,99' ]
],
numbers = [
- [ '12' ],
- [ '7' ],
- [ '13,000'],
- [ '9' ],
- [ '14' ],
- [ '8.0' ]
+ [ '12' ],
+ [ '7' ],
+ [ '13,000' ],
+ [ '9' ],
+ [ '14' ],
+ [ '8.0' ]
],
numbersAsc = [
- [ '7' ],
- [ '8.0' ],
- [ '9' ],
- [ '12' ],
- [ '14' ],
- [ '13,000']
+ [ '7' ],
+ [ '8.0' ],
+ [ '9' ],
+ [ '12' ],
+ [ '14' ],
+ [ '13,000' ]
],
correctDateSorting1 = [
- ['01 January 2010'],
- ['05 February 2010'],
- ['16 January 2010']
+ [ '01 January 2010' ],
+ [ '05 February 2010' ],
+ [ '16 January 2010' ]
],
correctDateSortingSorted1 = [
- ['01 January 2010'],
- ['16 January 2010'],
- ['05 February 2010']
+ [ '01 January 2010' ],
+ [ '16 January 2010' ],
+ [ '05 February 2010' ]
],
correctDateSorting2 = [
- ['January 01 2010'],
- ['February 05 2010'],
- ['January 16 2010']
+ [ 'January 01 2010' ],
+ [ 'February 05 2010' ],
+ [ 'January 16 2010' ]
],
correctDateSortingSorted2 = [
- ['January 01 2010'],
- ['January 16 2010'],
- ['February 05 2010']
+ [ 'January 01 2010' ],
+ [ 'January 16 2010' ],
+ [ 'February 05 2010' ]
];
QUnit.module( 'jquery.tablesorter', QUnit.newMwEnvironment( {
setup: function () {
this.liveMonths = mw.language.months;
mw.language.months = {
- 'keys': {
- 'names': ['january', 'february', 'march', 'april', 'may_long', 'june',
- 'july', 'august', 'september', 'october', 'november', 'december'],
- 'genitive': ['january-gen', 'february-gen', 'march-gen', 'april-gen', 'may-gen', 'june-gen',
- 'july-gen', 'august-gen', 'september-gen', 'october-gen', 'november-gen', 'december-gen'],
- 'abbrev': ['jan', 'feb', 'mar', 'apr', 'may', 'jun',
- 'jul', 'aug', 'sep', 'oct', 'nov', 'dec']
+ keys: {
+ names: [ 'january', 'february', 'march', 'april', 'may_long', 'june',
+ 'july', 'august', 'september', 'october', 'november', 'december' ],
+ genitive: [ 'january-gen', 'february-gen', 'march-gen', 'april-gen', 'may-gen', 'june-gen',
+ 'july-gen', 'august-gen', 'september-gen', 'october-gen', 'november-gen', 'december-gen' ],
+ abbrev: [ 'jan', 'feb', 'mar', 'apr', 'may', 'jun',
+ 'jul', 'aug', 'sep', 'oct', 'nov', 'dec' ]
},
- 'names': ['January', 'February', 'March', 'April', 'May', 'June',
- 'July', 'August', 'September', 'October', 'November', 'December'],
- 'genitive': ['January', 'February', 'March', 'April', 'May', 'June',
- 'July', 'August', 'September', 'October', 'November', 'December'],
- 'abbrev': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
- 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
+ names: [ 'January', 'February', 'March', 'April', 'May', 'June',
+ 'July', 'August', 'September', 'October', 'November', 'December' ],
+ genitive: [ 'January', 'February', 'March', 'April', 'May', 'June',
+ 'July', 'August', 'September', 'October', 'November', 'December' ],
+ abbrev: [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
+ 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ]
};
},
teardown: function () {
@@ -180,9 +181,9 @@
},
config: {
wgDefaultDateFormat: 'dmy',
- wgSeparatorTransformTable: ['', ''],
- wgDigitTransformTable: ['', ''],
- wgContentLanguage: 'en'
+ wgSeparatorTransformTable: [ '', '' ],
+ wgDigitTransformTable: [ '', '' ],
+ wgPageContentLanguage: 'en'
}
} ) );
@@ -192,7 +193,7 @@
*
* @param {String[]} header
* @param {String[][]} data
- * @return jQuery
+ * @return {jQuery}
*/
function tableCreate( header, data ) {
var i,
@@ -210,7 +211,7 @@
for ( i = 0; i < data.length; i++ ) {
/*jshint loopfunc: true */
$tr = $( '<tr>' );
- $.each( data[i], function ( j, str ) {
+ $.each( data[ i ], function ( j, str ) {
var $td = $( '<td>' );
$td.text( str ).appendTo( $tr );
} );
@@ -223,7 +224,7 @@
* Extract text from table.
*
* @param {jQuery} $table
- * @return String[][]
+ * @return {String[][]}
*/
function tableExtract( $table ) {
var data = [];
@@ -302,7 +303,6 @@
}
// Sample data set using planets named and their radius
- header = [ 'Planet', 'Radius (km)'];
tableTest(
'Basic planet table: sorting initially - ascending by name',
@@ -388,9 +388,6 @@
$table.find( '.headerSort:eq(1)' ).click().click();
}
);
-
- header = [ 'column1', 'column2' ];
-
tableTest(
'Sorting multiple columns by passing sort list',
header,
@@ -466,7 +463,7 @@
// Pretend to click while pressing the multi-sort key
var event = $.Event( 'click' );
- event[$table.data( 'tablesorter' ).config.sortMultiSortKey] = true;
+ event[ $table.data( 'tablesorter' ).config.sortMultiSortKey ] = true;
$table.find( '.headerSort:eq(1)' ).trigger( event );
}
);
@@ -500,10 +497,9 @@
} );
// Sorting with colspans
- header = [ 'column1a', 'column1b', 'column1c', 'column2' ];
tableTest( 'Sorting with colspanned headers: spanned column',
- header,
+ header4,
colspanInitial,
[ aaa1, aab5, abc3, bbc2, caa4 ],
function ( $table ) {
@@ -516,7 +512,7 @@
}
);
tableTest( 'Sorting with colspanned headers: sort spanned column twice',
- header,
+ header4,
colspanInitial,
[ caa4, bbc2, abc3, aab5, aaa1 ],
function ( $table ) {
@@ -530,7 +526,7 @@
}
);
tableTest( 'Sorting with colspanned headers: subsequent column',
- header,
+ header4,
colspanInitial,
[ aaa1, bbc2, abc3, caa4, aab5 ],
function ( $table ) {
@@ -543,7 +539,7 @@
}
);
tableTest( 'Sorting with colspanned headers: sort subsequent column twice',
- header,
+ header4,
colspanInitial,
[ aab5, caa4, abc3, bbc2, aaa1 ],
function ( $table ) {
@@ -557,42 +553,60 @@
}
);
- tableTest(
- 'Basic planet table: one unsortable column',
- header,
- planets,
- planets,
- function ( $table ) {
- $table.find( 'tr:eq(0) > th:eq(0)' ).addClass( 'unsortable' );
+ QUnit.test( 'Basic planet table: one unsortable column', 3, function ( assert ) {
+ var $table = tableCreate( header, planets ),
+ $cell;
+ $table.find( 'tr:eq(0) > th:eq(0)' ).addClass( 'unsortable' );
- $table.tablesorter();
- $table.find( 'tr:eq(0) > th:eq(0)' ).click();
- }
- );
+ $table.tablesorter();
+ $table.find( 'tr:eq(0) > th:eq(0)' ).click();
+
+ assert.deepEqual(
+ tableExtract( $table ),
+ planets,
+ 'table not sorted'
+ );
+
+ $cell = $table.find( 'tr:eq(0) > th:eq(0)' );
+ $table.find( 'tr:eq(0) > th:eq(1)' ).click();
+
+ assert.equal(
+ $cell.hasClass( 'headerSortUp' ) || $cell.hasClass( 'headerSortDown' ),
+ false,
+ 'after sort: no class headerSortUp or headerSortDown'
+ );
+
+ assert.equal(
+ $cell.attr( 'title' ),
+ undefined,
+ 'after sort: no title tag added'
+ );
+
+ } );
// Regression tests!
tableTest(
'Bug 28775: German-style (dmy) short numeric dates',
- ['Date'],
+ [ 'Date' ],
[
// German-style dates are day-month-year
- ['11.11.2011'],
- ['01.11.2011'],
- ['02.10.2011'],
- ['03.08.2011'],
- ['09.11.2011']
+ [ '11.11.2011' ],
+ [ '01.11.2011' ],
+ [ '02.10.2011' ],
+ [ '03.08.2011' ],
+ [ '09.11.2011' ]
],
[
// Sorted by ascending date
- ['03.08.2011'],
- ['02.10.2011'],
- ['01.11.2011'],
- ['09.11.2011'],
- ['11.11.2011']
+ [ '03.08.2011' ],
+ [ '02.10.2011' ],
+ [ '01.11.2011' ],
+ [ '09.11.2011' ],
+ [ '11.11.2011' ]
],
function ( $table ) {
mw.config.set( 'wgDefaultDateFormat', 'dmy' );
- mw.config.set( 'wgContentLanguage', 'de' );
+ mw.config.set( 'wgPageContentLanguage', 'de' );
$table.tablesorter();
$table.find( '.headerSort:eq(0)' ).click();
@@ -601,22 +615,22 @@
tableTest(
'Bug 28775: American-style (mdy) short numeric dates',
- ['Date'],
+ [ 'Date' ],
[
// American-style dates are month-day-year
- ['11.11.2011'],
- ['01.11.2011'],
- ['02.10.2011'],
- ['03.08.2011'],
- ['09.11.2011']
+ [ '11.11.2011' ],
+ [ '01.11.2011' ],
+ [ '02.10.2011' ],
+ [ '03.08.2011' ],
+ [ '09.11.2011' ]
],
[
// Sorted by ascending date
- ['01.11.2011'],
- ['02.10.2011'],
- ['03.08.2011'],
- ['09.11.2011'],
- ['11.11.2011']
+ [ '01.11.2011' ],
+ [ '02.10.2011' ],
+ [ '03.08.2011' ],
+ [ '09.11.2011' ],
+ [ '11.11.2011' ]
],
function ( $table ) {
mw.config.set( 'wgDefaultDateFormat', 'mdy' );
@@ -628,7 +642,7 @@
tableTest(
'Bug 17141: IPv4 address sorting',
- ['IP'],
+ [ 'IP' ],
ipv4,
ipv4Sorted,
function ( $table ) {
@@ -638,7 +652,7 @@
);
tableTest(
'Bug 17141: IPv4 address sorting (reverse)',
- ['IP'],
+ [ 'IP' ],
ipv4,
reversed( ipv4Sorted ),
function ( $table ) {
@@ -649,15 +663,15 @@
tableTest(
'Accented Characters with custom collation',
- ['Name'],
+ [ 'Name' ],
umlautWords,
umlautWordsSorted,
function ( $table ) {
mw.config.set( 'tableSorterCollation', {
- 'ä': 'ae',
- 'ö': 'oe',
- 'ß': 'ss',
- 'ü': 'ue'
+ ä: 'ae',
+ ö: 'oe',
+ ß: 'ss',
+ ü: 'ue'
} );
$table.tablesorter();
@@ -749,7 +763,7 @@
tableTest(
'Complex date parsing I',
- ['date'],
+ [ 'date' ],
complexMDYDates,
complexMDYSorted,
function ( $table ) {
@@ -762,7 +776,7 @@
tableTest(
'Currency parsing I',
- ['currency'],
+ [ 'currency' ],
currencyUnsorted,
currencySorted,
function ( $table ) {
@@ -772,7 +786,7 @@
);
planetsAscNameLegacy = planetsAscName.slice( 0 );
- planetsAscNameLegacy[4] = planetsAscNameLegacy[5];
+ planetsAscNameLegacy[ 4 ] = planetsAscNameLegacy[ 5 ];
planetsAscNameLegacy.pop();
tableTest(
@@ -801,7 +815,7 @@
$table.find( '.headerSort:eq(0)' ).click();
assert.equal(
- $table.data( 'tablesorter' ).config.parsers[0].id,
+ $table.data( 'tablesorter' ).config.parsers[ 0 ].id,
'number',
'Correctly detected column content skipping sortbottom'
);
@@ -989,7 +1003,7 @@
} );
tableTest( 'bug 8115: sort numbers with commas (ascending)',
- ['Numbers'], numbers, numbersAsc,
+ [ 'Numbers' ], numbers, numbersAsc,
function ( $table ) {
$table.tablesorter();
$table.find( '.headerSort:eq(0)' ).click();
@@ -997,7 +1011,7 @@
);
tableTest( 'bug 8115: sort numbers with commas (descending)',
- ['Numbers'], numbers, reversed( numbersAsc ),
+ [ 'Numbers' ], numbers, reversed( numbersAsc ),
function ( $table ) {
$table.tablesorter();
$table.find( '.headerSort:eq(0)' ).click().click();
@@ -1032,7 +1046,7 @@
tableTest(
'Correct date sorting I',
- ['date'],
+ [ 'date' ],
correctDateSorting1,
correctDateSortingSorted1,
function ( $table ) {
@@ -1045,7 +1059,7 @@
tableTest(
'Correct date sorting II',
- ['date'],
+ [ 'date' ],
correctDateSorting2,
correctDateSortingSorted2,
function ( $table ) {
@@ -1238,7 +1252,7 @@
'</tbody></table>' );
$table.tablesorter();
- assert.equal( $table.find( 'tr:eq(1) th:eq(1)').data('headerIndex'),
+ assert.equal( $table.find( 'tr:eq(1) th:eq(1)' ).data( 'headerIndex' ),
2,
'Incorrect index of sort header'
);
@@ -1262,14 +1276,14 @@
tableTestHTML(
'Rowspan exploding with colspanned cells (2)',
'<table class="sortable">' +
- '<thead><tr><th id="sortme">n</th><th>foo</th><th>bar</th><th>baz</th><th>quux</th></tr></thead>' +
+ '<thead><tr><th>n</th><th>foo</th><th>bar</th><th>baz</th><th id="sortme">n2</th></tr></thead>' +
'<tbody>' +
- '<tr><td>1</td><td>foo</td><td>bar</td><td rowspan="2">baz</td><td>quux</td></tr>' +
- '<tr><td>2</td><td colspan="2">foobar</td><td>quux</td></tr>' +
+ '<tr><td>1</td><td>foo</td><td>bar</td><td rowspan="2">baz</td><td>2</td></tr>' +
+ '<tr><td>2</td><td colspan="2">foobar</td><td>1</td></tr>' +
'</tbody></table>',
[
- [ '1', 'foo', 'bar', 'baz', 'quux' ],
- [ '2', 'foobar', 'baz', 'quux' ]
+ [ '2', 'foobar', 'baz', '1' ],
+ [ '1', 'foo', 'bar', 'baz', '2' ]
]
);
@@ -1345,4 +1359,39 @@
]
);
+ QUnit.test( 'bug 105731 - incomplete rows in table body', 3, function ( assert ) {
+ var $table, parsers;
+ $table = $(
+ '<table class="sortable">' +
+ '<tr><th>A</th><th>B</th></tr>' +
+ '<tr><td>3</td></tr>' +
+ '<tr><td>1</td><td>2</td></tr>' +
+ '</table>'
+ );
+ $table.tablesorter();
+ $table.find( '.headerSort:eq(0)' ).click();
+ // now the first row have 2 columns
+ $table.find( '.headerSort:eq(1)' ).click();
+
+ parsers = $table.data( 'tablesorter' ).config.parsers;
+
+ assert.equal(
+ parsers.length,
+ 2,
+ 'detectParserForColumn() detect 2 parsers'
+ );
+
+ assert.equal(
+ parsers[ 1 ].id,
+ 'number',
+ 'detectParserForColumn() detect parser.id "number" for second column'
+ );
+
+ assert.equal(
+ parsers[ 1 ].format( $table.find( 'tbody > tr > td:eq(1)' ).text() ),
+ 0,
+ 'empty cell is sorted as number 0'
+ );
+
+ } );
}( jQuery, mediaWiki ) );
diff --git a/tests/qunit/suites/resources/jquery/jquery.textSelection.test.js b/tests/qunit/suites/resources/jquery/jquery.textSelection.test.js
index 56b0fa92..2e6f05ed 100644
--- a/tests/qunit/suites/resources/jquery/jquery.textSelection.test.js
+++ b/tests/qunit/suites/resources/jquery/jquery.textSelection.test.js
@@ -5,13 +5,13 @@
/**
* Test factory for $.fn.textSelection( 'encapsulateText' )
*
- * @param options {object} associative array containing:
- * description {string}
- * input {string}
- * output {string}
- * start {int} starting char for selection
- * end {int} ending char for selection
- * params {object} add'l parameters for $().textSelection( 'encapsulateText' )
+ * @param {Object} options Associative configuration array
+ * @param {string} options.description Description
+ * @param {string} options.input Input
+ * @param {string} options.output Output
+ * @param {int} options.start Starting char for selection
+ * @param {int} options.end Ending char for selection
+ * @param {object} options.params Additional parameters for $().textSelection( 'encapsulateText' )
*/
function encapsulateTest( options ) {
var opt = $.extend( {
@@ -237,23 +237,22 @@
}
pos = $textarea.textSelection( 'getCaretPosition', { startAndEnd: true } );
- among( pos[0], options.start, 'Caret start should be where we set it.' );
- among( pos[1], options.end, 'Caret end should be where we set it.' );
+ among( pos[ 0 ], options.start, 'Caret start should be where we set it.' );
+ among( pos[ 1 ], options.end, 'Caret end should be where we set it.' );
} );
}
caretSample = 'Some big text that we like to work with. Nothing fancy... you know what I mean?';
-/*
- // @broken: Disabled per bug 34820
+ /* @broken: Disabled per bug 34820
caretTest({
- description: 'getCaretPosition with original/empty selection - bug 31847 with IE 6/7/8',
- text: caretSample,
- start: [0, caretSample.length], // Opera and Firefox (prior to FF 6.0) default caret to the end of the box (caretSample.length)
- end: [0, caretSample.length], // Other browsers default it to the beginning (0), so check both.
- mode: 'get'
+ description: 'getCaretPosition with original/empty selection - bug 31847 with IE 6/7/8',
+ text: caretSample,
+ start: [0, caretSample.length], // Opera and Firefox (prior to FF 6.0) default caret to the end of the box (caretSample.length)
+ end: [0, caretSample.length], // Other browsers default it to the beginning (0), so check both.
+ mode: 'get'
});
-*/
+ */
caretTest( {
description: 'set/getCaretPosition with forced empty selection',