awing-library 2.1.95-beta → 2.1.97-beta

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.
Files changed (67) hide show
  1. package/lib/ACM-AXN/CampaignSchedule/Components/RowAdvance/container.js +42 -41
  2. package/lib/ACM-AXN/Page/CreateOrEdit/Components/useListPageView.js +9 -4
  3. package/lib/ACM-AXN/Page/CreateOrEdit/Recoil.d.ts +2 -1
  4. package/lib/ACM-AXN/Page/CreateOrEdit/Recoil.js +14 -1
  5. package/lib/ACM-AXN/Page/CreateOrEdit/TabFile/FileUtils.d.ts +3 -1
  6. package/lib/ACM-AXN/Page/CreateOrEdit/TabFile/FileUtils.js +1 -6
  7. package/lib/ACM-AXN/Page/CreateOrEdit/TabFile/index.d.ts +7 -0
  8. package/lib/ACM-AXN/Page/CreateOrEdit/TabFile/index.js +13 -15
  9. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/ViewContent.js +23 -2
  10. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/ViewInfo.d.ts +3 -2
  11. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/index.test.js +2 -1
  12. package/lib/ACM-AXN/Page/CreateOrEdit/Utils.d.ts +4 -3
  13. package/lib/ACM-AXN/Page/CreateOrEdit/Utils.js +4 -2
  14. package/lib/ACM-AXN/Page/Types.d.ts +10 -37
  15. package/lib/ACM-AXN/Page/enums.d.ts +6 -0
  16. package/lib/ACM-AXN/Page/enums.js +8 -1
  17. package/lib/ACM-AXN/Template/Constants.d.ts +0 -0
  18. package/lib/ACM-AXN/Template/Constants.js +1 -0
  19. package/lib/ACM-AXN/Template/Container.d.ts +2 -0
  20. package/lib/ACM-AXN/Template/Container.js +74 -0
  21. package/lib/ACM-AXN/Template/Container.test.d.ts +1 -0
  22. package/lib/ACM-AXN/Template/Container.test.js +259 -0
  23. package/lib/ACM-AXN/Template/CreateOrEdit/CreateOrEdit.test.d.ts +1 -0
  24. package/lib/ACM-AXN/Template/CreateOrEdit/CreateOrEdit.test.js +370 -0
  25. package/lib/ACM-AXN/Template/CreateOrEdit/Infomation.d.ts +9 -0
  26. package/lib/ACM-AXN/Template/CreateOrEdit/Infomation.js +78 -0
  27. package/lib/ACM-AXN/Template/CreateOrEdit/Infomation.test.d.ts +1 -0
  28. package/lib/ACM-AXN/Template/CreateOrEdit/Infomation.test.js +150 -0
  29. package/lib/ACM-AXN/Template/CreateOrEdit/Recoils.d.ts +6 -0
  30. package/lib/ACM-AXN/Template/CreateOrEdit/Recoils.js +79 -0
  31. package/lib/ACM-AXN/Template/CreateOrEdit/Script.d.ts +3 -0
  32. package/lib/ACM-AXN/Template/CreateOrEdit/Script.js +58 -0
  33. package/lib/ACM-AXN/Template/CreateOrEdit/Script.test.d.ts +1 -0
  34. package/lib/ACM-AXN/Template/CreateOrEdit/Script.test.js +162 -0
  35. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Events.d.ts +5 -0
  36. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Events.js +41 -0
  37. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.d.ts +20 -0
  38. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.js +283 -0
  39. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.test.d.ts +1 -0
  40. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.test.js +220 -0
  41. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Utils.d.ts +25 -0
  42. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Utils.js +138 -0
  43. package/lib/ACM-AXN/Template/CreateOrEdit/Template/index.d.ts +3 -0
  44. package/lib/ACM-AXN/Template/CreateOrEdit/Template/index.js +46 -0
  45. package/lib/ACM-AXN/Template/CreateOrEdit/index.d.ts +3 -0
  46. package/lib/ACM-AXN/Template/CreateOrEdit/index.js +215 -0
  47. package/lib/ACM-AXN/Template/Hooks.d.ts +5 -0
  48. package/lib/ACM-AXN/Template/Hooks.js +13 -0
  49. package/lib/ACM-AXN/Template/Import.d.ts +2 -0
  50. package/lib/ACM-AXN/Template/Import.js +123 -0
  51. package/lib/ACM-AXN/Template/Import.test.d.ts +1 -0
  52. package/lib/ACM-AXN/Template/Import.test.js +188 -0
  53. package/lib/ACM-AXN/Template/Types.d.ts +84 -0
  54. package/lib/ACM-AXN/Template/Types.js +2 -0
  55. package/lib/ACM-AXN/Template/UploadButton.d.ts +2 -0
  56. package/lib/ACM-AXN/Template/UploadButton.js +14 -0
  57. package/lib/ACM-AXN/Template/index.d.ts +5 -0
  58. package/lib/ACM-AXN/Template/index.js +44 -0
  59. package/lib/ACM-AXN/ViewTemplate/index.d.ts +2 -1
  60. package/lib/ACM-AXN/ViewTemplate/interface.d.ts +6 -1
  61. package/lib/AWING/HOC/Wrapper.d.ts +6 -0
  62. package/lib/AWING/HOC/Wrapper.js +10 -0
  63. package/lib/translate/en/translation.json +27 -1
  64. package/lib/translate/vi/translation.json +27 -1
  65. package/package.json +1 -1
  66. package/lib/ACM-AXN/Page/CreateOrEdit/TabFile/index.test.d.ts +0 -1
  67. package/lib/ACM-AXN/Page/CreateOrEdit/TabFile/index.test.js +0 -326
@@ -0,0 +1,370 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ var __importDefault = (this && this.__importDefault) || function (mod) {
50
+ return (mod && mod.__esModule) ? mod : { "default": mod };
51
+ };
52
+ Object.defineProperty(exports, "__esModule", { value: true });
53
+ var jsx_runtime_1 = require("react/jsx-runtime");
54
+ /* eslint-disable testing-library/no-wait-for-side-effects */
55
+ require("@testing-library/jest-dom/extend-expect");
56
+ var react_1 = require("@testing-library/react");
57
+ var Router_1 = require("../../../AWING/Router");
58
+ var index_1 = __importDefault(require("./index"));
59
+ var recoil_1 = require("recoil");
60
+ // Mock useParam
61
+ var templateId = 'dat0910jqka';
62
+ jest.mock('AWING/Router', function () { return (__assign(__assign({}, jest.requireActual('AWING/Router')), { useParams: jest.fn() })); });
63
+ // Mock Axios client
64
+ var templateData = {
65
+ template: {
66
+ id: '5679530742832006213',
67
+ directoryId: '5202880755274023966',
68
+ directoryPath: '',
69
+ name: 'video_banner',
70
+ templateHtml: '',
71
+ layoutId: '5197905656409960384',
72
+ pageCode: 'lgn',
73
+ description: '2.[DEFAULT] Banner – animated_v1.1',
74
+ templateTypeId: 3,
75
+ validation: '',
76
+ autoField: '',
77
+ },
78
+ templateParameters: [
79
+ {
80
+ id: '16340',
81
+ templateId: '5679530742832006213',
82
+ fieldName: 'video_banner_1bb',
83
+ fieldType: 'video',
84
+ defaultValue: null,
85
+ labelName: 'File Video',
86
+ isRequired: true,
87
+ childrens: [],
88
+ },
89
+ {
90
+ id: '16341',
91
+ templateId: '5679530742832006213',
92
+ fieldName: 'video_banner_2aa',
93
+ fieldType: 'image',
94
+ defaultValue: null,
95
+ labelName: 'File Poster',
96
+ isRequired: true,
97
+ childrens: [],
98
+ },
99
+ ],
100
+ };
101
+ var templateTypes = [
102
+ {
103
+ id: 1,
104
+ name: 'Banner',
105
+ templateTypeCode: 'lgn',
106
+ },
107
+ {
108
+ id: 5,
109
+ name: 'Customize',
110
+ templateTypeCode: 'lgn',
111
+ },
112
+ {
113
+ id: 7,
114
+ name: 'Customize',
115
+ templateTypeCode: 'wlc',
116
+ },
117
+ ];
118
+ var directories = [
119
+ {
120
+ directoryId: '5202880755274023966',
121
+ name: 'template',
122
+ parentDirectoryId: '4913100144472996590',
123
+ objectTypeCode: 'template',
124
+ level: 3,
125
+ isFile: false,
126
+ isSystem: true,
127
+ order: 0,
128
+ description: null,
129
+ directoryPath: '',
130
+ },
131
+ {
132
+ directoryId: '4736019141892318583',
133
+ name: 'Beta template',
134
+ parentDirectoryId: '5202880755274023966',
135
+ objectTypeCode: 'template',
136
+ level: 4,
137
+ isFile: false,
138
+ isSystem: false,
139
+ order: 0,
140
+ description: '',
141
+ directoryPath: '',
142
+ },
143
+ ];
144
+ var directoryTree = {
145
+ folderChildrens: [
146
+ {
147
+ folderChildrens: [
148
+ {
149
+ folderChildrens: [],
150
+ fileChildrens: [],
151
+ name: 'hu',
152
+ path: '/chào bạn/hu',
153
+ },
154
+ ],
155
+ fileChildrens: [
156
+ {
157
+ name: 'CompressJPEG.online_512x512_image.jpg',
158
+ path: '/chào bạn/CompressJPEG.online_512x512_image.jpg',
159
+ },
160
+ ],
161
+ name: 'chào bạn',
162
+ path: '/chào bạn',
163
+ },
164
+ {
165
+ folderChildrens: [],
166
+ fileChildrens: [],
167
+ name: 'ahihi',
168
+ path: '/ahihi',
169
+ },
170
+ ],
171
+ fileChildrens: [],
172
+ name: '4671435926616395650',
173
+ path: '',
174
+ };
175
+ var generateId = '09090909';
176
+ var clientMethod = {
177
+ templatesGet: function (id) { return Promise.resolve(templateData); },
178
+ templateTypesGet: function () { return Promise.resolve(templateTypes); },
179
+ directoriesGetByObjectTypeCode: function (code) {
180
+ return Promise.resolve(directories);
181
+ },
182
+ directoriesGenerateId: function () { return Promise.resolve(generateId); },
183
+ templatesPut: function () {
184
+ var params = [];
185
+ for (var _i = 0; _i < arguments.length; _i++) {
186
+ params[_i] = arguments[_i];
187
+ }
188
+ return Promise.resolve();
189
+ },
190
+ templatesPost: function () {
191
+ var params = [];
192
+ for (var _i = 0; _i < arguments.length; _i++) {
193
+ params[_i] = arguments[_i];
194
+ }
195
+ return Promise.resolve();
196
+ },
197
+ pageFilesUpdateGetTreeFolder: function () {
198
+ var params = [];
199
+ for (var _i = 0; _i < arguments.length; _i++) {
200
+ params[_i] = arguments[_i];
201
+ }
202
+ return Promise.resolve(directoryTree);
203
+ },
204
+ pageFilesCreateGetTreeFolder: function () {
205
+ var params = [];
206
+ for (var _i = 0; _i < arguments.length; _i++) {
207
+ params[_i] = arguments[_i];
208
+ }
209
+ return Promise.resolve(directoryTree);
210
+ },
211
+ };
212
+ jest.mock('Commons/Client', function () { return ({
213
+ __esModule: true,
214
+ FileTypeCode: {
215
+ Template: 'template',
216
+ },
217
+ DirectoryRoot: {
218
+ Template: 'template',
219
+ },
220
+ TemplateModel: {
221
+ fromJS: function (a) { return a; },
222
+ },
223
+ }); });
224
+ jest.mock('Commons/UseAxiosProvider', function () { return ({
225
+ __esModule: true,
226
+ default: function () { return ({
227
+ client: {
228
+ templatesGet: jest.fn(function (id) {
229
+ return Promise.resolve(clientMethod.templatesGet(id));
230
+ }),
231
+ templateTypesGet: jest.fn(function () {
232
+ return Promise.resolve(clientMethod.templateTypesGet());
233
+ }),
234
+ directoriesGetByObjectTypeCode: jest.fn(function (code) {
235
+ return Promise.resolve(clientMethod.directoriesGetByObjectTypeCode(code));
236
+ }),
237
+ directoriesGenerateId: jest.fn(function () {
238
+ return Promise.resolve(clientMethod.directoriesGenerateId());
239
+ }),
240
+ templatesPut: jest.fn(function () {
241
+ var params = [];
242
+ for (var _i = 0; _i < arguments.length; _i++) {
243
+ params[_i] = arguments[_i];
244
+ }
245
+ return Promise.resolve(clientMethod.templatesPut.apply(clientMethod, params));
246
+ }),
247
+ templatesPost: jest.fn(function () {
248
+ var params = [];
249
+ for (var _i = 0; _i < arguments.length; _i++) {
250
+ params[_i] = arguments[_i];
251
+ }
252
+ return Promise.resolve(clientMethod.templatesPost.apply(clientMethod, params));
253
+ }),
254
+ pageFilesUpdateGetTreeFolder: jest.fn(function () {
255
+ var params = [];
256
+ for (var _i = 0; _i < arguments.length; _i++) {
257
+ params[_i] = arguments[_i];
258
+ }
259
+ return Promise.resolve(clientMethod.pageFilesUpdateGetTreeFolder.apply(clientMethod, params));
260
+ }),
261
+ pageFilesCreateGetTreeFolder: jest.fn(function () {
262
+ var params = [];
263
+ for (var _i = 0; _i < arguments.length; _i++) {
264
+ params[_i] = arguments[_i];
265
+ }
266
+ return Promise.resolve(clientMethod.pageFilesUpdateGetTreeFolder.apply(clientMethod, params));
267
+ }),
268
+ },
269
+ }); },
270
+ }); });
271
+ // Mock Drawer
272
+ jest.mock('awing-library/lib/Commons/Components/ClassicDrawer', function () { return function (props) { return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("p", { children: props.title }), (0, jsx_runtime_1.jsx)("button", { "data-testid": "onSubmit", onClick: props.onSubmit, children: "submit" }), props.children] })); }; });
273
+ // Mock Infomation
274
+ jest.mock('./Infomation', function () { return function (props) { return ((0, jsx_runtime_1.jsx)("div", { children: Object.entries(props).map(function (_a) {
275
+ var key = _a[0], val = _a[1];
276
+ return typeof val === 'function' ? ((0, jsx_runtime_1.jsx)("button", { "data-testid": key, onClick: function () {
277
+ val(function (prev) { return (__assign(__assign({}, prev), { templateTypeId: 8, description: 'description' })); });
278
+ } }, key)) : ((0, jsx_runtime_1.jsx)("p", { "data-testid": key, children: JSON.stringify(val) }, key));
279
+ }) })); }; });
280
+ // Mock Template
281
+ jest.mock('./Template', function () { return function (props) { return (0, jsx_runtime_1.jsx)("div", { children: "Template Tab" }); }; });
282
+ // Mock Template
283
+ jest.mock('./Advance', function () { return function (props) { return (0, jsx_runtime_1.jsx)("div", { children: "Advance Tab" }); }; });
284
+ // Mock FileTab
285
+ jest.mock('./File', function () { return function (props) {
286
+ return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("p", { children: "FileTab Tab" }), (0, jsx_runtime_1.jsx)("button", { "data-testid": "triggerReload", onClick: props.triggerReload })] }));
287
+ }; });
288
+ describe('Template CreateOrEdit component', function () {
289
+ beforeEach(function () {
290
+ ;
291
+ Router_1.useParams.mockReturnValue({ templateId: '' });
292
+ });
293
+ var renderUi = function () {
294
+ return (0, react_1.render)((0, jsx_runtime_1.jsx)(recoil_1.RecoilRoot, { children: (0, jsx_runtime_1.jsx)(Router_1.BrowserRouter, { children: (0, jsx_runtime_1.jsx)(index_1.default, {}) }) }));
295
+ };
296
+ it('render without crash', function () { return __awaiter(void 0, void 0, void 0, function () {
297
+ return __generator(this, function (_a) {
298
+ switch (_a.label) {
299
+ case 0:
300
+ renderUi();
301
+ // eslint-disable-next-line testing-library/no-unnecessary-act
302
+ return [4 /*yield*/, (0, react_1.waitFor)(function () {
303
+ react_1.fireEvent.click(react_1.screen.getByText('TemplateManagement.Information'));
304
+ react_1.fireEvent.click(react_1.screen.getByText('TemplateManagement.Template'));
305
+ react_1.fireEvent.click(react_1.screen.getByText('TemplateManagement.Advance'));
306
+ react_1.fireEvent.click(react_1.screen.getByText('Common.File'));
307
+ react_1.fireEvent.click(react_1.screen.getByTestId('triggerReload'));
308
+ })];
309
+ case 1:
310
+ // eslint-disable-next-line testing-library/no-unnecessary-act
311
+ _a.sent();
312
+ return [2 /*return*/];
313
+ }
314
+ });
315
+ }); });
316
+ it('render with templateId', function () { return __awaiter(void 0, void 0, void 0, function () {
317
+ return __generator(this, function (_a) {
318
+ switch (_a.label) {
319
+ case 0:
320
+ ;
321
+ Router_1.useParams.mockReturnValue({ templateId: templateId });
322
+ renderUi();
323
+ return [4 /*yield*/, (0, react_1.waitFor)(function () {
324
+ expect(react_1.screen.getByText(JSON.stringify(templateData.template))).toBeInTheDocument();
325
+ })];
326
+ case 1:
327
+ _a.sent();
328
+ return [2 /*return*/];
329
+ }
330
+ });
331
+ }); });
332
+ it('Create template', function () { return __awaiter(void 0, void 0, void 0, function () {
333
+ var templatesPostSpy;
334
+ return __generator(this, function (_a) {
335
+ switch (_a.label) {
336
+ case 0:
337
+ templatesPostSpy = jest.spyOn(clientMethod, 'templatesPost');
338
+ renderUi();
339
+ return [4 /*yield*/, (0, react_1.waitFor)(function () {
340
+ react_1.fireEvent.click(react_1.screen.getByTestId('handleTemplateData'));
341
+ react_1.fireEvent.click(react_1.screen.getByTestId('onSubmit'));
342
+ expect(templatesPostSpy).toBeCalled();
343
+ })];
344
+ case 1:
345
+ _a.sent();
346
+ return [2 /*return*/];
347
+ }
348
+ });
349
+ }); });
350
+ it('Edit template', function () { return __awaiter(void 0, void 0, void 0, function () {
351
+ var templatesPutSpy;
352
+ return __generator(this, function (_a) {
353
+ switch (_a.label) {
354
+ case 0:
355
+ ;
356
+ Router_1.useParams.mockReturnValue({ templateId: templateId });
357
+ templatesPutSpy = jest.spyOn(clientMethod, 'templatesPut');
358
+ renderUi();
359
+ return [4 /*yield*/, (0, react_1.waitFor)(function () {
360
+ react_1.fireEvent.click(react_1.screen.getByTestId('handleTemplateData'));
361
+ react_1.fireEvent.click(react_1.screen.getByTestId('onSubmit'));
362
+ expect(templatesPutSpy).toBeCalled();
363
+ })];
364
+ case 1:
365
+ _a.sent();
366
+ return [2 /*return*/];
367
+ }
368
+ });
369
+ }); });
370
+ });
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ import { IDirectory } from '../../../ACM-AXN/Directory/interface';
3
+ import { ITemplateType } from '../Types';
4
+ interface InfomationProps {
5
+ directories: IDirectory[];
6
+ templateTypes: ITemplateType[];
7
+ }
8
+ declare const Infomation: React.FC<InfomationProps>;
9
+ export default Infomation;
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ var jsx_runtime_1 = require("react/jsx-runtime");
15
+ var enums_1 = require("../../../ACM-AXN/Page/enums");
16
+ var AWING_1 = require("../../../AWING");
17
+ var react_1 = require("react");
18
+ var react_i18next_1 = require("react-i18next");
19
+ var recoil_1 = require("recoil");
20
+ var Recoils_1 = require("./Recoils");
21
+ var Infomation = function (props) {
22
+ var directories = props.directories, templateTypes = props.templateTypes;
23
+ var t = (0, react_i18next_1.useTranslation)().t;
24
+ var _a = (0, recoil_1.useRecoilState)(Recoils_1.templateInfoState), templateInfo = _a[0], handleTemplateData = _a[1];
25
+ var handleUpdate = (0, react_1.useCallback)(function (obj, formValid, fieldUpdate) {
26
+ if (fieldUpdate) {
27
+ handleTemplateData(function (prev) { return (__assign(__assign({}, prev), obj)); });
28
+ }
29
+ }, [handleTemplateData]);
30
+ return ((0, jsx_runtime_1.jsx)(AWING_1.DataForm, { fields: [
31
+ {
32
+ fieldName: 'directoryId',
33
+ type: 'select',
34
+ label: t('Common.Directory'),
35
+ required: true,
36
+ options: directories.map(function (directory) { return ({
37
+ value: directory.directoryId,
38
+ text: directory.name,
39
+ level: directory.level,
40
+ }); }),
41
+ },
42
+ {
43
+ fieldName: 'pageCode',
44
+ type: 'select',
45
+ label: t('Common.TypePage'),
46
+ required: true,
47
+ options: Object.values(enums_1.PageCode).filter(function (item) { return !isNaN(Number(item)); }).map(function (value) { return ({
48
+ value: enums_1.PageCode[value].toLowerCase(),
49
+ text: enums_1.PageCode[value],
50
+ }); }),
51
+ },
52
+ {
53
+ fieldName: 'templateTypeId',
54
+ type: 'select',
55
+ label: t('Common.TypeTemplate'),
56
+ required: true,
57
+ options: templateTypes.map(function (type) { return ({
58
+ value: type.id,
59
+ text: type.name,
60
+ }); }),
61
+ },
62
+ {
63
+ fieldName: 'description',
64
+ type: 'text',
65
+ label: t('TemplateManagement.TemplateName'),
66
+ pattern: false,
67
+ required: true,
68
+ length: 200,
69
+ },
70
+ {
71
+ fieldName: 'isDeprecated',
72
+ type: 'checkbox',
73
+ label: t('TemplateManagement.isDeprecate'),
74
+ error: false,
75
+ },
76
+ ], oldValue: templateInfo, onUpdate: handleUpdate }));
77
+ };
78
+ exports.default = Infomation;
@@ -0,0 +1 @@
1
+ import '@testing-library/jest-dom/extend-expect';
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ var jsx_runtime_1 = require("react/jsx-runtime");
18
+ require("@testing-library/jest-dom/extend-expect");
19
+ var react_1 = require("@testing-library/react");
20
+ var Infomation_1 = __importDefault(require("./Infomation"));
21
+ var enums_1 = require("../../../ACM-AXN/Page/enums");
22
+ var recoil_1 = require("recoil");
23
+ // Mock i18next
24
+ jest.mock('react-i18next', function () { return (__assign(__assign({}, jest.requireActual('react-i18next')), { useTranslation: function () { return ({ t: jest.fn(function (key) { return key; }) }); } })); });
25
+ // Mock Utils/Helpers
26
+ jest.mock('Utils/Helpers', function () { return (__assign(__assign({}, jest.requireActual('Utils/Helpers')), { downloadZipFile: function () { } })); });
27
+ // Mock DataForm
28
+ jest.mock('awing-library/lib/AWING', function () { return ({
29
+ DataForm: function (props) {
30
+ var _a, _b;
31
+ props.fields.forEach(function (element) {
32
+ if (element === null || element === void 0 ? void 0 : element.onValidate) {
33
+ element === null || element === void 0 ? void 0 : element.onValidate();
34
+ }
35
+ });
36
+ return ((0, jsx_runtime_1.jsxs)("div", { "data-testid": "DataForm", children: [(0, jsx_runtime_1.jsx)("p", { children: JSON.stringify(props.oldValue) }), (0, jsx_runtime_1.jsx)("p", { "data-testid": "file-name", children: (_a = props.fields.find(function (item) { return item.inputProps; })) === null || _a === void 0 ? void 0 : _a.inputProps.value }), (0, jsx_runtime_1.jsx)("p", { "data-testid": "select-options", children: JSON.stringify((_b = props.fields
37
+ .filter(function (item) { return item.options; })) === null || _b === void 0 ? void 0 : _b.map(function (field) { return field.options; })) }), (0, jsx_runtime_1.jsx)("button", { "data-testid": "onUpdate", onClick: function () {
38
+ props.onUpdate({
39
+ directoryId: '',
40
+ pageCode: '',
41
+ templateTypeId: '',
42
+ description: '',
43
+ });
44
+ } })] }));
45
+ },
46
+ }); });
47
+ // props
48
+ var props = {
49
+ directories: [
50
+ {
51
+ directoryId: '5202880755274023966',
52
+ name: 'template',
53
+ parentDirectoryId: '4913100144472996590',
54
+ objectTypeCode: 'template',
55
+ level: 3,
56
+ isFile: false,
57
+ isSystem: true,
58
+ order: 0,
59
+ description: null,
60
+ directoryPath: '.0.90.4913100144472996590.5202880755274023966.',
61
+ },
62
+ {
63
+ directoryId: '4736019141892318583',
64
+ name: 'Beta template',
65
+ parentDirectoryId: '5202880755274023966',
66
+ objectTypeCode: 'template',
67
+ level: 4,
68
+ isFile: false,
69
+ isSystem: false,
70
+ order: 0,
71
+ description: '',
72
+ directoryPath: '.0.90.4913100144472996590.5202880755274023966.4736019141892318583.',
73
+ },
74
+ ],
75
+ templateTypes: [
76
+ {
77
+ id: 1,
78
+ name: 'Banner',
79
+ templateTypeCode: 'lgn',
80
+ },
81
+ {
82
+ id: 5,
83
+ name: 'Customize',
84
+ templateTypeCode: 'lgn',
85
+ },
86
+ {
87
+ id: 7,
88
+ name: 'Customize',
89
+ templateTypeCode: 'wlc',
90
+ },
91
+ ],
92
+ templateInfo: {
93
+ id: '5126659046455609087',
94
+ directoryId: '5202880755274023966',
95
+ directoryPath: '.0.90.4913100144472996590.5202880755274023966.5126659046455609087.',
96
+ name: 'video_square',
97
+ templateHtml: 'templateHtml',
98
+ layoutId: '5197905656409960384',
99
+ pageCode: 'lgn',
100
+ description: 'Square Video',
101
+ templateTypeId: 18,
102
+ validation: 'validation',
103
+ autoField: 'autoField',
104
+ },
105
+ handleTemplateData: function (fn) {
106
+ fn({ template: {} });
107
+ },
108
+ initValidDescription: { valid: true, message: '' }
109
+ };
110
+ var renderUi = function () {
111
+ return (0, react_1.render)((0, jsx_runtime_1.jsx)(Infomation_1.default, __assign({}, props)), { wrapper: recoil_1.RecoilRoot });
112
+ };
113
+ describe('Template Infomation Tab Component', function () {
114
+ it('renders without crashing', function () {
115
+ renderUi();
116
+ });
117
+ it('render data from props', function () {
118
+ renderUi();
119
+ expect(react_1.screen.getByText(JSON.stringify([
120
+ props.directories.map(function (directory) { return ({
121
+ value: directory.directoryId,
122
+ text: directory.name,
123
+ level: directory.level,
124
+ }); }),
125
+ Object.entries(enums_1.PageCode).map(function (_a) {
126
+ var _key = _a[0], value = _a[1];
127
+ return ({
128
+ value: value,
129
+ text: value,
130
+ });
131
+ }),
132
+ props.templateTypes.map(function (type) { return ({
133
+ value: type.id,
134
+ text: type.name,
135
+ }); }),
136
+ ]))).toBeInTheDocument();
137
+ });
138
+ it('update info data', function () {
139
+ var updateSpy = jest.spyOn(props, 'handleTemplateData');
140
+ renderUi();
141
+ react_1.fireEvent.click(react_1.screen.getByTestId('onUpdate'));
142
+ expect(updateSpy).toHaveBeenCalled();
143
+ });
144
+ it("props don't have templateInfo", function () {
145
+ (0, react_1.render)((0, jsx_runtime_1.jsx)(Infomation_1.default, __assign({}, __assign(__assign({}, props), { templateInfo: {} }))));
146
+ expect(react_1.screen.getByText(JSON.stringify({
147
+ directoryId: props.directories[0].directoryId,
148
+ }))).toBeInTheDocument();
149
+ });
150
+ });
@@ -0,0 +1,6 @@
1
+ import { ITemplate, ITemplateEvent, ITemplateModel, ITemplateParameter } from "../Types";
2
+ export declare const templateState: import("recoil").RecoilState<ITemplateModel>;
3
+ export declare const templateInfoState: import("recoil").RecoilState<ITemplate>;
4
+ export declare const templateEventState: import("recoil").RecoilState<ITemplateEvent[]>;
5
+ export declare const templateParametersState: import("recoil").RecoilState<ITemplateParameter[]>;
6
+ export declare const isEditState: import("recoil").RecoilState<boolean>;