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