awing-library 2.1.96-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 (66) hide show
  1. package/lib/ACM-AXN/Page/CreateOrEdit/Components/useListPageView.js +9 -4
  2. package/lib/ACM-AXN/Page/CreateOrEdit/Recoil.d.ts +2 -1
  3. package/lib/ACM-AXN/Page/CreateOrEdit/Recoil.js +14 -1
  4. package/lib/ACM-AXN/Page/CreateOrEdit/TabFile/FileUtils.d.ts +3 -1
  5. package/lib/ACM-AXN/Page/CreateOrEdit/TabFile/FileUtils.js +1 -6
  6. package/lib/ACM-AXN/Page/CreateOrEdit/TabFile/index.d.ts +7 -0
  7. package/lib/ACM-AXN/Page/CreateOrEdit/TabFile/index.js +13 -15
  8. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/ViewContent.js +23 -2
  9. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/ViewInfo.d.ts +3 -2
  10. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/index.test.js +2 -1
  11. package/lib/ACM-AXN/Page/CreateOrEdit/Utils.d.ts +4 -3
  12. package/lib/ACM-AXN/Page/CreateOrEdit/Utils.js +4 -2
  13. package/lib/ACM-AXN/Page/Types.d.ts +10 -37
  14. package/lib/ACM-AXN/Page/enums.d.ts +6 -0
  15. package/lib/ACM-AXN/Page/enums.js +8 -1
  16. package/lib/ACM-AXN/Template/Constants.d.ts +0 -0
  17. package/lib/ACM-AXN/Template/Constants.js +1 -0
  18. package/lib/ACM-AXN/Template/Container.d.ts +2 -0
  19. package/lib/ACM-AXN/Template/Container.js +74 -0
  20. package/lib/ACM-AXN/Template/Container.test.d.ts +1 -0
  21. package/lib/ACM-AXN/Template/Container.test.js +259 -0
  22. package/lib/ACM-AXN/Template/CreateOrEdit/CreateOrEdit.test.d.ts +1 -0
  23. package/lib/ACM-AXN/Template/CreateOrEdit/CreateOrEdit.test.js +370 -0
  24. package/lib/ACM-AXN/Template/CreateOrEdit/Infomation.d.ts +9 -0
  25. package/lib/ACM-AXN/Template/CreateOrEdit/Infomation.js +78 -0
  26. package/lib/ACM-AXN/Template/CreateOrEdit/Infomation.test.d.ts +1 -0
  27. package/lib/ACM-AXN/Template/CreateOrEdit/Infomation.test.js +150 -0
  28. package/lib/ACM-AXN/Template/CreateOrEdit/Recoils.d.ts +6 -0
  29. package/lib/ACM-AXN/Template/CreateOrEdit/Recoils.js +79 -0
  30. package/lib/ACM-AXN/Template/CreateOrEdit/Script.d.ts +3 -0
  31. package/lib/ACM-AXN/Template/CreateOrEdit/Script.js +58 -0
  32. package/lib/ACM-AXN/Template/CreateOrEdit/Script.test.d.ts +1 -0
  33. package/lib/ACM-AXN/Template/CreateOrEdit/Script.test.js +162 -0
  34. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Events.d.ts +5 -0
  35. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Events.js +41 -0
  36. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.d.ts +20 -0
  37. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.js +283 -0
  38. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.test.d.ts +1 -0
  39. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.test.js +220 -0
  40. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Utils.d.ts +25 -0
  41. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Utils.js +138 -0
  42. package/lib/ACM-AXN/Template/CreateOrEdit/Template/index.d.ts +3 -0
  43. package/lib/ACM-AXN/Template/CreateOrEdit/Template/index.js +46 -0
  44. package/lib/ACM-AXN/Template/CreateOrEdit/index.d.ts +3 -0
  45. package/lib/ACM-AXN/Template/CreateOrEdit/index.js +215 -0
  46. package/lib/ACM-AXN/Template/Hooks.d.ts +5 -0
  47. package/lib/ACM-AXN/Template/Hooks.js +13 -0
  48. package/lib/ACM-AXN/Template/Import.d.ts +2 -0
  49. package/lib/ACM-AXN/Template/Import.js +123 -0
  50. package/lib/ACM-AXN/Template/Import.test.d.ts +1 -0
  51. package/lib/ACM-AXN/Template/Import.test.js +188 -0
  52. package/lib/ACM-AXN/Template/Types.d.ts +84 -0
  53. package/lib/ACM-AXN/Template/Types.js +2 -0
  54. package/lib/ACM-AXN/Template/UploadButton.d.ts +2 -0
  55. package/lib/ACM-AXN/Template/UploadButton.js +14 -0
  56. package/lib/ACM-AXN/Template/index.d.ts +5 -0
  57. package/lib/ACM-AXN/Template/index.js +44 -0
  58. package/lib/ACM-AXN/ViewTemplate/index.d.ts +2 -1
  59. package/lib/ACM-AXN/ViewTemplate/interface.d.ts +6 -1
  60. package/lib/AWING/HOC/Wrapper.d.ts +6 -0
  61. package/lib/AWING/HOC/Wrapper.js +10 -0
  62. package/lib/translate/en/translation.json +27 -1
  63. package/lib/translate/vi/translation.json +27 -1
  64. package/package.json +1 -1
  65. package/lib/ACM-AXN/Page/CreateOrEdit/TabFile/index.test.d.ts +0 -1
  66. package/lib/ACM-AXN/Page/CreateOrEdit/TabFile/index.test.js +0 -326
@@ -0,0 +1,259 @@
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
+ require("@testing-library/jest-dom/extend-expect");
55
+ var react_1 = require("@testing-library/react");
56
+ var Router_1 = require("../../AWING/Router");
57
+ var Container_1 = __importDefault(require("./Container"));
58
+ var Constants_1 = require("../../ACM-AXN/GroupUser/Constants");
59
+ var items = [
60
+ {
61
+ id: '5496349541280075898',
62
+ directoryId: '5202880755274023966',
63
+ directoryPath: '.0.90.4913100144472996590.5202880755274023966.5496349541280075898.',
64
+ name: 'textmatching',
65
+ templateHtml: '<link rel="stylesheet" href="112233"></link>',
66
+ layoutId: '5197905656409960384',
67
+ pageCode: 'lgn',
68
+ description: 'Textmatching',
69
+ templateTypeId: 1,
70
+ validation: '',
71
+ autoField: '',
72
+ },
73
+ {
74
+ id: '5140705289680815022',
75
+ directoryId: '5202880755274023966',
76
+ directoryPath: '.0.90.4913100144472996590.5202880755274023966.5140705289680815022.',
77
+ name: 'textmatching',
78
+ templateHtml: '',
79
+ layoutId: '5197905656409960384',
80
+ pageCode: 'lgn',
81
+ description: '[Test] Textmatching',
82
+ templateTypeId: 19,
83
+ validation: '',
84
+ autoField: '',
85
+ },
86
+ ];
87
+ var clientMethod = {
88
+ templatesPaging: function () { return ({
89
+ templates: items,
90
+ total: items.length,
91
+ }); },
92
+ templatesDelete: function (_id) { },
93
+ templatesExport: function (_id) { },
94
+ };
95
+ // Mock Axios client
96
+ jest.mock('Commons/UseAxiosProvider', function () { return ({
97
+ __esModule: true,
98
+ default: function () { return ({
99
+ client: {
100
+ templatesPaging: jest.fn(function (_param) {
101
+ return Promise.resolve(clientMethod.templatesPaging());
102
+ }),
103
+ templatesDelete: jest.fn(function (_id) {
104
+ return Promise.resolve(clientMethod.templatesDelete(_id));
105
+ }),
106
+ templatesExport: jest.fn(function (_id) {
107
+ return Promise.resolve(clientMethod.templatesExport(_id));
108
+ }),
109
+ },
110
+ }); },
111
+ }); });
112
+ // Mock i18next
113
+ jest.mock('react-i18next', function () { return (__assign(__assign({}, jest.requireActual('react-i18next')), { useTranslation: function () { return ({ t: jest.fn(function (key) { return key; }) }); } })); });
114
+ // Mock Utils/Helpers
115
+ jest.mock('Utils/Helpers', function () { return (__assign(__assign({}, jest.requireActual('Utils/Helpers')), { downloadZipFile: function () { } })); });
116
+ // Mock PageManagement
117
+ jest.mock('awing-library/lib/AWING/PageManagement', function () { return ({
118
+ PageManagement: function (props) {
119
+ props.onChangeQueryInput({
120
+ searchString: '',
121
+ pageIndex: 0,
122
+ pageSize: 10,
123
+ });
124
+ return ((0, jsx_runtime_1.jsxs)("div", { children: [props.columns
125
+ .filter(function (item) { return item.valueGetter; })
126
+ .map(function (getter, idx) { return ((0, jsx_runtime_1.jsx)("span", { children: getter.valueGetter(items[0], idx) }, idx)); }), (0, jsx_runtime_1.jsx)("span", { "data-testid": "rowid", children: props.getRowId(items[0]) }), (0, jsx_runtime_1.jsx)("button", { "data-testid": "CreateBtn", onClick: props.onCreateButtonClick, children: "CreateBtn" }), (0, jsx_runtime_1.jsx)("button", { onClick: function () {
127
+ props.onChangeQueryInput({
128
+ pageIndex: 1,
129
+ pageSize: 10,
130
+ });
131
+ }, children: "ChangeInput" }), props.customActions, props.rowActions.map(function (item, idx) { return ((0, jsx_runtime_1.jsx)("button", { "data-testid": item.tooltipTitle, onClick: function () {
132
+ item.action('onExport');
133
+ }, children: item.icon }, idx)); }), (0, jsx_runtime_1.jsx)("button", { "data-testid": "Rowclick", onClick: function () {
134
+ props.onRowClick(items[0].id);
135
+ }, children: "Rowclick" }), (0, jsx_runtime_1.jsx)("button", { "data-testid": "onDelete", onClick: function () {
136
+ props.onDelete('onDelete');
137
+ }, children: "Remove Btn" }), (0, jsx_runtime_1.jsx)("p", { children: JSON.stringify(props.rows) }), (0, jsx_runtime_1.jsxs)("span", { children: ["totalItemCount:", props.totalOfRows] })] }));
138
+ },
139
+ }); });
140
+ jest.mock('Commons/Client', function () { return ({
141
+ __esModule: true,
142
+ PageCode: {
143
+ Lgn: 0,
144
+ Wlc: 1,
145
+ }
146
+ }); });
147
+ var renderUi = function () {
148
+ return (0, react_1.render)((0, jsx_runtime_1.jsx)(Router_1.BrowserRouter, { children: (0, jsx_runtime_1.jsx)(Container_1.default, {}) }));
149
+ };
150
+ describe('Template Container Component', function () {
151
+ it('renders without crashing', function () {
152
+ renderUi();
153
+ });
154
+ it('render state', function () { return __awaiter(void 0, void 0, void 0, function () {
155
+ return __generator(this, function (_a) {
156
+ switch (_a.label) {
157
+ case 0:
158
+ renderUi();
159
+ expect(react_1.screen.getByTestId('CreateBtn')).toBeInTheDocument();
160
+ return [4 /*yield*/, (0, react_1.waitFor)(function () {
161
+ expect(react_1.screen.getByText(JSON.stringify(items))).toBeInTheDocument();
162
+ })];
163
+ case 1:
164
+ _a.sent();
165
+ return [4 /*yield*/, (0, react_1.waitFor)(function () {
166
+ expect(react_1.screen.getByText("totalItemCount:".concat(items.length))).toBeInTheDocument();
167
+ })];
168
+ case 2:
169
+ _a.sent();
170
+ return [2 /*return*/];
171
+ }
172
+ });
173
+ }); });
174
+ it('get paging', function () {
175
+ var templatesPagingSpy = jest.spyOn(clientMethod, 'templatesPaging');
176
+ renderUi();
177
+ expect(templatesPagingSpy).toBeCalled();
178
+ });
179
+ it('get rowid', function () {
180
+ renderUi();
181
+ expect(react_1.screen.getByText(items[0].id)).toBeInTheDocument();
182
+ });
183
+ it('Row click', function () { return __awaiter(void 0, void 0, void 0, function () {
184
+ return __generator(this, function (_a) {
185
+ switch (_a.label) {
186
+ case 0:
187
+ renderUi();
188
+ react_1.fireEvent.click(react_1.screen.getByTestId('Rowclick'));
189
+ return [4 /*yield*/, (0, react_1.waitFor)(function () {
190
+ return expect(window.location.href).toContain(['http://localhost', Constants_1.EDIT_PATH, items[0].id].join('/'));
191
+ })];
192
+ case 1:
193
+ _a.sent();
194
+ return [2 /*return*/];
195
+ }
196
+ });
197
+ }); });
198
+ it('row getter', function () {
199
+ renderUi();
200
+ expect(react_1.screen.getByText('TemplateManagement.Page_lgn')).toBeInTheDocument();
201
+ });
202
+ it('Trigger Import button', function () { return __awaiter(void 0, void 0, void 0, function () {
203
+ return __generator(this, function (_a) {
204
+ switch (_a.label) {
205
+ case 0:
206
+ renderUi();
207
+ react_1.fireEvent.click(react_1.screen.getByText('Common.Import'));
208
+ return [4 /*yield*/, (0, react_1.waitFor)(function () {
209
+ return expect(window.location.href).toContain(['http://localhost', Constants_1.IMPORT_PATH].join('/'));
210
+ })];
211
+ case 1:
212
+ _a.sent();
213
+ return [2 /*return*/];
214
+ }
215
+ });
216
+ }); });
217
+ it('Trigger export button', function () { return __awaiter(void 0, void 0, void 0, function () {
218
+ var templatesExportSpy;
219
+ return __generator(this, function (_a) {
220
+ templatesExportSpy = jest.spyOn(clientMethod, 'templatesExport');
221
+ renderUi();
222
+ react_1.fireEvent.click(react_1.screen.getByTestId('Common.Export'));
223
+ expect(templatesExportSpy).toHaveBeenCalledWith('onExport');
224
+ return [2 /*return*/];
225
+ });
226
+ }); });
227
+ it('Trigger Create button', function () { return __awaiter(void 0, void 0, void 0, function () {
228
+ return __generator(this, function (_a) {
229
+ switch (_a.label) {
230
+ case 0:
231
+ renderUi();
232
+ react_1.fireEvent.click(react_1.screen.getByText('CreateBtn'));
233
+ return [4 /*yield*/, (0, react_1.waitFor)(function () {
234
+ return expect(window.location.href).toContain(['http://localhost', Constants_1.CREATE_PATH].join('/'));
235
+ })];
236
+ case 1:
237
+ _a.sent();
238
+ return [2 /*return*/];
239
+ }
240
+ });
241
+ }); });
242
+ it('Delete Template', function () { return __awaiter(void 0, void 0, void 0, function () {
243
+ var templatesDeleteSpy;
244
+ return __generator(this, function (_a) {
245
+ switch (_a.label) {
246
+ case 0:
247
+ templatesDeleteSpy = jest.spyOn(clientMethod, 'templatesDelete');
248
+ renderUi();
249
+ react_1.fireEvent.click(react_1.screen.getByTestId('onDelete'));
250
+ return [4 /*yield*/, (0, react_1.waitFor)(function () {
251
+ expect(templatesDeleteSpy).toHaveBeenCalledWith('onDelete');
252
+ })];
253
+ case 1:
254
+ _a.sent();
255
+ return [2 /*return*/];
256
+ }
257
+ });
258
+ }); });
259
+ });
@@ -0,0 +1 @@
1
+ import '@testing-library/jest-dom/extend-expect';
@@ -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;