This commit is contained in:
krzysztofmadejski
2016-11-06 13:46:56 +01:00
parent d871bc40b8
commit 5976edd377
16 changed files with 319 additions and 81 deletions

View File

@@ -33,6 +33,10 @@
<script type="text/javascript" src="../vendor/slickgrid/2.2/plugins/slick.rowmovemanager.js"></script>
<script type="text/javascript" src="../vendor/timeline/js/timeline.js"></script>
<script type="text/javascript" src="../node_modules/intl-messageformat/dist/intl-messageformat-with-locales.min.js"></script>
<script type="module" src="../node_modules/intl-format-cache/lib/memoizer.js"></script>
<!--[if lte IE 7]>
<script language="javascript" type="text/javascript" src="../vendor/json/json2.js"></script>
<![endif]-->
@@ -76,10 +80,12 @@
<script type="text/javascript" src="view.map.test.js"></script>
<script type="text/javascript" src="view.timeline.test.js"></script>
<script type="text/javascript" src="view.multiview.test.js"></script>
<script type="text/javascript" src="view.i18n.test.js"></script>
<script type="text/javascript" src="util.test.js"></script>
<script type="text/javascript" src="widget.filtereditor.test.js"></script>
<script type="text/javascript" src="widget.valuefilter.test.js"></script>
<script type="text/javascript" src="widget.pager.test.js"></script>
</head>
<body>
<h1 id="qunit-header">Qunit Tests</h1>

143
test/view.i18n.test.js Normal file
View File

@@ -0,0 +1,143 @@
(function ($) {
module("View - i18n support");
test('translate simple key custom locale', function () {
var dataset = Fixture.getDataset();
var view = new recline.View.MultiView({
model: dataset,
locale: 'pl' // todo or should it go in the state parameter?
});
equal(view.t('Grid'), 'Tabela');
});
test('translate simple key default locale', function () {
var dataset = Fixture.getDataset();
var view = new recline.View.MultiView({
model: dataset
});
equal(view.t('Add_row'), 'Add row');
});
test('override custom locale', function () {
var dataset = Fixture.getDataset();
var view = new recline.View.MultiView({
model: dataset,
locale: 'pl'
});
var oldTranslation = recline.View.translations['pl']['Grid'];
// set custom strings in external app after recline script
recline.View.translations['pl']['Grid'] = 'Dane';
equal(view.t('Grid'), 'Dane');
recline.View.translations['pl']['Grid'] = oldTranslation;
});
test('override default locale', function () {
var dataset = Fixture.getDataset();
var view = new recline.View.MultiView({
model: dataset
});
var oldTranslation = recline.View.translations['en']['Grid'];
// set custom strings in external app after recline script
recline.View.translations['en']['Grid'] = 'Data';
equal(view.t('Grid'), 'Data');
recline.View.translations['en']['Grid'] = oldTranslation;
});
test('fallback to key if translation not present', function () {
var dataset = Fixture.getDataset();
var view = new recline.View.MultiView({
model: dataset
});
equal(view.t('thiskeydoesnotexist'), 'thiskeydoesnotexist');
});
test('fallback to default message', function () {
var dataset = Fixture.getDataset();
var view = new recline.View.MultiView({
model: dataset
});
equal(view.t('thiskeydoesnotexist', {}, 'Fallback to default message'), 'Fallback to default message');
});
test('mustache formatter - simple key', function () {
var dataset = Fixture.getDataset();
var view = new recline.View.MultiView({
model: dataset,
locale: 'pl'
});
var template = '{{t.Grid}}';
var tmplData = {};
// adding i18n support [do it in view before passing data to render functions]
tmplData = _.extend(tmplData, view.MustacheFormatter());
var out = Mustache.render(template, tmplData);
equal(out, 'Tabela');
});
test('mustache formatter - complex key', function () {
var dataset = Fixture.getDataset();
var view = new recline.View.MultiView({
model: dataset,
});
var template = '{{#t.num_records}}{recordCount} records{{/t.num_records}}';
var tmplData = {recordCount: 5};
// adding i18n support [do it in view before passing data to render functions]
tmplData = _.extend(tmplData, view.MustacheFormatter());
var out = Mustache.render(template, tmplData);
equal(out, '5 records');
});
test('translate complex key default locale', function () {
var dataset = Fixture.getDataset();
var view = new recline.View.MultiView({
model: dataset
});
equal(view.t('codeforall', {records: 3}, '<span>{records} records</span>'), '<span>3 records</span>');
});
test('translate complex key custom locale', function () {
var dataset = Fixture.getDataset();
var view = new recline.View.MultiView({
model: dataset,
locale: 'pl'
});
recline.View.translations['pl']['codeforall'] = '<span>{records} rekordy</span>';
equal(view.t('codeforall', {records: 3}, '<span>{records} records</span>'), '<span>3 rekordy</span>');
});
test('translate complex key custom locale custom count', function () {
var dataset = Fixture.getDataset();
var view = new recline.View.MultiView({
model: dataset,
locale: 'pl'
});
// todo custom count string
equal(view.t('some_msg', {records: 0}, '<span>{{records}} records</span>'), '<span>brak rekordów</span>');
equal(view.t('some_msg', {records: 1}, '<span>{{records}} records</span>'), '<span>1 rekord</span>');
equal(view.t('some_msg', {records: 3}, '<span>{{records}} records</span>'), '<span>3 rekordy</span>');
equal(view.t('some_msg', {records: 5}, '<span>{{records}} records</span>'), '<span>5 rekordów</span>');
});
// todo test dynamic language changes
})(this.jQuery);