1
0
mirror of synced 2024-11-25 22:36:03 +03:00
select2/tests/options/translation-tests.js

305 lines
6.3 KiB
JavaScript

QUnit.module('Options - Translations');
var $ = require('jquery');
var Options = require('select2/options');
var Defaults = require('select2/defaults');
QUnit.module('Options - Translations', {
beforeEach: function () {
Defaults.reset();
},
afterEach: function () {
Defaults.reset();
}
});
QUnit.test(
'partial dictonaries are reset when default reset',
function (assert) {
Defaults.set('language', {
test: 'testing'
});
Defaults.reset();
assert.ok(
!Defaults.defaults.language.test,
'The partial dictionary should have been reset'
);
}
);
QUnit.test('default language chain is English', function (assert) {
var $element = $('<select></select>');
var options = new Options({}, $element);
assert.deepEqual(
options.get('language'),
['en']
);
});
QUnit.test(
'default translation includes all of the required messages',
function (assert) {
var $element = $('<select></select>');
var options = new Options({}, $element);
assert.deepEqual(
Object.keys(options.get('translations').all()),
[
'errorLoading',
'inputTooLong',
'inputTooShort',
'loadingMore',
'maximumSelected',
'noResults',
'searching',
'removeAllItems'
]
);
}
);
QUnit.test('partial dictionaries can be passed', function (assert) {
var $element = $('<select></select>');
var options = new Options({
language: {
searching: function () {
return 'Something';
}
}
}, $element);
var translations = options.get('translations');
assert.equal(
translations.get('searching')(),
'Something',
'The partial dictionary still overrides translations'
);
assert.equal(
translations.get('noResults')(),
'No results found',
'You can still get English translations for keys not passed in'
);
});
QUnit.test(
'partial dictionaries can be combined with defaults',
function (assert) {
var $element = $('<select></select>');
Defaults.set('language', {
test: function () {
return 'Testing';
}
});
var options = new Options({
language: {
searching: function () {
return 'Something';
}
}
}, $element);
var translations = options.get('translations');
assert.equal(
translations.get('searching')(),
'Something',
'The partial dictionary still overrides translations'
);
assert.equal(
translations.get('test')(),
'Testing',
'The defaults were included in the fallback chain'
);
assert.equal(
translations.get('noResults')(),
'No results found',
'You can still get English translations for keys not passed in'
);
}
);
QUnit.test(
'partial dictionaries can used in fallback chains',
function (assert) {
var $element = $('<select></select>');
var options = new Options({
language: [
{
searching: function () {
return 'Something';
}
},
{
test: function () {
return 'Testing';
}
}
]
}, $element);
var translations = options.get('translations');
assert.equal(
translations.get('searching')(),
'Something',
'The partial dictionary still overrides translations'
);
assert.equal(
translations.get('test')(),
'Testing',
'The defaults were included in the fallback chain'
);
assert.equal(
translations.get('noResults')(),
'No results found',
'You can still get English translations for keys not passed in'
);
}
);
QUnit.test('language can be set via the options', function (assert) {
var $element = $('<select></select>');
var options = new Options({
language: 'es'
}, $element);
assert.deepEqual(
options.get('language'),
['es', 'en']
);
});
QUnit.test('multi-part language is broken out', function (assert) {
var $element = $('<select></select>');
var options = new Options({
language: 'pt-BR'
}, $element);
assert.deepEqual(
options.get('language'),
['pt-BR', 'pt', 'en']
);
});
QUnit.test('default language can be set', function (assert) {
var $element = $('<select></select>');
Defaults.set('language', 'es');
var options = new Options({}, $element);
assert.deepEqual(
options.get('language'),
['es', 'en']
);
});
QUnit.test('lanugage set via options adds to default chain', function (assert) {
var $element = $('<select></select>');
Defaults.set('language', 'es');
var options = new Options({
language: 'it'
}, $element);
assert.deepEqual(
options.get('language'),
['it', 'es', 'en']
);
});
QUnit.test('default language chain can be set', function (assert) {
var $element = $('<select></select>');
Defaults.set('language', ['es', 'it', 'en']);
var options = new Options({}, $element);
assert.deepEqual(
options.get('language'),
['es', 'it', 'en']
);
});
QUnit.test('language can be set by lang attr', function (assert) {
var $element = $('<select lang="es"></select>');
var options = new Options({}, $element);
assert.deepEqual(
options.get('language'),
['es', 'en']
);
});
QUnit.test('language can be inherited by lang attr', function (assert) {
var $element = $('<div lang="es"><select></select></div>').find('select');
var options = new Options({}, $element);
assert.deepEqual(
options.get('language'),
['es', 'en']
);
});
QUnit.test(
'multi-part language can be inherited by lang attr',
function (assert) {
var $element = $(
'<div lang="pt-BR"><select></select></div>'
).find('select');
var options = new Options({}, $element);
assert.deepEqual(
options.get('language'),
['pt-BR', 'pt', 'en']
);
}
);
QUnit.test('lang attr overrides default language', function (assert) {
var $element = $('<select lang="it"></select>');
Defaults.set('language', 'es');
var options = new Options({}, $element);
assert.deepEqual(
options.get('language'),
['it', 'es', 'en']
);
});
QUnit.test('default language overrides inherited lang attr', function (assert) {
var $element = $('<div lang="it"><select></select></div>').find('select');
Defaults.set('language', 'es');
var options = new Options({}, $element);
assert.deepEqual(
options.get('language'),
['es', 'it', 'en']
);
});