Skip to content

Commit dafeb9f

Browse files
Draft: Make namespace UsersUtils public (#209)
* BKNDLSS-25493 - Add codeless block to get user's locale (for UI Builder)
1 parent 0beae63 commit dafeb9f

File tree

4 files changed

+110
-1
lines changed

4 files changed

+110
-1
lines changed

backendless.d.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,14 @@ declare module Backendless {
276276

277277
let currentUser: Backendless.User;
278278

279+
/**
280+
* @public
281+
* @namespace Backendless.UserService.Utils
282+
*/
283+
namespace Utils {
284+
function getClientUserLocale(): string;
285+
}
286+
279287
function register(user: Backendless.User): Promise<Backendless.User>;
280288
function register<T>(user: T): Promise<T>;
281289

src/users/index.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,15 @@ export default class Users {
1414
this.dataStore = this.app.Data.of(User)
1515
}
1616

17+
get Utils() {
18+
return UsersUtils
19+
}
20+
1721
async register(user) {
1822
user = { ...user }
1923

2024
if (!user.blUserLocale) {
21-
const clientUserLocale = UsersUtils.getClientUserLocale()
25+
const clientUserLocale = this.Utils.getClientUserLocale()
2226

2327
if (clientUserLocale) {
2428
user.blUserLocale = clientUserLocale

test/tsd.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -718,6 +718,7 @@ function testUserService() {
718718
const div: HTMLElement = document.createElement('div');
719719
let newUser: Backendless.User = new Backendless.User();
720720
let guestUser: Backendless.User = new Backendless.User();
721+
let resultStr: string;
721722
let resultObj: Object;
722723
let resultVoid: void;
723724
let resultNull: null;
@@ -746,6 +747,8 @@ function testUserService() {
746747

747748
promiseVoid = Backendless.UserService.restorePassword('email');
748749

750+
resultStr = Backendless.UserService.Utils.getClientUserLocale();
751+
749752
promiseObject = Backendless.UserService.register(newUser);
750753

751754
promiseListOfString = Backendless.UserService.getUserRoles();
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
import { expect } from 'chai'
2+
import { describe, it } from 'mocha'
3+
4+
import Backendless from '../../../helpers/sandbox'
5+
6+
describe('<Users> <Utils>', function() {
7+
describe('Client User Locale', function() {
8+
9+
it('return undefined when navigator is non-existent', () => {
10+
global.navigator = undefined
11+
12+
const locale = Backendless.UserService.Utils.getClientUserLocale()
13+
14+
expect(locale).to.be.eql(undefined)
15+
})
16+
17+
it('return language code when navigator languages is not empty', () => {
18+
global.navigator = {
19+
languages : ['en-EN','ek-EK'],
20+
userLanguage : 'ds-DS',
21+
language : 'ms-MS',
22+
browserLanguage: 'es-ES',
23+
systemLanguage : 'ru-RU',
24+
}
25+
26+
const locale = Backendless.UserService.Utils.getClientUserLocale()
27+
28+
expect(locale).to.be.eql('en')
29+
})
30+
31+
it('return language code when navigator languages is undefined', () => {
32+
global.navigator = {
33+
languages : [],
34+
userLanguage : 'ds-DS',
35+
language : 'ms-MS',
36+
browserLanguage: 'es-ES',
37+
systemLanguage : 'ru-RU',
38+
}
39+
40+
const locale1 = Backendless.UserService.Utils.getClientUserLocale()
41+
42+
expect(locale1).to.be.eql('ds')
43+
44+
global.navigator.languages = undefined
45+
46+
const locale2 = Backendless.UserService.Utils.getClientUserLocale()
47+
48+
49+
expect(locale2).to.be.eql('ds')
50+
})
51+
52+
it('return language code when navigator userLanguage is undefined', () => {
53+
global.navigator = {
54+
language : 'ms-MS',
55+
browserLanguage: 'es-ES',
56+
systemLanguage : 'ru-RU',
57+
}
58+
59+
const locale = Backendless.UserService.Utils.getClientUserLocale()
60+
61+
expect(locale).to.be.eql('ms')
62+
})
63+
64+
it('return language code when navigator userLanguage is undefined', () => {
65+
global.navigator = {
66+
browserLanguage: 'es-ES',
67+
systemLanguage : 'ru-RU',
68+
}
69+
70+
const locale = Backendless.UserService.Utils.getClientUserLocale()
71+
72+
expect(locale).to.be.eql('es')
73+
})
74+
75+
it('return language code when navigator browserLanguage is undefined', () => {
76+
global.navigator = {
77+
systemLanguage : 'ru-RU',
78+
}
79+
80+
const locale = Backendless.UserService.Utils.getClientUserLocale()
81+
82+
expect(locale).to.be.eql('ru')
83+
})
84+
85+
it('return empty string when navigator systemLanguage is undefined', () => {
86+
global.navigator = {}
87+
88+
const locale = Backendless.UserService.Utils.getClientUserLocale()
89+
90+
expect(locale).to.be.eql('')
91+
})
92+
93+
})
94+
})

0 commit comments

Comments
 (0)