@flusys/nestjs-localization 7.0.2 → 8.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config/index.d.ts +3 -3
- package/controllers/index.d.ts +3 -3
- package/controllers/language.controller.d.ts +4 -4
- package/controllers/translation-key.controller.d.ts +3 -3
- package/controllers/translation.controller.d.ts +4 -4
- package/docs/index.d.ts +1 -1
- package/docs/localization-swagger.config.d.ts +1 -1
- package/dtos/index.d.ts +3 -3
- package/dtos/translation.dto.d.ts +2 -2
- package/entities/index.d.ts +6 -6
- package/entities/language.entity.d.ts +1 -1
- package/entities/translation-key.entity.d.ts +1 -1
- package/entities/translation.entity.d.ts +2 -2
- package/fesm/349.js +1179 -0
- package/fesm/692.js +1205 -0
- package/fesm/config/index.js +101 -3
- package/fesm/controllers/index.js +15 -3
- package/fesm/docs/index.js +126 -1
- package/fesm/dtos/index.js +680 -3
- package/fesm/entities/index.js +405 -8
- package/fesm/index.js +257 -7
- package/fesm/interfaces/index.js +18 -4
- package/fesm/modules/index.js +152 -1
- package/fesm/runtime.js +85 -0
- package/fesm/services/index.js +15 -5
- package/index.d.ts +7 -7
- package/interfaces/index.d.ts +4 -4
- package/interfaces/language.interface.d.ts +1 -1
- package/interfaces/localization-module-options.interface.d.ts +3 -3
- package/interfaces/translation-key.interface.d.ts +1 -1
- package/interfaces/translation.interface.d.ts +3 -3
- package/modules/index.d.ts +1 -1
- package/modules/localization.module.d.ts +2 -2
- package/package.json +25 -34
- package/services/index.d.ts +5 -5
- package/services/language.service.d.ts +6 -6
- package/services/localization-config.service.d.ts +3 -3
- package/services/localization-datasource.provider.d.ts +3 -3
- package/services/translation-key.service.d.ts +6 -6
- package/services/translation.service.d.ts +5 -5
- package/cjs/config/event-actions.js +0 -33
- package/cjs/config/index.js +0 -20
- package/cjs/config/localization.constants.js +0 -11
- package/cjs/config/message-keys.js +0 -41
- package/cjs/controllers/index.js +0 -20
- package/cjs/controllers/language.controller.js +0 -188
- package/cjs/controllers/language.controller.spec.js +0 -154
- package/cjs/controllers/translation-key.controller.js +0 -135
- package/cjs/controllers/translation-key.controller.spec.js +0 -70
- package/cjs/controllers/translation.controller.js +0 -195
- package/cjs/controllers/translation.controller.spec.js +0 -169
- package/cjs/docs/index.js +0 -11
- package/cjs/docs/localization-swagger.config.js +0 -111
- package/cjs/docs/localization-swagger.config.spec.js +0 -30
- package/cjs/dtos/index.js +0 -20
- package/cjs/dtos/language.dto.js +0 -213
- package/cjs/dtos/translation-key.dto.js +0 -215
- package/cjs/dtos/translation.dto.js +0 -269
- package/cjs/entities/index.js +0 -42
- package/cjs/entities/index.spec.js +0 -18
- package/cjs/entities/language.entity.js +0 -126
- package/cjs/entities/translation-key.entity.js +0 -126
- package/cjs/entities/translation.entity.js +0 -120
- package/cjs/index.js +0 -24
- package/cjs/interfaces/index.js +0 -21
- package/cjs/interfaces/language.interface.js +0 -4
- package/cjs/interfaces/localization-module-options.interface.js +0 -4
- package/cjs/interfaces/translation-key.interface.js +0 -4
- package/cjs/interfaces/translation.interface.js +0 -4
- package/cjs/modules/index.js +0 -18
- package/cjs/modules/localization.module.js +0 -116
- package/cjs/modules/localization.module.spec.js +0 -132
- package/cjs/services/index.js +0 -22
- package/cjs/services/language.service.js +0 -181
- package/cjs/services/language.service.spec.js +0 -256
- package/cjs/services/localization-config.service.js +0 -66
- package/cjs/services/localization-config.service.spec.js +0 -80
- package/cjs/services/localization-datasource.provider.js +0 -79
- package/cjs/services/localization-datasource.provider.spec.js +0 -85
- package/cjs/services/translation-key.service.js +0 -179
- package/cjs/services/translation-key.service.spec.js +0 -303
- package/cjs/services/translation.service.js +0 -228
- package/cjs/services/translation.service.spec.js +0 -530
- package/fesm/config/event-actions.js +0 -12
- package/fesm/config/localization.constants.js +0 -1
- package/fesm/config/message-keys.js +0 -20
- package/fesm/controllers/language.controller.js +0 -178
- package/fesm/controllers/language.controller.spec.js +0 -150
- package/fesm/controllers/translation-key.controller.js +0 -125
- package/fesm/controllers/translation-key.controller.spec.js +0 -66
- package/fesm/controllers/translation.controller.js +0 -185
- package/fesm/controllers/translation.controller.spec.js +0 -165
- package/fesm/docs/localization-swagger.config.js +0 -101
- package/fesm/docs/localization-swagger.config.spec.js +0 -26
- package/fesm/dtos/language.dto.js +0 -192
- package/fesm/dtos/translation-key.dto.js +0 -194
- package/fesm/dtos/translation.dto.js +0 -239
- package/fesm/entities/index.spec.js +0 -14
- package/fesm/entities/language.entity.js +0 -116
- package/fesm/entities/translation-key.entity.js +0 -116
- package/fesm/entities/translation.entity.js +0 -110
- package/fesm/interfaces/language.interface.js +0 -1
- package/fesm/interfaces/localization-module-options.interface.js +0 -1
- package/fesm/interfaces/translation-key.interface.js +0 -1
- package/fesm/interfaces/translation.interface.js +0 -1
- package/fesm/modules/localization.module.js +0 -106
- package/fesm/modules/localization.module.spec.js +0 -128
- package/fesm/services/language.service.js +0 -171
- package/fesm/services/language.service.spec.js +0 -252
- package/fesm/services/localization-config.service.js +0 -56
- package/fesm/services/localization-config.service.spec.js +0 -76
- package/fesm/services/localization-datasource.provider.js +0 -69
- package/fesm/services/localization-datasource.provider.spec.js +0 -81
- package/fesm/services/translation-key.service.js +0 -169
- package/fesm/services/translation-key.service.spec.js +0 -299
- package/fesm/services/translation.service.js +0 -218
- package/fesm/services/translation.service.spec.js +0 -526
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
// ==================== LOCALIZATION MODULE MESSAGE KEYS ====================
|
|
2
|
-
"use strict";
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
function _export(target, all) {
|
|
7
|
-
for(var name in all)Object.defineProperty(target, name, {
|
|
8
|
-
enumerable: true,
|
|
9
|
-
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
10
|
-
});
|
|
11
|
-
}
|
|
12
|
-
_export(exports, {
|
|
13
|
-
get LANGUAGE_MESSAGES () {
|
|
14
|
-
return LANGUAGE_MESSAGES;
|
|
15
|
-
},
|
|
16
|
-
get TRANSLATION_KEY_MESSAGES () {
|
|
17
|
-
return TRANSLATION_KEY_MESSAGES;
|
|
18
|
-
},
|
|
19
|
-
get TRANSLATION_MESSAGES () {
|
|
20
|
-
return TRANSLATION_MESSAGES;
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
const LANGUAGE_MESSAGES = {
|
|
24
|
-
ACTIVE_SUCCESS: 'language.active.success',
|
|
25
|
-
SET_DEFAULT_SUCCESS: 'language.set.default.success',
|
|
26
|
-
GET_DEFAULT_SUCCESS: 'language.get.default.success',
|
|
27
|
-
READONLY_UPDATE_FORBIDDEN: 'language.readonly.update.forbidden',
|
|
28
|
-
READONLY_DELETE_FORBIDDEN: 'language.readonly.delete.forbidden',
|
|
29
|
-
DEFAULT_DELETE_FORBIDDEN: 'language.default.delete.forbidden'
|
|
30
|
-
};
|
|
31
|
-
const TRANSLATION_KEY_MESSAGES = {
|
|
32
|
-
MODULES_SUCCESS: 'translation.key.modules.success',
|
|
33
|
-
READONLY_DELETE_FORBIDDEN: 'translation.key.readonly.delete.forbidden',
|
|
34
|
-
READONLY_UPDATE_FORBIDDEN: 'translation.key.readonly.update.forbidden',
|
|
35
|
-
DUPLICATE_KEY_IN_MODULE: 'translation.key.duplicate.key.in.module'
|
|
36
|
-
};
|
|
37
|
-
const TRANSLATION_MESSAGES = {
|
|
38
|
-
GET_ALL_SUCCESS: 'translation.get.all.success',
|
|
39
|
-
UPDATE_MANY_SUCCESS: 'translation.update.many.success',
|
|
40
|
-
BY_LANGUAGE_SUCCESS: 'translation.by.language.success'
|
|
41
|
-
};
|
package/cjs/controllers/index.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
_export_star(require("./language.controller"), exports);
|
|
6
|
-
_export_star(require("./translation-key.controller"), exports);
|
|
7
|
-
_export_star(require("./translation.controller"), exports);
|
|
8
|
-
function _export_star(from, to) {
|
|
9
|
-
Object.keys(from).forEach(function(k) {
|
|
10
|
-
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
|
|
11
|
-
Object.defineProperty(to, k, {
|
|
12
|
-
enumerable: true,
|
|
13
|
-
get: function() {
|
|
14
|
-
return from[k];
|
|
15
|
-
}
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
return from;
|
|
20
|
-
}
|
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "LanguageController", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return LanguageController;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _classes = require("@flusys/nestjs-shared/classes");
|
|
12
|
-
const _decorators = require("@flusys/nestjs-shared/decorators");
|
|
13
|
-
const _guards = require("@flusys/nestjs-shared/guards");
|
|
14
|
-
const _interfaces = require("@flusys/nestjs-shared/interfaces");
|
|
15
|
-
const _common = require("@nestjs/common");
|
|
16
|
-
const _swagger = require("@nestjs/swagger");
|
|
17
|
-
const _config = require("../config");
|
|
18
|
-
const _dtos = require("../dtos");
|
|
19
|
-
const _services = require("../services");
|
|
20
|
-
function _define_property(obj, key, value) {
|
|
21
|
-
if (key in obj) {
|
|
22
|
-
Object.defineProperty(obj, key, {
|
|
23
|
-
value: value,
|
|
24
|
-
enumerable: true,
|
|
25
|
-
configurable: true,
|
|
26
|
-
writable: true
|
|
27
|
-
});
|
|
28
|
-
} else {
|
|
29
|
-
obj[key] = value;
|
|
30
|
-
}
|
|
31
|
-
return obj;
|
|
32
|
-
}
|
|
33
|
-
function _ts_decorate(decorators, target, key, desc) {
|
|
34
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
35
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
36
|
-
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
37
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
38
|
-
}
|
|
39
|
-
function _ts_metadata(k, v) {
|
|
40
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
41
|
-
}
|
|
42
|
-
function _ts_param(paramIndex, decorator) {
|
|
43
|
-
return function(target, key) {
|
|
44
|
-
decorator(target, key, paramIndex);
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
let LanguageController = class LanguageController extends (0, _classes.createApiController)(_dtos.CreateLanguageDto, _dtos.UpdateLanguageDto, _dtos.LanguageResponseDto, {
|
|
48
|
-
entityName: 'language',
|
|
49
|
-
security: {
|
|
50
|
-
insert: {
|
|
51
|
-
level: 'permission',
|
|
52
|
-
permissions: [
|
|
53
|
-
_classes.LANGUAGE_PERMISSIONS.CREATE
|
|
54
|
-
]
|
|
55
|
-
},
|
|
56
|
-
insertMany: {
|
|
57
|
-
level: 'permission',
|
|
58
|
-
permissions: [
|
|
59
|
-
_classes.LANGUAGE_PERMISSIONS.CREATE
|
|
60
|
-
]
|
|
61
|
-
},
|
|
62
|
-
getById: {
|
|
63
|
-
level: 'permission',
|
|
64
|
-
permissions: [
|
|
65
|
-
_classes.LANGUAGE_PERMISSIONS.READ
|
|
66
|
-
]
|
|
67
|
-
},
|
|
68
|
-
getAll: {
|
|
69
|
-
level: 'permission',
|
|
70
|
-
permissions: [
|
|
71
|
-
_classes.LANGUAGE_PERMISSIONS.READ
|
|
72
|
-
]
|
|
73
|
-
},
|
|
74
|
-
update: {
|
|
75
|
-
level: 'permission',
|
|
76
|
-
permissions: [
|
|
77
|
-
_classes.LANGUAGE_PERMISSIONS.UPDATE
|
|
78
|
-
]
|
|
79
|
-
},
|
|
80
|
-
updateMany: {
|
|
81
|
-
level: 'permission',
|
|
82
|
-
permissions: [
|
|
83
|
-
_classes.LANGUAGE_PERMISSIONS.UPDATE
|
|
84
|
-
]
|
|
85
|
-
},
|
|
86
|
-
delete: {
|
|
87
|
-
level: 'permission',
|
|
88
|
-
permissions: [
|
|
89
|
-
_classes.LANGUAGE_PERMISSIONS.DELETE
|
|
90
|
-
]
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}) {
|
|
94
|
-
async getActive() {
|
|
95
|
-
const data = await this.service.getActiveLanguages();
|
|
96
|
-
return {
|
|
97
|
-
success: true,
|
|
98
|
-
message: 'Active languages retrieved successfully',
|
|
99
|
-
messageKey: _config.LANGUAGE_MESSAGES.ACTIVE_SUCCESS,
|
|
100
|
-
data,
|
|
101
|
-
meta: {
|
|
102
|
-
total: data.length,
|
|
103
|
-
page: 0,
|
|
104
|
-
pageSize: data.length,
|
|
105
|
-
count: data.length
|
|
106
|
-
}
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
async getDefault() {
|
|
110
|
-
const data = await this.service.getDefaultLanguage();
|
|
111
|
-
return {
|
|
112
|
-
success: true,
|
|
113
|
-
message: 'Default language retrieved successfully',
|
|
114
|
-
messageKey: _config.LANGUAGE_MESSAGES.GET_DEFAULT_SUCCESS,
|
|
115
|
-
data: data ?? undefined
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
async setDefault(body, _user) {
|
|
119
|
-
const data = await this.service.setAsDefault(body.id);
|
|
120
|
-
return {
|
|
121
|
-
success: true,
|
|
122
|
-
message: 'Default language updated successfully',
|
|
123
|
-
messageKey: _config.LANGUAGE_MESSAGES.SET_DEFAULT_SUCCESS,
|
|
124
|
-
data: data ?? undefined
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
constructor(service){
|
|
128
|
-
super(service), _define_property(this, "service", void 0), this.service = service;
|
|
129
|
-
}
|
|
130
|
-
};
|
|
131
|
-
_ts_decorate([
|
|
132
|
-
(0, _common.Post)('get-active'),
|
|
133
|
-
(0, _swagger.ApiOperation)({
|
|
134
|
-
summary: 'Get all active languages'
|
|
135
|
-
}),
|
|
136
|
-
(0, _swagger.ApiResponse)({
|
|
137
|
-
status: 200,
|
|
138
|
-
type: [
|
|
139
|
-
_dtos.LanguageResponseDto
|
|
140
|
-
]
|
|
141
|
-
}),
|
|
142
|
-
_ts_metadata("design:type", Function),
|
|
143
|
-
_ts_metadata("design:paramtypes", []),
|
|
144
|
-
_ts_metadata("design:returntype", Promise)
|
|
145
|
-
], LanguageController.prototype, "getActive", null);
|
|
146
|
-
_ts_decorate([
|
|
147
|
-
(0, _common.Post)('get-default'),
|
|
148
|
-
(0, _swagger.ApiOperation)({
|
|
149
|
-
summary: 'Get default language'
|
|
150
|
-
}),
|
|
151
|
-
(0, _swagger.ApiResponse)({
|
|
152
|
-
status: 200,
|
|
153
|
-
type: _dtos.LanguageResponseDto
|
|
154
|
-
}),
|
|
155
|
-
_ts_metadata("design:type", Function),
|
|
156
|
-
_ts_metadata("design:paramtypes", []),
|
|
157
|
-
_ts_metadata("design:returntype", Promise)
|
|
158
|
-
], LanguageController.prototype, "getDefault", null);
|
|
159
|
-
_ts_decorate([
|
|
160
|
-
(0, _common.Post)('set-default'),
|
|
161
|
-
(0, _common.UseGuards)(_guards.JwtAuthGuard, _guards.PermissionGuard),
|
|
162
|
-
(0, _swagger.ApiBearerAuth)(),
|
|
163
|
-
(0, _decorators.RequirePermission)(_classes.LANGUAGE_PERMISSIONS.UPDATE),
|
|
164
|
-
(0, _swagger.ApiOperation)({
|
|
165
|
-
summary: 'Set a language as default'
|
|
166
|
-
}),
|
|
167
|
-
(0, _swagger.ApiResponse)({
|
|
168
|
-
status: 200,
|
|
169
|
-
type: _dtos.LanguageResponseDto
|
|
170
|
-
}),
|
|
171
|
-
_ts_param(0, (0, _common.Body)()),
|
|
172
|
-
_ts_param(1, (0, _decorators.CurrentUser)()),
|
|
173
|
-
_ts_metadata("design:type", Function),
|
|
174
|
-
_ts_metadata("design:paramtypes", [
|
|
175
|
-
Object,
|
|
176
|
-
typeof _interfaces.ILoggedUserInfo === "undefined" ? Object : _interfaces.ILoggedUserInfo
|
|
177
|
-
]),
|
|
178
|
-
_ts_metadata("design:returntype", Promise)
|
|
179
|
-
], LanguageController.prototype, "setDefault", null);
|
|
180
|
-
LanguageController = _ts_decorate([
|
|
181
|
-
(0, _swagger.ApiTags)('Localization - Language'),
|
|
182
|
-
(0, _common.Controller)('localization/language'),
|
|
183
|
-
_ts_param(0, (0, _common.Inject)(_services.LanguageService)),
|
|
184
|
-
_ts_metadata("design:type", Function),
|
|
185
|
-
_ts_metadata("design:paramtypes", [
|
|
186
|
-
typeof _services.LanguageService === "undefined" ? Object : _services.LanguageService
|
|
187
|
-
])
|
|
188
|
-
], LanguageController);
|
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
const _testing = require("@nestjs/testing");
|
|
6
|
-
const _modules = require("@flusys/nestjs-shared/modules");
|
|
7
|
-
const _loggedusermock = require("@test-utils/mocks/logged-user.mock");
|
|
8
|
-
const _languagecontroller = require("./language.controller");
|
|
9
|
-
const _services = require("../services");
|
|
10
|
-
function buildLanguage(overrides = {}) {
|
|
11
|
-
return {
|
|
12
|
-
id: 'lang-en',
|
|
13
|
-
code: 'en',
|
|
14
|
-
name: 'English',
|
|
15
|
-
nativeName: 'English',
|
|
16
|
-
direction: 'ltr',
|
|
17
|
-
isActive: true,
|
|
18
|
-
isDefault: false,
|
|
19
|
-
serial: 1,
|
|
20
|
-
isReadonly: false,
|
|
21
|
-
createdAt: new Date(),
|
|
22
|
-
updatedAt: new Date(),
|
|
23
|
-
deletedAt: null,
|
|
24
|
-
createdById: null,
|
|
25
|
-
updatedById: null,
|
|
26
|
-
deletedById: null,
|
|
27
|
-
...overrides
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
describe('LanguageController', ()=>{
|
|
31
|
-
let controller;
|
|
32
|
-
let mockService;
|
|
33
|
-
beforeEach(async ()=>{
|
|
34
|
-
mockService = {
|
|
35
|
-
insert: jest.fn(),
|
|
36
|
-
findById: jest.fn(),
|
|
37
|
-
getAll: jest.fn(),
|
|
38
|
-
update: jest.fn(),
|
|
39
|
-
delete: jest.fn(),
|
|
40
|
-
getActiveLanguages: jest.fn(),
|
|
41
|
-
getDefaultLanguage: jest.fn(),
|
|
42
|
-
setAsDefault: jest.fn()
|
|
43
|
-
};
|
|
44
|
-
const module = await _testing.Test.createTestingModule({
|
|
45
|
-
controllers: [
|
|
46
|
-
_languagecontroller.LanguageController
|
|
47
|
-
],
|
|
48
|
-
providers: [
|
|
49
|
-
{
|
|
50
|
-
provide: _services.LanguageService,
|
|
51
|
-
useValue: mockService
|
|
52
|
-
},
|
|
53
|
-
// The base ApiController wires the Slug interceptor (needs UtilsService) on several
|
|
54
|
-
// inherited endpoints, so it must be resolvable even though these tests only hit custom routes.
|
|
55
|
-
{
|
|
56
|
-
provide: _modules.UtilsService,
|
|
57
|
-
useValue: {}
|
|
58
|
-
}
|
|
59
|
-
]
|
|
60
|
-
}).compile();
|
|
61
|
-
controller = module.get(_languagecontroller.LanguageController);
|
|
62
|
-
});
|
|
63
|
-
describe('getActive', ()=>{
|
|
64
|
-
it('returns all active languages with a full-length meta block', async ()=>{
|
|
65
|
-
const languages = [
|
|
66
|
-
buildLanguage({
|
|
67
|
-
code: 'en'
|
|
68
|
-
}),
|
|
69
|
-
buildLanguage({
|
|
70
|
-
id: 'lang-bn',
|
|
71
|
-
code: 'bn'
|
|
72
|
-
})
|
|
73
|
-
];
|
|
74
|
-
mockService.getActiveLanguages.mockResolvedValue(languages);
|
|
75
|
-
const result = await controller.getActive();
|
|
76
|
-
expect(result).toEqual({
|
|
77
|
-
success: true,
|
|
78
|
-
message: 'Active languages retrieved successfully',
|
|
79
|
-
messageKey: 'language.active.success',
|
|
80
|
-
data: languages,
|
|
81
|
-
meta: {
|
|
82
|
-
total: 2,
|
|
83
|
-
page: 0,
|
|
84
|
-
pageSize: 2,
|
|
85
|
-
count: 2
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
});
|
|
89
|
-
it('returns an empty list with zeroed meta when no languages are active', async ()=>{
|
|
90
|
-
mockService.getActiveLanguages.mockResolvedValue([]);
|
|
91
|
-
const result = await controller.getActive();
|
|
92
|
-
expect(result.data).toEqual([]);
|
|
93
|
-
expect(result.meta).toEqual({
|
|
94
|
-
total: 0,
|
|
95
|
-
page: 0,
|
|
96
|
-
pageSize: 0,
|
|
97
|
-
count: 0
|
|
98
|
-
});
|
|
99
|
-
});
|
|
100
|
-
});
|
|
101
|
-
describe('getDefault', ()=>{
|
|
102
|
-
it('returns the default language', async ()=>{
|
|
103
|
-
const defaultLanguage = buildLanguage({
|
|
104
|
-
isDefault: true
|
|
105
|
-
});
|
|
106
|
-
mockService.getDefaultLanguage.mockResolvedValue(defaultLanguage);
|
|
107
|
-
const result = await controller.getDefault();
|
|
108
|
-
expect(result).toEqual({
|
|
109
|
-
success: true,
|
|
110
|
-
message: 'Default language retrieved successfully',
|
|
111
|
-
messageKey: 'language.get.default.success',
|
|
112
|
-
data: defaultLanguage
|
|
113
|
-
});
|
|
114
|
-
});
|
|
115
|
-
it('falls back to undefined data when no default language is configured', async ()=>{
|
|
116
|
-
mockService.getDefaultLanguage.mockResolvedValue(null);
|
|
117
|
-
const result = await controller.getDefault();
|
|
118
|
-
expect(result.data).toBeUndefined();
|
|
119
|
-
expect(result.success).toBe(true);
|
|
120
|
-
});
|
|
121
|
-
});
|
|
122
|
-
describe('setDefault', ()=>{
|
|
123
|
-
it('sets the given language id as default and returns it', async ()=>{
|
|
124
|
-
const updated = buildLanguage({
|
|
125
|
-
id: 'lang-bn',
|
|
126
|
-
isDefault: true
|
|
127
|
-
});
|
|
128
|
-
mockService.setAsDefault.mockResolvedValue(updated);
|
|
129
|
-
const result = await controller.setDefault({
|
|
130
|
-
id: 'lang-bn'
|
|
131
|
-
}, (0, _loggedusermock.buildMockUser)());
|
|
132
|
-
expect(mockService.setAsDefault).toHaveBeenCalledWith('lang-bn');
|
|
133
|
-
expect(result).toEqual({
|
|
134
|
-
success: true,
|
|
135
|
-
message: 'Default language updated successfully',
|
|
136
|
-
messageKey: 'language.set.default.success',
|
|
137
|
-
data: updated
|
|
138
|
-
});
|
|
139
|
-
});
|
|
140
|
-
it('returns undefined data when the id does not match any language', async ()=>{
|
|
141
|
-
mockService.setAsDefault.mockResolvedValue(null);
|
|
142
|
-
const result = await controller.setDefault({
|
|
143
|
-
id: 'unknown-id'
|
|
144
|
-
}, (0, _loggedusermock.buildMockUser)());
|
|
145
|
-
expect(result.data).toBeUndefined();
|
|
146
|
-
});
|
|
147
|
-
it('propagates errors raised by the service unchanged', async ()=>{
|
|
148
|
-
mockService.setAsDefault.mockRejectedValue(new Error('database unavailable'));
|
|
149
|
-
await expect(controller.setDefault({
|
|
150
|
-
id: 'lang-en'
|
|
151
|
-
}, (0, _loggedusermock.buildMockUser)())).rejects.toThrow('database unavailable');
|
|
152
|
-
});
|
|
153
|
-
});
|
|
154
|
-
});
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "TranslationKeyController", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return TranslationKeyController;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _classes = require("@flusys/nestjs-shared/classes");
|
|
12
|
-
const _decorators = require("@flusys/nestjs-shared/decorators");
|
|
13
|
-
const _guards = require("@flusys/nestjs-shared/guards");
|
|
14
|
-
const _interfaces = require("@flusys/nestjs-shared/interfaces");
|
|
15
|
-
const _common = require("@nestjs/common");
|
|
16
|
-
const _swagger = require("@nestjs/swagger");
|
|
17
|
-
const _config = require("../config");
|
|
18
|
-
const _dtos = require("../dtos");
|
|
19
|
-
const _services = require("../services");
|
|
20
|
-
function _define_property(obj, key, value) {
|
|
21
|
-
if (key in obj) {
|
|
22
|
-
Object.defineProperty(obj, key, {
|
|
23
|
-
value: value,
|
|
24
|
-
enumerable: true,
|
|
25
|
-
configurable: true,
|
|
26
|
-
writable: true
|
|
27
|
-
});
|
|
28
|
-
} else {
|
|
29
|
-
obj[key] = value;
|
|
30
|
-
}
|
|
31
|
-
return obj;
|
|
32
|
-
}
|
|
33
|
-
function _ts_decorate(decorators, target, key, desc) {
|
|
34
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
35
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
36
|
-
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
37
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
38
|
-
}
|
|
39
|
-
function _ts_metadata(k, v) {
|
|
40
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
41
|
-
}
|
|
42
|
-
function _ts_param(paramIndex, decorator) {
|
|
43
|
-
return function(target, key) {
|
|
44
|
-
decorator(target, key, paramIndex);
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
let TranslationKeyController = class TranslationKeyController extends (0, _classes.createApiController)(_dtos.CreateTranslationKeyDto, _dtos.UpdateTranslationKeyDto, _dtos.TranslationKeyResponseDto, {
|
|
48
|
-
entityName: 'translation.key',
|
|
49
|
-
security: {
|
|
50
|
-
insert: {
|
|
51
|
-
level: 'permission',
|
|
52
|
-
permissions: [
|
|
53
|
-
_classes.TRANSLATION_KEY_PERMISSIONS.CREATE
|
|
54
|
-
]
|
|
55
|
-
},
|
|
56
|
-
insertMany: {
|
|
57
|
-
level: 'permission',
|
|
58
|
-
permissions: [
|
|
59
|
-
_classes.TRANSLATION_KEY_PERMISSIONS.CREATE
|
|
60
|
-
]
|
|
61
|
-
},
|
|
62
|
-
getById: {
|
|
63
|
-
level: 'permission',
|
|
64
|
-
permissions: [
|
|
65
|
-
_classes.TRANSLATION_KEY_PERMISSIONS.READ
|
|
66
|
-
]
|
|
67
|
-
},
|
|
68
|
-
getAll: {
|
|
69
|
-
level: 'permission',
|
|
70
|
-
permissions: [
|
|
71
|
-
_classes.TRANSLATION_KEY_PERMISSIONS.READ
|
|
72
|
-
]
|
|
73
|
-
},
|
|
74
|
-
update: {
|
|
75
|
-
level: 'permission',
|
|
76
|
-
permissions: [
|
|
77
|
-
_classes.TRANSLATION_KEY_PERMISSIONS.UPDATE
|
|
78
|
-
]
|
|
79
|
-
},
|
|
80
|
-
updateMany: {
|
|
81
|
-
level: 'permission',
|
|
82
|
-
permissions: [
|
|
83
|
-
_classes.TRANSLATION_KEY_PERMISSIONS.UPDATE
|
|
84
|
-
]
|
|
85
|
-
},
|
|
86
|
-
delete: {
|
|
87
|
-
level: 'permission',
|
|
88
|
-
permissions: [
|
|
89
|
-
_classes.TRANSLATION_KEY_PERMISSIONS.DELETE
|
|
90
|
-
]
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}) {
|
|
94
|
-
async getModules(_user) {
|
|
95
|
-
const data = await this.service.getModules();
|
|
96
|
-
return {
|
|
97
|
-
success: true,
|
|
98
|
-
message: 'Modules retrieved successfully',
|
|
99
|
-
messageKey: _config.TRANSLATION_KEY_MESSAGES.MODULES_SUCCESS,
|
|
100
|
-
data
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
constructor(service){
|
|
104
|
-
super(service), _define_property(this, "service", void 0), this.service = service;
|
|
105
|
-
}
|
|
106
|
-
};
|
|
107
|
-
_ts_decorate([
|
|
108
|
-
(0, _common.Post)('get-modules'),
|
|
109
|
-
(0, _common.UseGuards)(_guards.JwtAuthGuard),
|
|
110
|
-
(0, _swagger.ApiBearerAuth)(),
|
|
111
|
-
(0, _swagger.ApiOperation)({
|
|
112
|
-
summary: 'Get all distinct module names'
|
|
113
|
-
}),
|
|
114
|
-
(0, _swagger.ApiResponse)({
|
|
115
|
-
status: 200,
|
|
116
|
-
type: [
|
|
117
|
-
String
|
|
118
|
-
]
|
|
119
|
-
}),
|
|
120
|
-
_ts_param(0, (0, _decorators.CurrentUser)()),
|
|
121
|
-
_ts_metadata("design:type", Function),
|
|
122
|
-
_ts_metadata("design:paramtypes", [
|
|
123
|
-
typeof _interfaces.ILoggedUserInfo === "undefined" ? Object : _interfaces.ILoggedUserInfo
|
|
124
|
-
]),
|
|
125
|
-
_ts_metadata("design:returntype", Promise)
|
|
126
|
-
], TranslationKeyController.prototype, "getModules", null);
|
|
127
|
-
TranslationKeyController = _ts_decorate([
|
|
128
|
-
(0, _swagger.ApiTags)('Localization - Translation Key'),
|
|
129
|
-
(0, _common.Controller)('localization/translation-key'),
|
|
130
|
-
_ts_param(0, (0, _common.Inject)(_services.TranslationKeyService)),
|
|
131
|
-
_ts_metadata("design:type", Function),
|
|
132
|
-
_ts_metadata("design:paramtypes", [
|
|
133
|
-
typeof _services.TranslationKeyService === "undefined" ? Object : _services.TranslationKeyService
|
|
134
|
-
])
|
|
135
|
-
], TranslationKeyController);
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
const _testing = require("@nestjs/testing");
|
|
6
|
-
const _modules = require("@flusys/nestjs-shared/modules");
|
|
7
|
-
const _loggedusermock = require("@test-utils/mocks/logged-user.mock");
|
|
8
|
-
const _translationkeycontroller = require("./translation-key.controller");
|
|
9
|
-
const _services = require("../services");
|
|
10
|
-
describe('TranslationKeyController', ()=>{
|
|
11
|
-
let controller;
|
|
12
|
-
let mockService;
|
|
13
|
-
beforeEach(async ()=>{
|
|
14
|
-
mockService = {
|
|
15
|
-
insert: jest.fn(),
|
|
16
|
-
findById: jest.fn(),
|
|
17
|
-
getAll: jest.fn(),
|
|
18
|
-
update: jest.fn(),
|
|
19
|
-
delete: jest.fn(),
|
|
20
|
-
getModules: jest.fn(),
|
|
21
|
-
findByModule: jest.fn()
|
|
22
|
-
};
|
|
23
|
-
const module = await _testing.Test.createTestingModule({
|
|
24
|
-
controllers: [
|
|
25
|
-
_translationkeycontroller.TranslationKeyController
|
|
26
|
-
],
|
|
27
|
-
providers: [
|
|
28
|
-
{
|
|
29
|
-
provide: _services.TranslationKeyService,
|
|
30
|
-
useValue: mockService
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
provide: _modules.UtilsService,
|
|
34
|
-
useValue: {}
|
|
35
|
-
}
|
|
36
|
-
]
|
|
37
|
-
}).compile();
|
|
38
|
-
controller = module.get(_translationkeycontroller.TranslationKeyController);
|
|
39
|
-
});
|
|
40
|
-
describe('getModules', ()=>{
|
|
41
|
-
it('returns the distinct module names from the service', async ()=>{
|
|
42
|
-
mockService.getModules.mockResolvedValue([
|
|
43
|
-
'auth',
|
|
44
|
-
'shared',
|
|
45
|
-
'storage'
|
|
46
|
-
]);
|
|
47
|
-
const result = await controller.getModules((0, _loggedusermock.buildMockUser)());
|
|
48
|
-
expect(result).toEqual({
|
|
49
|
-
success: true,
|
|
50
|
-
message: 'Modules retrieved successfully',
|
|
51
|
-
messageKey: 'translation.key.modules.success',
|
|
52
|
-
data: [
|
|
53
|
-
'auth',
|
|
54
|
-
'shared',
|
|
55
|
-
'storage'
|
|
56
|
-
]
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
it('returns an empty array when no translation keys have been created yet', async ()=>{
|
|
60
|
-
mockService.getModules.mockResolvedValue([]);
|
|
61
|
-
const result = await controller.getModules((0, _loggedusermock.buildMockUser)());
|
|
62
|
-
expect(result.data).toEqual([]);
|
|
63
|
-
expect(result.success).toBe(true);
|
|
64
|
-
});
|
|
65
|
-
it('propagates unexpected errors from the service', async ()=>{
|
|
66
|
-
mockService.getModules.mockRejectedValue(new Error('query failed'));
|
|
67
|
-
await expect(controller.getModules((0, _loggedusermock.buildMockUser)())).rejects.toThrow('query failed');
|
|
68
|
-
});
|
|
69
|
-
});
|
|
70
|
-
});
|