]> git.proxmox.com Git - mirror_novnc.git/blame - tests/test.localization.js
Only show error stack if it is not empty
[mirror_novnc.git] / tests / test.localization.js
CommitLineData
7279364c
SM
1var assert = chai.assert;
2var expect = chai.expect;
3
4import l10nGet, { l10n } from '../app/localization.js';
5
6describe('Localization', function() {
7 "use strict";
8
9 describe('language selection', function () {
10 var origNavigator;
11 beforeEach(function () {
12 // window.navigator is a protected read-only property in many
13 // environments, so we need to redefine it whilst running these
14 // tests.
15 origNavigator = Object.getOwnPropertyDescriptor(window, "navigator");
16 if (origNavigator === undefined) {
17 // Object.getOwnPropertyDescriptor() doesn't work
18 // properly in any version of IE
19 this.skip();
20 }
21
22 Object.defineProperty(window, "navigator", {value: {}});
23 if (window.navigator.languages !== undefined) {
24 // Object.defineProperty() doesn't work properly in old
25 // versions of Chrome
26 this.skip();
27 }
28
29 window.navigator.languages = [];
30 });
31 afterEach(function () {
32 Object.defineProperty(window, "navigator", origNavigator);
33 });
34
35 it('should use English by default', function() {
36 expect(l10n.language).to.equal('en');
37 });
38 it('should use English if no user language matches', function() {
39 window.navigator.languages = ["nl", "de"];
40 l10n.setup(["es", "fr"]);
41 expect(l10n.language).to.equal('en');
42 });
43 it('should use the most preferred user language', function() {
44 window.navigator.languages = ["nl", "de", "fr"];
45 l10n.setup(["es", "fr", "de"]);
46 expect(l10n.language).to.equal('de');
47 });
48 it('should prefer sub-languages languages', function() {
49 window.navigator.languages = ["pt-BR"];
50 l10n.setup(["pt", "pt-BR"]);
51 expect(l10n.language).to.equal('pt-BR');
52 });
53 it('should fall back to language "parents"', function() {
54 window.navigator.languages = ["pt-BR"];
55 l10n.setup(["fr", "pt", "de"]);
56 expect(l10n.language).to.equal('pt');
57 });
58 it('should not use specific language when user asks for a generic language', function() {
59 window.navigator.languages = ["pt", "de"];
60 l10n.setup(["fr", "pt-BR", "de"]);
61 expect(l10n.language).to.equal('de');
62 });
63 it('should handle underscore as a separator', function() {
64 window.navigator.languages = ["pt-BR"];
65 l10n.setup(["pt_BR"]);
66 expect(l10n.language).to.equal('pt_BR');
67 });
68 it('should handle difference in case', function() {
69 window.navigator.languages = ["pt-br"];
70 l10n.setup(["pt-BR"]);
71 expect(l10n.language).to.equal('pt-BR');
72 });
73 });
74});