module( 'jquery.localize.js' );
test( '-- Initial check', function() {
expect(1);
ok( $.fn.localize, 'jQuery.fn.localize defined' );
} );
test( 'Handle basic replacements', function() {
expect(3);
var html, $lc;
mw.messages.set( 'basic', 'Basic stuff' );
// Tag: html:msg
html = '
';
$lc = $( html ).localize().find( 'span' );
strictEqual( $lc.text(), 'Basic stuff', 'Tag: html:msg' );
// Attribute: title-msg
html = '
';
$lc = $( html ).localize().find( 'span' );
strictEqual( $lc.attr( 'title' ), 'Basic stuff', 'Attribute: title-msg' );
// Attribute: alt-msg
html = '
';
$lc = $( html ).localize().find( 'span' );
strictEqual( $lc.attr( 'alt' ), 'Basic stuff', 'Attribute: alt-msg' );
} );
test( 'Proper escaping', function() {
expect(2);
var html, $lc;
mw.messages.set( 'properfoo', '' );
// This is handled by jQuery inside $.fn.localize, just a simple sanity checked
// making sure it is actually using text() and attr() (or something with the same effect)
// Text escaping
html = '
';
$lc = $( html ).localize().find( 'span' );
strictEqual( $lc.text(), mw.msg( 'properfoo' ), 'Content is inserted as text, not as html.' );
// Attribute escaping
html = '
';
$lc = $( html ).localize().find( 'span' );
strictEqual( $lc.attr( 'title' ), mw.msg( 'properfoo' ), 'Attributes are not inserted raw.' );
} );
test( 'Options', function() {
expect(7);
mw.messages.set( {
'foo-lorem': 'Lorem',
'foo-ipsum': 'Ipsum',
'foo-bar-title': 'Read more about bars',
'foo-bar-label': 'The Bars',
'foo-bazz-title': 'Read more about bazz at $1 (last modified: $2)',
'foo-bazz-label': 'The Bazz ($1)',
'foo-welcome': 'Welcome to $1! (last visit: $2)'
} );
var html, $lc, attrs, x, sitename = 'Wikipedia';
// Message key prefix
html = '
';
$lc = $( html ).localize( {
prefix: 'foo-'
} ).find( 'span' );
strictEqual( $lc.attr( 'title' ), 'Lorem', 'Message key prefix - attr' );
strictEqual( $lc.text(), 'Ipsum', 'Message key prefix - text' );
// Variable keys mapping
x = 'bar';
html = '
';
$lc = $( html ).localize( {
keys: {
'title': 'foo-' + x + '-title',
'label': 'foo-' + x + '-label'
}
} ).find( 'span' );
strictEqual( $lc.attr( 'title' ), 'Read more about bars', 'Variable keys mapping - attr' );
strictEqual( $lc.text(), 'The Bars', 'Variable keys mapping - text' );
// Passing parameteters to mw.msg
html = '
';
$lc = $( html ).localize( {
params: {
'foo-welcome': [sitename, 'yesterday']
}
} ).find( 'span' );
strictEqual( $lc.text(), 'Welcome to Wikipedia! (last visit: yesterday)', 'Passing parameteters to mw.msg' );
// Combination of options prefix, params and keys
x = 'bazz';
html = '
';
$lc = $( html ).localize( {
prefix: 'foo-',
keys: {
'title': x + '-title',
'label': x + '-label'
},
params: {
'title': [sitename, '3 minutes ago'],
'label': [sitename, '3 minutes ago']
}
} ).find( 'span' );
strictEqual( $lc.text(), 'The Bazz (Wikipedia)', 'Combination of options prefix, params and keys - text' );
strictEqual( $lc.attr( 'title' ), 'Read more about bazz at Wikipedia (last modified: 3 minutes ago)', 'Combination of options prefix, params and keys - attr' );
} );