2019-07-12 02:03:55 +02:00
set _global ( 'Handlebars' , global . make _handlebars ( ) ) ;
2017-11-08 17:35:08 +01:00
zrequire ( 'templates' ) ;
2016-05-13 12:44:03 +02:00
node tests: Actually test `translations.js`.
Before this test, we were validating the behavior
of `i18next`, but we weren't validating our light
layer that sits on top of `i18next`, which currently
resides in the slightly misnamed `translations.js`
file.
The translations module is now so small that I'll
just quote it verbatim here:
import i18next from 'i18next';
i18next.init({
lng: 'lang',
resources: {
lang: {
translation: page_params.translation_data,
},
},
nsSeparator: false,
keySeparator: false,
interpolation: {
prefix: "__",
suffix: "__",
},
returnEmptyString: false, // Empty string is not a valid translation.
});
window.i18n = i18next;
We now just do `zrequire('translations')` to initialize
the `i18next` library, which allows us to have simpler
test setup and to actually exercise the above call to
`i18next.init`.
This change now gives us 100% line coverage of `translations.js`,
which of course isn't that hard to acheive (see above).
2020-02-29 12:59:56 +01:00
// We download our translations in `page_params` (which
// are for the user's chosen language), so we simulate
// that here for the tests.
set _global ( 'page_params' , {
translation _data : {
"Quote and reply" : "French translation" ,
"Desktop notifications are triggered for messages that are offscreen when they arrive. Mobile and email notifications are triggered once you have been away from Zulip for a few minutes." : "Some French text" ,
2016-12-03 23:17:57 +01:00
} ,
2016-05-13 12:44:03 +02:00
} ) ;
node tests: Actually test `translations.js`.
Before this test, we were validating the behavior
of `i18next`, but we weren't validating our light
layer that sits on top of `i18next`, which currently
resides in the slightly misnamed `translations.js`
file.
The translations module is now so small that I'll
just quote it verbatim here:
import i18next from 'i18next';
i18next.init({
lng: 'lang',
resources: {
lang: {
translation: page_params.translation_data,
},
},
nsSeparator: false,
keySeparator: false,
interpolation: {
prefix: "__",
suffix: "__",
},
returnEmptyString: false, // Empty string is not a valid translation.
});
window.i18n = i18next;
We now just do `zrequire('translations')` to initialize
the `i18next` library, which allows us to have simpler
test setup and to actually exercise the above call to
`i18next.init`.
This change now gives us 100% line coverage of `translations.js`,
which of course isn't that hard to acheive (see above).
2020-02-29 12:59:56 +01:00
// All of our other tests stub out i18n activity;
// here we do a quick sanity check on the engine itself.
// We use `translations.js` to initialize `i18next` and
// to set `i18n` to `i18next` on the global namespace
// for `templates.js`.
zrequire ( 'translations' ) ;
2018-05-15 12:40:07 +02:00
run _test ( 't_tag' , ( ) => {
2019-11-02 00:06:25 +01:00
const args = {
2016-12-03 03:08:47 +01:00
message : {
2016-05-13 12:44:03 +02:00
is _stream : true ,
id : "99" ,
stream : "devel" ,
subject : "testing" ,
2016-12-03 23:17:57 +01:00
sender _full _name : "King Lear" ,
2016-05-13 12:44:03 +02:00
} ,
2018-03-28 00:28:57 +02:00
should _display _quote _and _reply : true ,
2016-12-03 03:08:47 +01:00
can _edit _message : true ,
can _mute _topic : true ,
2016-12-03 23:17:57 +01:00
narrowed : true ,
2016-05-13 12:44:03 +02:00
} ;
2019-11-02 00:06:25 +01:00
const html = require ( '../../static/templates/actions_popover_content.hbs' ) ( args ) ;
2017-04-04 15:44:45 +02:00
assert ( html . indexOf ( "French translation" ) > 0 ) ;
2018-05-15 12:40:07 +02:00
} ) ;
2016-05-13 12:44:03 +02:00
2018-05-15 12:40:07 +02:00
run _test ( 'tr_tag' , ( ) => {
2019-11-02 00:06:25 +01:00
const args = {
2016-12-03 03:08:47 +01:00
page _params : {
2017-04-27 00:26:49 +02:00
full _name : "John Doe" ,
2016-12-03 03:08:47 +01:00
password _auth _enabled : false ,
avatar _url : "http://example.com" ,
left _side _userlist : false ,
twenty _four _hour _time : false ,
2017-04-29 07:01:46 +02:00
enable _stream _desktop _notifications : false ,
2017-08-17 16:55:32 +02:00
enable _stream _push _notifications : false ,
2019-06-11 08:47:49 +02:00
enable _stream _audible _notifications : false ,
2017-04-29 08:13:47 +02:00
enable _desktop _notifications : false ,
2017-04-29 06:53:28 +02:00
enable _sounds : false ,
2016-12-03 03:08:47 +01:00
enable _offline _email _notifications : false ,
enable _offline _push _notifications : false ,
enable _online _push _notifications : false ,
enable _digest _emails : false ,
2016-12-03 23:17:57 +01:00
} ,
2016-05-13 12:44:03 +02:00
} ;
2019-11-02 00:06:25 +01:00
const html = require ( '../../static/templates/settings_tab.hbs' ) ( args ) ;
2019-04-18 03:19:55 +02:00
assert ( html . indexOf ( 'Some French text' ) > 0 ) ;
2018-05-15 12:40:07 +02:00
} ) ;