complexqa_frontend_core 1.28.1 → 1.30.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.
Files changed (68) hide show
  1. package/package.json +1 -1
  2. package/publish/api/api_abstract_element_class.js +35 -0
  3. package/publish/api/autotest_case_api.js +78 -0
  4. package/publish/api/autotest_result_api.js +17 -0
  5. package/publish/api/autotest_run_api.js +36 -0
  6. package/publish/api/autotest_step_api.js +88 -0
  7. package/publish/api/autotest_suite_api.js +17 -0
  8. package/publish/api/file_app_api.js +76 -0
  9. package/publish/api/index.js +16 -0
  10. package/publish/api/object_repository_element_api.js +17 -0
  11. package/publish/api/object_repository_folder_api.js +17 -0
  12. package/publish/api/object_repository_page_api.js +17 -0
  13. package/publish/app_configuration/menu_configuration_main.js +14 -0
  14. package/publish/app_configuration/table/helpers/table_element_models.js +16 -0
  15. package/publish/app_configuration/table/sections/autotest_case.js +73 -0
  16. package/publish/app_configuration/table/sections/autotest_result.js +59 -0
  17. package/publish/app_configuration/table/sections/autotest_run.js +66 -0
  18. package/publish/app_configuration/table/sections/autotest_step.js +82 -0
  19. package/publish/app_configuration/table/sections/autotest_suite.js +42 -0
  20. package/publish/app_configuration/table/sections/object_repository_element.js +59 -0
  21. package/publish/app_configuration/table/sections/object_repository_folder.js +41 -0
  22. package/publish/app_configuration/table/sections/object_repository_page.js +55 -0
  23. package/publish/app_configuration/table/sections/test_case_step.js +66 -66
  24. package/publish/app_configuration/table/table_configuration.js +16 -0
  25. package/publish/index.js +28 -0
  26. package/publish/services/FileAppService.js +48 -0
  27. package/publish/types/core/0_familyGeneralElement.js +43 -0
  28. package/publish/types/element_translate/typeAttachment.i18n.js +22 -11
  29. package/publish/types/element_translate/typeAutotestCase.i18n.js +95 -0
  30. package/publish/types/element_translate/typeAutotestResult.i18n.js +77 -0
  31. package/publish/types/element_translate/typeAutotestRun.i18n.js +110 -0
  32. package/publish/types/element_translate/typeAutotestStep.i18n.js +80 -0
  33. package/publish/types/element_translate/typeAutotestSuite.i18n.js +40 -0
  34. package/publish/types/element_translate/typeCustomProperty.i18n.js +21 -6
  35. package/publish/types/element_translate/typeCustomPropertyValue.i18n.js +21 -6
  36. package/publish/types/element_translate/typeFile.i18n.js +21 -15
  37. package/publish/types/element_translate/typeObjectRepositoryElement.i18n.js +92 -0
  38. package/publish/types/element_translate/typeObjectRepositoryFolder.i18n.js +62 -0
  39. package/publish/types/element_translate/typeObjectRepositoryPage.i18n.js +43 -0
  40. package/publish/types/element_translate/typeTagRelation.i18n.js +18 -0
  41. package/publish/types/element_translate/typeTestCase.i18n.js +414 -414
  42. package/publish/types/element_translate/typeTestCaseStep.i18n.js +179 -179
  43. package/publish/types/family_elements/0_familyGeneralElement.js +43 -0
  44. package/publish/types/family_elements/autotest_step_actions/autotestStepActionCatalog.js +54 -0
  45. package/publish/types/family_elements/autotest_step_actions/autotestStepLocatorKind.js +56 -0
  46. package/publish/types/family_elements/autotest_step_actions/autotestStepTargetNormalizer.js +134 -0
  47. package/publish/types/family_elements/autotest_step_actions/typeAutotestStepAction.js +35 -0
  48. package/publish/types/family_elements/autotest_step_actions/typeAutotestStepActionVariants.js +148 -0
  49. package/publish/types/family_elements/autotest_step_actions/typeAutotestStepLocatorAction.js +12 -0
  50. package/publish/types/family_elements/autotest_step_actions/typeAutotestStepLocatorValueAction.js +13 -0
  51. package/publish/types/family_elements/typeAttachment.js +1 -1
  52. package/publish/types/family_elements/typeAutotestCase.js +220 -0
  53. package/publish/types/family_elements/typeAutotestResult.js +81 -0
  54. package/publish/types/family_elements/typeAutotestRun.js +165 -0
  55. package/publish/types/family_elements/typeAutotestStep.js +297 -0
  56. package/publish/types/family_elements/typeAutotestStepTarget.js +50 -0
  57. package/publish/types/family_elements/typeAutotestSuite.js +74 -0
  58. package/publish/types/family_elements/typeCustomProperty.js +1 -1
  59. package/publish/types/family_elements/typeObjectRepositoryElement.js +88 -0
  60. package/publish/types/family_elements/typeObjectRepositoryFolder.js +81 -0
  61. package/publish/types/family_elements/typeObjectRepositoryPage.js +77 -0
  62. package/publish/types/family_elements/typeTestCase.js +5 -6
  63. package/publish/types/family_elements/typeTestCaseStep.js +2 -2
  64. package/publish/types/family_files/familyFile.js +2 -0
  65. package/publish/types/family_files/typeFileAutotestScreenshot.js +33 -0
  66. package/publish/types/family_files/typeFileFactory.js +3 -0
  67. package/publish/types/family_relation/typeCustomPropertyValue.js +7 -2
  68. package/publish/types/family_relation/typeTagRelation.js +30 -0
@@ -0,0 +1,297 @@
1
+ import { echo, is_object } from "../../utils/utils.js";
2
+ import { familyTestAutomation } from "../core/1_familyTestAutomation.js";
3
+ import { typeAutotestStep_i18n } from "../element_translate/typeAutotestStep.i18n.js";
4
+ import _ from 'underscore';
5
+
6
+
7
+ /**
8
+ * Шаг исполняемого автотеста. action_name - белый список интерпретатора Playwright.
9
+ *
10
+ * @version v.1.0 (04/09/2026)
11
+ */
12
+ export class typeAutotestStep extends familyTestAutomation
13
+ {
14
+ autotest_step_id;
15
+ autotest_case_id;
16
+ team_id;
17
+ sort_order;
18
+ action_name;
19
+ target;
20
+ value_text;
21
+ timeout_ms;
22
+ expected_value;
23
+ object_repository_page_id;
24
+ object_repository_element_id;
25
+ value_source_type;
26
+ value_source_field;
27
+ created_at;
28
+ updated_at;
29
+
30
+ primary_key = 'autotest_step_id';
31
+ api_key = 'autotest_step';
32
+
33
+ structure_scheme = {
34
+ autotest_step_id: 'integer | require',
35
+ autotest_case_id: 'integer | require',
36
+ team_id : 'integer | require',
37
+ sort_order : 'integer | optional',
38
+ action_name : 'string | enum | require',
39
+ target : 'typeAutotestStepTarget | optional',
40
+ value_text : 'string | optional',
41
+ timeout_ms : 'integer | optional',
42
+ expected_value : 'string | optional',
43
+ object_repository_page_id : 'integer | optional',
44
+ object_repository_element_id: 'integer | optional',
45
+ value_source_type : 'string | enum | optional',
46
+ value_source_field : 'string | optional',
47
+ created_at : 'timestamp | optional',
48
+ updated_at : 'timestamp | optional',
49
+ };
50
+
51
+ create_scheme = [
52
+ 'autotest_case_id',
53
+ 'action_name',
54
+ 'sort_order',
55
+ 'target',
56
+ 'value_text',
57
+ 'timeout_ms',
58
+ 'expected_value',
59
+ 'object_repository_page_id',
60
+ 'object_repository_element_id',
61
+ 'value_source_type',
62
+ 'value_source_field',
63
+ ];
64
+
65
+ available_enum_values = {
66
+ action_name: [
67
+ 'goto',
68
+ 'click',
69
+ 'dblclick',
70
+ 'fill',
71
+ 'type',
72
+ 'press',
73
+ 'check',
74
+ 'uncheck',
75
+ 'selectOption',
76
+ 'hover',
77
+ 'focus',
78
+ 'waitForSelector',
79
+ 'waitForURL',
80
+ 'waitForTimeout',
81
+ 'goBack',
82
+ 'goForward',
83
+ 'reload',
84
+ 'toBeVisible',
85
+ 'toHaveText',
86
+ 'toHaveURL',
87
+ 'toHaveAttribute',
88
+ ],
89
+ value_source_type: [
90
+ 'INLINE',
91
+ 'TEST_ACCOUNT',
92
+ ],
93
+ };
94
+
95
+ enum_value_translate_matrix = typeAutotestStep_i18n.enum_value_translate_matrix;
96
+ attribute_name_translate_matrix = typeAutotestStep_i18n.attribute_name_translate_matrix;
97
+
98
+
99
+ /**
100
+ * @param {object|false|undefined} data
101
+ */
102
+ constructor(data = false)
103
+ {
104
+ super();
105
+
106
+ if (data && is_object(data))
107
+ {
108
+ _.mapObject(data, (value, key) =>
109
+ {
110
+ if (this.hasOwnProperty(key))
111
+ {
112
+ this[ key ] = value;
113
+ }
114
+ });
115
+ }
116
+
117
+ return this;
118
+ }
119
+
120
+
121
+ /**
122
+ * @version v.1.0 (05/09/2026)
123
+ * @param element
124
+ * @param callback
125
+ */
126
+ increase_sort_order(element = false, callback)
127
+ {
128
+ if (!element)
129
+ {
130
+ element = this;
131
+ }
132
+
133
+ let payload = {
134
+ autotest_step_id: element.autotest_step_id
135
+ };
136
+
137
+ if (typeof callback?.before === 'function')
138
+ {
139
+ callback?.before({ payload });
140
+ }
141
+
142
+ return ApiService[ this.api_key ].increase_sort_order(payload).then((response) =>
143
+ {
144
+ if (typeof callback?.success === 'function')
145
+ {
146
+ callback?.success({ response, payload })
147
+ }
148
+ }).catch((error) =>
149
+ {
150
+ echo({ error });
151
+ if (typeof callback?.error === 'function')
152
+ {
153
+ callback?.error({ error, payload })
154
+ }
155
+ }).finally((response) =>
156
+ {
157
+ if (typeof callback?.final === 'function')
158
+ {
159
+ callback?.final({ response, payload })
160
+ }
161
+ });
162
+ }
163
+
164
+
165
+ /**
166
+ * @version v.1.0 (05/09/2026)
167
+ * @param element
168
+ * @param callback
169
+ */
170
+ decrease_sort_order(element = false, callback)
171
+ {
172
+ if (!element)
173
+ {
174
+ element = this;
175
+ }
176
+
177
+ let payload = {
178
+ autotest_step_id: element.autotest_step_id
179
+ };
180
+ if (typeof callback?.before === 'function')
181
+ {
182
+ callback?.before({ payload });
183
+ }
184
+
185
+ return ApiService[ this.api_key ].decrease_sort_order(payload).then((response) =>
186
+ {
187
+ if (typeof callback?.success === 'function')
188
+ {
189
+ callback?.success({ response, payload })
190
+ }
191
+ }).catch((error) =>
192
+ {
193
+ echo({ error });
194
+ if (typeof callback?.error === 'function')
195
+ {
196
+ callback?.error({ error, payload })
197
+ }
198
+ }).finally((response) =>
199
+ {
200
+ if (typeof callback?.final === 'function')
201
+ {
202
+ callback?.final({ response, payload })
203
+ }
204
+ });
205
+ }
206
+
207
+
208
+ /**
209
+ * Save action fields and target for one step.
210
+ *
211
+ * @version v.1.0 (05/09/2026)
212
+ * @param {object} payload
213
+ * @param {object} callback
214
+ */
215
+ save(payload = false, callback)
216
+ {
217
+ if (!payload)
218
+ {
219
+ payload = {
220
+ autotest_step_id: this.autotest_step_id,
221
+ action_name : this.action_name,
222
+ target : this.target,
223
+ value_text : this.value_text,
224
+ timeout_ms : this.timeout_ms,
225
+ expected_value : this.expected_value,
226
+ object_repository_page_id : this.object_repository_page_id,
227
+ object_repository_element_id: this.object_repository_element_id,
228
+ value_source_type : this.value_source_type,
229
+ value_source_field : this.value_source_field,
230
+ sort_order : this.sort_order,
231
+ };
232
+ }
233
+
234
+ if (typeof callback?.before === 'function')
235
+ {
236
+ callback?.before({ payload });
237
+ }
238
+
239
+ return ApiService[ this.api_key ].save(payload).then((response) =>
240
+ {
241
+ if (typeof callback?.success === 'function')
242
+ {
243
+ callback?.success({ response, payload })
244
+ }
245
+ }).catch((error) =>
246
+ {
247
+ echo({ error });
248
+ if (typeof callback?.error === 'function')
249
+ {
250
+ callback?.error({ error, payload })
251
+ }
252
+ }).finally((response) =>
253
+ {
254
+ if (typeof callback?.final === 'function')
255
+ {
256
+ callback?.final({ response, payload })
257
+ }
258
+ });
259
+ }
260
+
261
+
262
+ /**
263
+ * Save a JSON array of steps. Each item must include autotest_step_id.
264
+ *
265
+ * @version v.1.0 (05/09/2026)
266
+ * @param {object} payload
267
+ * @param {object} callback
268
+ */
269
+ save_json(payload, callback)
270
+ {
271
+ if (typeof callback?.before === 'function')
272
+ {
273
+ callback?.before({ payload });
274
+ }
275
+
276
+ return ApiService[ this.api_key ].save_json(payload).then((response) =>
277
+ {
278
+ if (typeof callback?.success === 'function')
279
+ {
280
+ callback?.success({ response, payload })
281
+ }
282
+ }).catch((error) =>
283
+ {
284
+ echo({ error });
285
+ if (typeof callback?.error === 'function')
286
+ {
287
+ callback?.error({ error, payload })
288
+ }
289
+ }).finally((response) =>
290
+ {
291
+ if (typeof callback?.final === 'function')
292
+ {
293
+ callback?.final({ response, payload })
294
+ }
295
+ });
296
+ }
297
+ }
@@ -0,0 +1,50 @@
1
+ import { familyTestAutomation } from "../core/1_familyTestAutomation.js";
2
+ import { is_object } from "../../utils/utils.js";
3
+ import { AUTOTEST_STEP_LOCATOR_KINDS } from "./autotest_step_actions/autotestStepLocatorKind.js";
4
+ import _ from 'underscore';
5
+
6
+
7
+ /**
8
+ * Цель шага автотеста (вложена в typeAutotestStep.target). Без API.
9
+ * Канон: kind + value + optional name.
10
+ *
11
+ * @version v.1.1 (05/09/2026)
12
+ */
13
+ export class typeAutotestStepTarget extends familyTestAutomation
14
+ {
15
+ kind;
16
+ value;
17
+ name;
18
+
19
+ structure_scheme = {
20
+ kind : 'string | enum | optional',
21
+ value: 'string | optional',
22
+ name : 'string | optional',
23
+ };
24
+
25
+ available_enum_values = {
26
+ kind: AUTOTEST_STEP_LOCATOR_KINDS,
27
+ };
28
+
29
+
30
+ /**
31
+ * @param {object|false|undefined} data
32
+ */
33
+ constructor(data = false)
34
+ {
35
+ super();
36
+
37
+ if (data && is_object(data))
38
+ {
39
+ _.mapObject(data, (value, key) =>
40
+ {
41
+ if (this.hasOwnProperty(key))
42
+ {
43
+ this[ key ] = value;
44
+ }
45
+ });
46
+ }
47
+
48
+ return this;
49
+ }
50
+ }
@@ -0,0 +1,74 @@
1
+ import { is_object } from "../../utils/utils.js";
2
+ import { familyTestAutomation } from "../core/1_familyTestAutomation.js";
3
+ import { typeAutotestSuite_i18n } from "../element_translate/typeAutotestSuite.i18n.js";
4
+ import _ from 'underscore';
5
+
6
+
7
+ /**
8
+ * Дерево сьютов автотестов.
9
+ *
10
+ * @version v.1.0 (04/09/2026)
11
+ */
12
+ export class typeAutotestSuite extends familyTestAutomation
13
+ {
14
+ autotest_suite_id;
15
+ team_id;
16
+ project_id;
17
+ parent_autotest_suite_id;
18
+ autotest_suite_title;
19
+ created_at;
20
+ updated_at;
21
+
22
+ primary_key = 'autotest_suite_id';
23
+ api_key = 'autotest_suite';
24
+
25
+ structure_scheme = {
26
+ autotest_suite_id : 'integer | require',
27
+ team_id : 'integer | require',
28
+ project_id : 'integer | require',
29
+ parent_autotest_suite_id: 'integer | optional',
30
+ autotest_suite_title : 'string | optional',
31
+ created_at : 'timestamp | optional',
32
+ updated_at : 'timestamp | optional',
33
+ };
34
+
35
+ create_scheme = [
36
+ 'project_id',
37
+ 'autotest_suite_title',
38
+ 'parent_autotest_suite_id',
39
+ ];
40
+
41
+ enum_value_translate_matrix = typeAutotestSuite_i18n.enum_value_translate_matrix;
42
+ attribute_name_translate_matrix = typeAutotestSuite_i18n.attribute_name_translate_matrix;
43
+
44
+
45
+ /**
46
+ * @param {object|false|undefined} data
47
+ */
48
+ constructor(data = false)
49
+ {
50
+ super();
51
+
52
+ if (data && is_object(data))
53
+ {
54
+ _.mapObject(data, (value, key) =>
55
+ {
56
+ if (this.hasOwnProperty(key))
57
+ {
58
+ this[ key ] = value;
59
+ }
60
+ });
61
+ }
62
+
63
+ return this;
64
+ }
65
+
66
+
67
+ /**
68
+ * @returns {string}
69
+ */
70
+ get_element_name()
71
+ {
72
+ return this.autotest_suite_title;
73
+ }
74
+ }
@@ -77,7 +77,7 @@ export class typeCustomProperty extends familyTestDocumentation
77
77
 
78
78
  static get_element_type_values()
79
79
  {
80
- return [ 'test_case', 'bug' ];
80
+ return [ 'test_case', 'bug', 'autotest_case', 'autotest_run', 'object_repository_page', 'object_repository_element', 'object_repository_folder' ];
81
81
  }
82
82
 
83
83
 
@@ -0,0 +1,88 @@
1
+ import { is_object } from "../../utils/utils.js";
2
+ import { familyTestAutomation } from "../core/1_familyTestAutomation.js";
3
+ import { typeObjectRepositoryElement_i18n } from "../element_translate/typeObjectRepositoryElement.i18n.js";
4
+ import { AUTOTEST_STEP_LOCATOR_KINDS } from "./autotest_step_actions/autotestStepLocatorKind.js";
5
+ import _ from 'underscore';
6
+
7
+
8
+ /**
9
+ * Object Repository element. Live locator: locator_kind + locator_value (+ locator_name for ROLE).
10
+ *
11
+ * @version v.1.0 (05/09/2026)
12
+ */
13
+ export class typeObjectRepositoryElement extends familyTestAutomation
14
+ {
15
+ object_repository_element_id;
16
+ team_id;
17
+ project_id;
18
+ object_repository_folder_id;
19
+ object_repository_element_title;
20
+ locator_kind;
21
+ locator_value;
22
+ locator_name;
23
+ created_at;
24
+ updated_at;
25
+
26
+ primary_key = 'object_repository_element_id';
27
+ api_key = 'object_repository_element';
28
+
29
+ structure_scheme = {
30
+ object_repository_element_id : 'integer | require',
31
+ team_id : 'integer | require',
32
+ project_id : 'integer | require',
33
+ object_repository_folder_id : 'integer | optional',
34
+ object_repository_element_title: 'string | optional',
35
+ locator_kind : 'string | enum | require',
36
+ locator_value : 'string | optional',
37
+ locator_name : 'string | optional',
38
+ created_at : 'timestamp | optional',
39
+ updated_at : 'timestamp | optional',
40
+ };
41
+
42
+ create_scheme = [
43
+ 'project_id',
44
+ 'object_repository_element_title',
45
+ 'object_repository_folder_id',
46
+ 'locator_kind',
47
+ 'locator_value',
48
+ 'locator_name',
49
+ ];
50
+
51
+ available_enum_values = {
52
+ locator_kind: AUTOTEST_STEP_LOCATOR_KINDS.slice(),
53
+ };
54
+
55
+ enum_value_translate_matrix = typeObjectRepositoryElement_i18n.enum_value_translate_matrix;
56
+ attribute_name_translate_matrix = typeObjectRepositoryElement_i18n.attribute_name_translate_matrix;
57
+
58
+
59
+ /**
60
+ * @param {object|false|undefined} data
61
+ */
62
+ constructor(data = false)
63
+ {
64
+ super();
65
+
66
+ if (data && is_object(data))
67
+ {
68
+ _.mapObject(data, (value, key) =>
69
+ {
70
+ if (this.hasOwnProperty(key))
71
+ {
72
+ this[ key ] = value;
73
+ }
74
+ });
75
+ }
76
+
77
+ return this;
78
+ }
79
+
80
+
81
+ /**
82
+ * @returns {string}
83
+ */
84
+ get_element_name()
85
+ {
86
+ return this.object_repository_element_title;
87
+ }
88
+ }
@@ -0,0 +1,81 @@
1
+ import { is_object } from "../../utils/utils.js";
2
+ import { familyTestAutomation } from "../core/1_familyTestAutomation.js";
3
+ import { typeObjectRepositoryFolder_i18n } from "../element_translate/typeObjectRepositoryFolder.i18n.js";
4
+ import _ from 'underscore';
5
+
6
+
7
+ /**
8
+ * Object Repository folder for one listing kind: PAGE or ELEMENT.
9
+ *
10
+ * @version v.1.0 (05/09/2026)
11
+ */
12
+ export class typeObjectRepositoryFolder extends familyTestAutomation
13
+ {
14
+ object_repository_folder_id;
15
+ team_id;
16
+ project_id;
17
+ parent_object_repository_folder_id;
18
+ object_repository_folder_kind;
19
+ object_repository_folder_title;
20
+ created_at;
21
+ updated_at;
22
+
23
+ primary_key = 'object_repository_folder_id';
24
+ api_key = 'object_repository_folder';
25
+
26
+ structure_scheme = {
27
+ object_repository_folder_id : 'integer | require',
28
+ team_id : 'integer | require',
29
+ project_id : 'integer | require',
30
+ parent_object_repository_folder_id: 'integer | optional',
31
+ object_repository_folder_kind : 'string | enum | require',
32
+ object_repository_folder_title : 'string | optional',
33
+ created_at : 'timestamp | optional',
34
+ updated_at : 'timestamp | optional',
35
+ };
36
+
37
+ create_scheme = [
38
+ 'project_id',
39
+ 'object_repository_folder_title',
40
+ 'parent_object_repository_folder_id',
41
+ 'object_repository_folder_kind',
42
+ ];
43
+
44
+ available_enum_values = {
45
+ object_repository_folder_kind: [ 'PAGE', 'ELEMENT' ],
46
+ };
47
+
48
+ enum_value_translate_matrix = typeObjectRepositoryFolder_i18n.enum_value_translate_matrix;
49
+ attribute_name_translate_matrix = typeObjectRepositoryFolder_i18n.attribute_name_translate_matrix;
50
+
51
+
52
+ /**
53
+ * @param {object|false|undefined} data
54
+ */
55
+ constructor(data = false)
56
+ {
57
+ super();
58
+
59
+ if (data && is_object(data))
60
+ {
61
+ _.mapObject(data, (value, key) =>
62
+ {
63
+ if (this.hasOwnProperty(key))
64
+ {
65
+ this[ key ] = value;
66
+ }
67
+ });
68
+ }
69
+
70
+ return this;
71
+ }
72
+
73
+
74
+ /**
75
+ * @returns {string}
76
+ */
77
+ get_element_name()
78
+ {
79
+ return this.object_repository_folder_title;
80
+ }
81
+ }
@@ -0,0 +1,77 @@
1
+ import { is_object } from "../../utils/utils.js";
2
+ import { familyTestAutomation } from "../core/1_familyTestAutomation.js";
3
+ import { typeObjectRepositoryPage_i18n } from "../element_translate/typeObjectRepositoryPage.i18n.js";
4
+ import _ from 'underscore';
5
+
6
+
7
+ /**
8
+ * Object Repository page. path is the same canon as goto (path from team domain).
9
+ *
10
+ * @version v.1.0 (05/09/2026)
11
+ */
12
+ export class typeObjectRepositoryPage extends familyTestAutomation
13
+ {
14
+ object_repository_page_id;
15
+ team_id;
16
+ project_id;
17
+ object_repository_folder_id;
18
+ object_repository_page_title;
19
+ path;
20
+ created_at;
21
+ updated_at;
22
+
23
+ primary_key = 'object_repository_page_id';
24
+ api_key = 'object_repository_page';
25
+
26
+ structure_scheme = {
27
+ object_repository_page_id : 'integer | require',
28
+ team_id : 'integer | require',
29
+ project_id : 'integer | require',
30
+ object_repository_folder_id : 'integer | optional',
31
+ object_repository_page_title: 'string | optional',
32
+ path : 'string | optional',
33
+ created_at : 'timestamp | optional',
34
+ updated_at : 'timestamp | optional',
35
+ };
36
+
37
+ create_scheme = [
38
+ 'project_id',
39
+ 'object_repository_page_title',
40
+ 'object_repository_folder_id',
41
+ 'path',
42
+ ];
43
+
44
+ enum_value_translate_matrix = typeObjectRepositoryPage_i18n.enum_value_translate_matrix;
45
+ attribute_name_translate_matrix = typeObjectRepositoryPage_i18n.attribute_name_translate_matrix;
46
+
47
+
48
+ /**
49
+ * @param {object|false|undefined} data
50
+ */
51
+ constructor(data = false)
52
+ {
53
+ super();
54
+
55
+ if (data && is_object(data))
56
+ {
57
+ _.mapObject(data, (value, key) =>
58
+ {
59
+ if (this.hasOwnProperty(key))
60
+ {
61
+ this[ key ] = value;
62
+ }
63
+ });
64
+ }
65
+
66
+ return this;
67
+ }
68
+
69
+
70
+ /**
71
+ * @returns {string}
72
+ */
73
+ get_element_name()
74
+ {
75
+ return this.object_repository_page_title;
76
+ }
77
+ }
@@ -17,10 +17,7 @@ export class typeTestCase extends familyTestDocumentation
17
17
  functional_id; // foreign key
18
18
  test_case_status;
19
19
  test_case_title; // text 90
20
- test_case_preconditions; // text (взято у рельсов)
21
- test_case_mission; // text (взято у рельсов)
22
- test_case_goals; // text (взято у рельсов)
23
- test_case_description; // text 250
20
+ test_case_description; // StringHtml, max 350 (DB)
24
21
  test_case_time_to_execute; // время выполнения (в секундах) (оценочное) (для планирования работ)
25
22
  test_case_complexity; // enum (для планирования работ)
26
23
  test_case_importance; // enum (для планирования работ)
@@ -28,7 +25,7 @@ export class typeTestCase extends familyTestDocumentation
28
25
  test_case_presteps; // pseudo // foreign key - relations
29
26
  _attachments; // typeAttachments - <relations>
30
27
  preconditions; // text
31
- excepted_result; // text // ?? <goals>
28
+ expected_result; // text // ?? <goals>
32
29
  created_at;
33
30
  updated_at;
34
31
 
@@ -46,10 +43,12 @@ export class typeTestCase extends familyTestDocumentation
46
43
  functional_id : 'integer | optional',
47
44
  test_case_status : 'string | enum | require',
48
45
  test_case_title : 'string | optional',
49
- test_case_descriptions : 'string | StringHtml | optional',
46
+ test_case_description : 'string | StringHtml | optional',
50
47
  test_case_time_to_execute: 'integer | optional',
51
48
  test_case_complexity : 'string | enum | optional',
52
49
  test_case_importance : 'string | enum | optional',
50
+ preconditions : 'string | StringHtml | optional',
51
+ expected_result : 'string | StringHtml | optional',
53
52
  created_at : 'timestamp | require',
54
53
  updated_at : 'timestamp | optional',
55
54
  };