summaryrefslogtreecommitdiffstats
path: root/core/js/tests/specs/l10nSpec.js
diff options
context:
space:
mode:
Diffstat (limited to 'core/js/tests/specs/l10nSpec.js')
-rw-r--r--core/js/tests/specs/l10nSpec.js101
1 files changed, 101 insertions, 0 deletions
diff --git a/core/js/tests/specs/l10nSpec.js b/core/js/tests/specs/l10nSpec.js
new file mode 100644
index 00000000000..d5b0363ea38
--- /dev/null
+++ b/core/js/tests/specs/l10nSpec.js
@@ -0,0 +1,101 @@
+/**
+ * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>
+ *
+ * This file is licensed under the Affero General Public License version 3
+ * or later.
+ *
+ * See the COPYING-README file.
+ *
+ */
+
+describe('OC.L10N tests', function() {
+ var TEST_APP = 'jsunittestapp';
+
+ afterEach(function() {
+ delete OC.L10N._bundles[TEST_APP];
+ });
+
+ describe('text translation', function() {
+ beforeEach(function() {
+ OC.L10N.register(TEST_APP, {
+ 'Hello world!': 'Hallo Welt!',
+ 'Hello {name}, the weather is {weather}': 'Hallo {name}, das Wetter ist {weather}',
+ 'sunny': 'sonnig'
+ });
+ });
+ it('returns untranslated text when no bundle exists', function() {
+ delete OC.L10N._bundles[TEST_APP];
+ expect(t(TEST_APP, 'unknown text')).toEqual('unknown text');
+ });
+ it('returns untranslated text when no key exists', function() {
+ expect(t(TEST_APP, 'unknown text')).toEqual('unknown text');
+ });
+ it('returns translated text when key exists', function() {
+ expect(t(TEST_APP, 'Hello world!')).toEqual('Hallo Welt!');
+ });
+ it('returns translated text with placeholder', function() {
+ expect(
+ t(TEST_APP, 'Hello {name}, the weather is {weather}', {name: 'Steve', weather: t(TEST_APP, 'sunny')})
+ ).toEqual('Hallo Steve, das Wetter ist sonnig');
+ });
+ });
+ describe('plurals', function() {
+ function checkPlurals() {
+ expect(
+ n(TEST_APP, 'download %n file', 'download %n files', 0)
+ ).toEqual('0 Dateien herunterladen');
+ expect(
+ n(TEST_APP, 'download %n file', 'download %n files', 1)
+ ).toEqual('1 Datei herunterladen');
+ expect(
+ n(TEST_APP, 'download %n file', 'download %n files', 2)
+ ).toEqual('2 Dateien herunterladen');
+ expect(
+ n(TEST_APP, 'download %n file', 'download %n files', 1024)
+ ).toEqual('1024 Dateien herunterladen');
+ }
+
+ it('generates plural for default text when translation does not exist', function() {
+ OC.L10N.register(TEST_APP, {
+ });
+ expect(
+ n(TEST_APP, 'download %n file', 'download %n files', 0)
+ ).toEqual('download 0 files');
+ expect(
+ n(TEST_APP, 'download %n file', 'download %n files', 1)
+ ).toEqual('download 1 file');
+ expect(
+ n(TEST_APP, 'download %n file', 'download %n files', 2)
+ ).toEqual('download 2 files');
+ expect(
+ n(TEST_APP, 'download %n file', 'download %n files', 1024)
+ ).toEqual('download 1024 files');
+ });
+ it('generates plural with default function when no forms specified', function() {
+ OC.L10N.register(TEST_APP, {
+ '_download %n file_::_download %n files_':
+ ['%n Datei herunterladen', '%n Dateien herunterladen']
+ });
+ checkPlurals();
+ });
+ it('generates plural with generated function when forms is specified', function() {
+ OC.L10N.register(TEST_APP, {
+ '_download %n file_::_download %n files_':
+ ['%n Datei herunterladen', '%n Dateien herunterladen']
+ }, 'nplurals=2; plural=(n != 1);');
+ checkPlurals();
+ });
+ it('generates plural with function when forms is specified as function', function() {
+ OC.L10N.register(TEST_APP, {
+ '_download %n file_::_download %n files_':
+ ['%n Datei herunterladen', '%n Dateien herunterladen']
+ }, function(n) {
+ return {
+ nplurals: 2,
+ plural: (n !== 1) ? 1 : 0
+ };
+ });
+ checkPlurals();
+ });
+ });
+});