summaryrefslogtreecommitdiffstats
path: root/core/js/tests
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2014-11-18 12:13:44 +0100
committerVincent Petry <pvince81@owncloud.com>2014-11-18 12:20:01 +0100
commit152da9796b0268069a10b73d65781301a307fcdd (patch)
tree07a5087ff6fac5ccecc4d6547194578e1a305009 /core/js/tests
parentaf7688ec17c260d3e227393e8e81438fe88b956c (diff)
downloadnextcloud-server-152da9796b0268069a10b73d65781301a307fcdd.tar.gz
nextcloud-server-152da9796b0268069a10b73d65781301a307fcdd.zip
Added function to load translations from JS
For apps that support async translation loading, a new function OC.L10N.load() can be used to asynchronously load the translations for a given app.
Diffstat (limited to 'core/js/tests')
-rw-r--r--core/js/tests/specs/l10nSpec.js48
1 files changed, 48 insertions, 0 deletions
diff --git a/core/js/tests/specs/l10nSpec.js b/core/js/tests/specs/l10nSpec.js
index d5b0363ea38..dc021a0baaf 100644
--- a/core/js/tests/specs/l10nSpec.js
+++ b/core/js/tests/specs/l10nSpec.js
@@ -11,8 +11,12 @@
describe('OC.L10N tests', function() {
var TEST_APP = 'jsunittestapp';
+ beforeEach(function() {
+ OC.appswebroots[TEST_APP] = OC.webroot + '/apps3/jsunittestapp';
+ });
afterEach(function() {
delete OC.L10N._bundles[TEST_APP];
+ delete OC.appswebroots[TEST_APP];
});
describe('text translation', function() {
@@ -98,4 +102,48 @@ describe('OC.L10N tests', function() {
checkPlurals();
});
});
+ describe('async loading of translations', function() {
+ it('loads bundle for given app and calls callback', function() {
+ var localeStub = sinon.stub(OC, 'getLocale').returns('zh_CN');
+ var callbackStub = sinon.stub();
+ var promiseStub = sinon.stub();
+ OC.L10N.load(TEST_APP, callbackStub).then(promiseStub);
+ expect(callbackStub.notCalled).toEqual(true);
+ expect(promiseStub.notCalled).toEqual(true);
+ expect(fakeServer.requests.length).toEqual(1);
+ var req = fakeServer.requests[0];
+ expect(req.url).toEqual(
+ OC.webroot + '/apps3/' + TEST_APP + '/l10n/zh_CN.json'
+ );
+ req.respond(
+ 200,
+ { 'Content-Type': 'application/json' },
+ JSON.stringify({
+ translations: {'Hello world!': '你好世界!'},
+ pluralForm: 'nplurals=2; plural=(n != 1);'
+ })
+ );
+
+ expect(callbackStub.calledOnce).toEqual(true);
+ expect(promiseStub.calledOnce).toEqual(true);
+ expect(t(TEST_APP, 'Hello world!')).toEqual('你好世界!');
+ localeStub.restore();
+ });
+ it('calls callback if translation already available', function() {
+ var callbackStub = sinon.stub();
+ OC.L10N.register(TEST_APP, {
+ 'Hello world!': 'Hallo Welt!'
+ });
+ OC.L10N.load(TEST_APP, callbackStub);
+ expect(callbackStub.calledOnce).toEqual(true);
+ expect(fakeServer.requests.length).toEqual(0);
+ });
+ it('calls callback if locale is en', function() {
+ var localeStub = sinon.stub(OC, 'getLocale').returns('en');
+ var callbackStub = sinon.stub();
+ OC.L10N.load(TEST_APP, callbackStub);
+ expect(callbackStub.calledOnce).toEqual(true);
+ expect(fakeServer.requests.length).toEqual(0);
+ });
+ });
});