@umbraco/playwright-testhelpers 2.0.0-beta.9 → 15.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.
Files changed (185) hide show
  1. package/dist/lib/helpers/ApiHelpers.d.ts +44 -4
  2. package/dist/lib/helpers/ApiHelpers.js +212 -7
  3. package/dist/lib/helpers/ApiHelpers.js.map +1 -1
  4. package/dist/lib/helpers/ContentUiHelper.d.ts +186 -0
  5. package/dist/lib/helpers/ContentUiHelper.js +559 -0
  6. package/dist/lib/helpers/ContentUiHelper.js.map +1 -0
  7. package/dist/lib/helpers/DataTypeApiHelper.d.ts +95 -14
  8. package/dist/lib/helpers/DataTypeApiHelper.js +829 -130
  9. package/dist/lib/helpers/DataTypeApiHelper.js.map +1 -1
  10. package/dist/lib/helpers/DataTypeUiHelper.d.ts +266 -0
  11. package/dist/lib/helpers/DataTypeUiHelper.js +850 -0
  12. package/dist/lib/helpers/DataTypeUiHelper.js.map +1 -0
  13. package/dist/lib/helpers/DictionaryApiHelper.d.ts +2 -1
  14. package/dist/lib/helpers/DictionaryApiHelper.js +17 -4
  15. package/dist/lib/helpers/DictionaryApiHelper.js.map +1 -1
  16. package/dist/lib/helpers/DictionaryUiHelper.d.ts +7 -9
  17. package/dist/lib/helpers/DictionaryUiHelper.js +33 -33
  18. package/dist/lib/helpers/DictionaryUiHelper.js.map +1 -1
  19. package/dist/lib/helpers/DocumentApiHelper.d.ts +38 -0
  20. package/dist/lib/helpers/DocumentApiHelper.js +365 -0
  21. package/dist/lib/helpers/DocumentApiHelper.js.map +1 -1
  22. package/dist/lib/helpers/DocumentBlueprintApiHelper.d.ts +18 -0
  23. package/dist/lib/helpers/DocumentBlueprintApiHelper.js +126 -0
  24. package/dist/lib/helpers/DocumentBlueprintApiHelper.js.map +1 -0
  25. package/dist/lib/helpers/DocumentBlueprintUiHelper.d.ts +17 -0
  26. package/dist/lib/helpers/DocumentBlueprintUiHelper.js +52 -0
  27. package/dist/lib/helpers/DocumentBlueprintUiHelper.js.map +1 -0
  28. package/dist/lib/helpers/DocumentTypeApiHelper.d.ts +42 -0
  29. package/dist/lib/helpers/DocumentTypeApiHelper.js +551 -0
  30. package/dist/lib/helpers/DocumentTypeApiHelper.js.map +1 -0
  31. package/dist/lib/helpers/DocumentTypeUiHelper.d.ts +35 -0
  32. package/dist/lib/helpers/DocumentTypeUiHelper.js +98 -0
  33. package/dist/lib/helpers/DocumentTypeUiHelper.js.map +1 -0
  34. package/dist/lib/helpers/ExamineManagementUiHelper.d.ts +15 -0
  35. package/dist/lib/helpers/ExamineManagementUiHelper.js +38 -0
  36. package/dist/lib/helpers/ExamineManagementUiHelper.js.map +1 -0
  37. package/dist/lib/helpers/HealthCheckApiHelper.d.ts +13 -0
  38. package/dist/lib/helpers/HealthCheckApiHelper.js +47 -0
  39. package/dist/lib/helpers/HealthCheckApiHelper.js.map +1 -0
  40. package/dist/lib/helpers/HealthCheckUiHelper.d.ts +23 -0
  41. package/dist/lib/helpers/HealthCheckUiHelper.js +59 -0
  42. package/dist/lib/helpers/HealthCheckUiHelper.js.map +1 -0
  43. package/dist/lib/helpers/IndexerApiHelper.d.ts +7 -0
  44. package/dist/lib/helpers/IndexerApiHelper.js +19 -0
  45. package/dist/lib/helpers/IndexerApiHelper.js.map +1 -0
  46. package/dist/lib/helpers/LanguageApiHelper.d.ts +8 -4
  47. package/dist/lib/helpers/LanguageApiHelper.js +46 -26
  48. package/dist/lib/helpers/LanguageApiHelper.js.map +1 -1
  49. package/dist/lib/helpers/LanguageUiHelper.d.ts +23 -0
  50. package/dist/lib/helpers/LanguageUiHelper.js +68 -0
  51. package/dist/lib/helpers/LanguageUiHelper.js.map +1 -0
  52. package/dist/lib/helpers/LogViewerUiHelper.d.ts +37 -0
  53. package/dist/lib/helpers/LogViewerUiHelper.js +102 -0
  54. package/dist/lib/helpers/LogViewerUiHelper.js.map +1 -0
  55. package/dist/lib/helpers/LoginApiHelper.d.ts +16 -0
  56. package/dist/lib/helpers/LoginApiHelper.js +107 -0
  57. package/dist/lib/helpers/LoginApiHelper.js.map +1 -0
  58. package/dist/lib/helpers/LoginUiHelper.d.ts +11 -0
  59. package/dist/lib/helpers/LoginUiHelper.js +30 -0
  60. package/dist/lib/helpers/LoginUiHelper.js.map +1 -0
  61. package/dist/lib/helpers/MediaApiHelper.d.ts +32 -0
  62. package/dist/lib/helpers/MediaApiHelper.js +245 -0
  63. package/dist/lib/helpers/MediaApiHelper.js.map +1 -0
  64. package/dist/lib/helpers/MediaTypeApiHelper.d.ts +32 -0
  65. package/dist/lib/helpers/MediaTypeApiHelper.js +390 -0
  66. package/dist/lib/helpers/MediaTypeApiHelper.js.map +1 -0
  67. package/dist/lib/helpers/MediaTypeUiHelper.d.ts +14 -0
  68. package/dist/lib/helpers/MediaTypeUiHelper.js +38 -0
  69. package/dist/lib/helpers/MediaTypeUiHelper.js.map +1 -0
  70. package/dist/lib/helpers/MediaUiHelper.d.ts +49 -0
  71. package/dist/lib/helpers/MediaUiHelper.js +144 -0
  72. package/dist/lib/helpers/MediaUiHelper.js.map +1 -0
  73. package/dist/lib/helpers/MemberApiHelper.d.ts +16 -0
  74. package/dist/lib/helpers/MemberApiHelper.js +88 -0
  75. package/dist/lib/helpers/MemberApiHelper.js.map +1 -0
  76. package/dist/lib/helpers/MemberGroupApiHelper.d.ts +14 -0
  77. package/dist/lib/helpers/MemberGroupApiHelper.js +62 -0
  78. package/dist/lib/helpers/MemberGroupApiHelper.js.map +1 -0
  79. package/dist/lib/helpers/MemberGroupUiHelper.d.ts +20 -0
  80. package/dist/lib/helpers/MemberGroupUiHelper.js +57 -0
  81. package/dist/lib/helpers/MemberGroupUiHelper.js.map +1 -0
  82. package/dist/lib/helpers/MemberTypeApiHelper.d.ts +17 -0
  83. package/dist/lib/helpers/MemberTypeApiHelper.js +121 -0
  84. package/dist/lib/helpers/MemberTypeApiHelper.js.map +1 -0
  85. package/dist/lib/helpers/MemberTypeUiHelper.d.ts +13 -0
  86. package/dist/lib/helpers/MemberTypeUiHelper.js +35 -0
  87. package/dist/lib/helpers/MemberTypeUiHelper.js.map +1 -0
  88. package/dist/lib/helpers/MemberUiHelper.d.ts +45 -0
  89. package/dist/lib/helpers/MemberUiHelper.js +130 -0
  90. package/dist/lib/helpers/MemberUiHelper.js.map +1 -0
  91. package/dist/lib/helpers/ModelsBuilderApiHelper.d.ts +6 -0
  92. package/dist/lib/helpers/ModelsBuilderApiHelper.js +15 -0
  93. package/dist/lib/helpers/ModelsBuilderApiHelper.js.map +1 -0
  94. package/dist/lib/helpers/ModelsBuilderUiHelper.d.ts +9 -0
  95. package/dist/lib/helpers/ModelsBuilderUiHelper.js +22 -0
  96. package/dist/lib/helpers/ModelsBuilderUiHelper.js.map +1 -0
  97. package/dist/lib/helpers/ObjectTypesApiHelper.d.ts +7 -0
  98. package/dist/lib/helpers/ObjectTypesApiHelper.js +25 -0
  99. package/dist/lib/helpers/ObjectTypesApiHelper.js.map +1 -0
  100. package/dist/lib/helpers/PackageApiHelper.d.ts +3 -2
  101. package/dist/lib/helpers/PackageApiHelper.js +6 -3
  102. package/dist/lib/helpers/PackageApiHelper.js.map +1 -1
  103. package/dist/lib/helpers/PackageUiHelper.d.ts +49 -0
  104. package/dist/lib/helpers/PackageUiHelper.js +134 -0
  105. package/dist/lib/helpers/PackageUiHelper.js.map +1 -0
  106. package/dist/lib/helpers/PartialViewApiHelper.d.ts +5 -4
  107. package/dist/lib/helpers/PartialViewApiHelper.js +36 -30
  108. package/dist/lib/helpers/PartialViewApiHelper.js.map +1 -1
  109. package/dist/lib/helpers/PartialViewUiHelper.d.ts +7 -11
  110. package/dist/lib/helpers/PartialViewUiHelper.js +27 -36
  111. package/dist/lib/helpers/PartialViewUiHelper.js.map +1 -1
  112. package/dist/lib/helpers/ProfilingUiHelper.d.ts +11 -0
  113. package/dist/lib/helpers/ProfilingUiHelper.js +27 -0
  114. package/dist/lib/helpers/ProfilingUiHelper.js.map +1 -0
  115. package/dist/lib/helpers/PublishedCacheApiHelper.d.ts +6 -0
  116. package/dist/lib/helpers/PublishedCacheApiHelper.js +15 -0
  117. package/dist/lib/helpers/PublishedCacheApiHelper.js.map +1 -0
  118. package/dist/lib/helpers/PublishedStatusUiHelper.d.ts +19 -0
  119. package/dist/lib/helpers/PublishedStatusUiHelper.js +47 -0
  120. package/dist/lib/helpers/PublishedStatusUiHelper.js.map +1 -0
  121. package/dist/lib/helpers/RedirectManagementApiHelper.d.ts +10 -0
  122. package/dist/lib/helpers/RedirectManagementApiHelper.js +30 -0
  123. package/dist/lib/helpers/RedirectManagementApiHelper.js.map +1 -0
  124. package/dist/lib/helpers/RedirectManagementUiHelper.d.ts +17 -0
  125. package/dist/lib/helpers/RedirectManagementUiHelper.js +45 -0
  126. package/dist/lib/helpers/RedirectManagementUiHelper.js.map +1 -0
  127. package/dist/lib/helpers/RelationTypeApiHelper.d.ts +15 -0
  128. package/dist/lib/helpers/{RelationType.js → RelationTypeApiHelper.js} +45 -58
  129. package/dist/lib/helpers/RelationTypeApiHelper.js.map +1 -0
  130. package/dist/lib/helpers/RelationTypeUiHelper.d.ts +21 -0
  131. package/dist/lib/helpers/RelationTypeUiHelper.js +55 -0
  132. package/dist/lib/helpers/RelationTypeUiHelper.js.map +1 -0
  133. package/dist/lib/helpers/ScriptApiHelper.d.ts +5 -3
  134. package/dist/lib/helpers/ScriptApiHelper.js +44 -26
  135. package/dist/lib/helpers/ScriptApiHelper.js.map +1 -1
  136. package/dist/lib/helpers/ScriptUiHelper.d.ts +8 -12
  137. package/dist/lib/helpers/ScriptUiHelper.js +31 -40
  138. package/dist/lib/helpers/ScriptUiHelper.js.map +1 -1
  139. package/dist/lib/helpers/StylesheetApiHelper.d.ts +6 -4
  140. package/dist/lib/helpers/StylesheetApiHelper.js +47 -41
  141. package/dist/lib/helpers/StylesheetApiHelper.js.map +1 -1
  142. package/dist/lib/helpers/StylesheetUiHelper.d.ts +17 -15
  143. package/dist/lib/helpers/StylesheetUiHelper.js +60 -47
  144. package/dist/lib/helpers/StylesheetUiHelper.js.map +1 -1
  145. package/dist/lib/helpers/TelemetryDataUiHelper.d.ts +10 -0
  146. package/dist/lib/helpers/TelemetryDataUiHelper.js +25 -0
  147. package/dist/lib/helpers/TelemetryDataUiHelper.js.map +1 -0
  148. package/dist/lib/helpers/TemplateApiHelper.d.ts +1 -0
  149. package/dist/lib/helpers/TemplateApiHelper.js +6 -0
  150. package/dist/lib/helpers/TemplateApiHelper.js.map +1 -1
  151. package/dist/lib/helpers/TemplateUiHelper.d.ts +14 -18
  152. package/dist/lib/helpers/TemplateUiHelper.js +65 -59
  153. package/dist/lib/helpers/TemplateUiHelper.js.map +1 -1
  154. package/dist/lib/helpers/TemporaryFileApiHelper.d.ts +17 -1
  155. package/dist/lib/helpers/TemporaryFileApiHelper.js +23 -10
  156. package/dist/lib/helpers/TemporaryFileApiHelper.js.map +1 -1
  157. package/dist/lib/helpers/UiBaseLocators.d.ts +213 -9
  158. package/dist/lib/helpers/UiBaseLocators.js +703 -39
  159. package/dist/lib/helpers/UiBaseLocators.js.map +1 -1
  160. package/dist/lib/helpers/UiHelpers.d.ts +49 -7
  161. package/dist/lib/helpers/UiHelpers.js +75 -21
  162. package/dist/lib/helpers/UiHelpers.js.map +1 -1
  163. package/dist/lib/helpers/UserApiHelper.d.ts +19 -10
  164. package/dist/lib/helpers/UserApiHelper.js +72 -20
  165. package/dist/lib/helpers/UserApiHelper.js.map +1 -1
  166. package/dist/lib/helpers/UserGroupApiHelper.d.ts +5 -3
  167. package/dist/lib/helpers/UserGroupApiHelper.js +20 -19
  168. package/dist/lib/helpers/UserGroupApiHelper.js.map +1 -1
  169. package/dist/lib/helpers/UserGroupUiHelper.d.ts +20 -0
  170. package/dist/lib/helpers/UserGroupUiHelper.js +56 -0
  171. package/dist/lib/helpers/UserGroupUiHelper.js.map +1 -0
  172. package/dist/lib/helpers/UserUiHelper.d.ts +80 -0
  173. package/dist/lib/helpers/UserUiHelper.js +221 -0
  174. package/dist/lib/helpers/UserUiHelper.js.map +1 -0
  175. package/dist/lib/helpers/WelcomeDashboardUiHelper.d.ts +9 -0
  176. package/dist/lib/helpers/WelcomeDashboardUiHelper.js +22 -0
  177. package/dist/lib/helpers/WelcomeDashboardUiHelper.js.map +1 -0
  178. package/dist/lib/helpers/testExtension.js +4 -0
  179. package/dist/lib/helpers/testExtension.js.map +1 -1
  180. package/dist/tsconfig.tsbuildinfo +1 -1
  181. package/dist/umbraco.config.js +1 -1
  182. package/dist/umbraco.config.js.map +1 -1
  183. package/package.json +9 -11
  184. package/dist/lib/helpers/RelationType.d.ts +0 -15
  185. package/dist/lib/helpers/RelationType.js.map +0 -1
@@ -1,11 +1,376 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DocumentApiHelper = void 0;
4
+ const AliasHelper_1 = require("./AliasHelper");
5
+ const json_models_builders_1 = require("@umbraco/json-models-builders");
4
6
  class DocumentApiHelper {
5
7
  api;
6
8
  constructor(api) {
7
9
  this.api = api;
8
10
  }
11
+ async get(id) {
12
+ const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/document/' + id);
13
+ return await response.json();
14
+ }
15
+ async doesExist(id) {
16
+ const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/document/' + id);
17
+ return response.status() === 200;
18
+ }
19
+ async create(document) {
20
+ if (document == null) {
21
+ return;
22
+ }
23
+ const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/document', document);
24
+ return response.headers().location.split("v1/document/").pop();
25
+ }
26
+ async delete(id) {
27
+ if (id == null) {
28
+ return;
29
+ }
30
+ const response = await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/document/' + id);
31
+ return response.status();
32
+ }
33
+ async update(id, document) {
34
+ if (document == null) {
35
+ return;
36
+ }
37
+ const variantsData = document.variants.map(variant => ({
38
+ culture: variant.culture,
39
+ segment: variant.segment,
40
+ name: variant.name
41
+ }));
42
+ const updateData = {
43
+ values: document.values,
44
+ variants: variantsData,
45
+ template: document.template
46
+ };
47
+ return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/document/' + id, updateData);
48
+ }
49
+ async getAllAtRoot() {
50
+ return await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/document/root?skip=0&take=10000');
51
+ }
52
+ async getChildren(id) {
53
+ const response = await this.api.get(`${this.api.baseUrl}/umbraco/management/api/v1/tree/document/children?parentId=${id}&skip=0&take=10000`);
54
+ const items = await response.json();
55
+ return items.items;
56
+ }
57
+ async getChildrenAmount(id) {
58
+ const response = await this.api.get(`${this.api.baseUrl}/umbraco/management/api/v1/tree/document/children?parentId=${id}&skip=0&take=10000`);
59
+ const items = await response.json();
60
+ return items.total;
61
+ }
62
+ async doesNameExist(name) {
63
+ return await this.getByName(name);
64
+ }
65
+ async recurseDeleteChildren(id) {
66
+ const items = await this.getChildren(id);
67
+ for (const child of items) {
68
+ if (child.hasChildren) {
69
+ await this.recurseDeleteChildren(child.id);
70
+ }
71
+ else {
72
+ await this.delete(child.id);
73
+ }
74
+ }
75
+ return await this.delete(id);
76
+ }
77
+ async recurseChildren(name, id, toDelete) {
78
+ const items = await this.getChildren(id);
79
+ for (const child of items) {
80
+ for (const variant of child.variants) {
81
+ if (variant.name === name) {
82
+ if (!toDelete) {
83
+ return await this.get(child.id);
84
+ }
85
+ if (child.hasChildren) {
86
+ return await this.recurseDeleteChildren(child.id);
87
+ }
88
+ else {
89
+ return await this.delete(child.id);
90
+ }
91
+ }
92
+ }
93
+ if (child.hasChildren) {
94
+ await this.recurseChildren(name, child.id, toDelete);
95
+ }
96
+ }
97
+ return false;
98
+ }
99
+ async getByName(name) {
100
+ const rootDocuments = await this.getAllAtRoot();
101
+ const jsonDocuments = await rootDocuments.json();
102
+ for (const document of jsonDocuments.items) {
103
+ for (const variant of document.variants) {
104
+ if (variant.name === name) {
105
+ return this.get(document.id);
106
+ }
107
+ }
108
+ if (document.hasChildren) {
109
+ const result = await this.recurseChildren(name, document.id, false);
110
+ if (result) {
111
+ return result;
112
+ }
113
+ }
114
+ }
115
+ return false;
116
+ }
117
+ async ensureNameNotExists(name) {
118
+ const rootDocuments = await this.getAllAtRoot();
119
+ const jsonDocuments = await rootDocuments.json();
120
+ for (const document of jsonDocuments.items) {
121
+ for (const variant of document.variants) {
122
+ if (variant.name === name) {
123
+ if (document.hasChildren) {
124
+ await this.recurseDeleteChildren(document.id);
125
+ }
126
+ await this.delete(document.id);
127
+ }
128
+ else {
129
+ if (document.hasChildren) {
130
+ await this.recurseChildren(name, document.id, true);
131
+ }
132
+ }
133
+ }
134
+ }
135
+ }
136
+ async publish(id, publishSchedulesData) {
137
+ if (id == null) {
138
+ return;
139
+ }
140
+ const response = await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/document/' + id + '/publish', publishSchedulesData);
141
+ return response.status();
142
+ }
143
+ async createDefaultDocument(documentName, documentTypeId) {
144
+ await this.ensureNameNotExists(documentName);
145
+ const document = new json_models_builders_1.DocumentBuilder()
146
+ .withDocumentTypeId(documentTypeId)
147
+ .addVariant()
148
+ .withName(documentName)
149
+ .done()
150
+ .build();
151
+ return await this.create(document);
152
+ }
153
+ async createDocumentWithTextContent(documentName, documentTypeId, textContent, dataTypeName) {
154
+ await this.ensureNameNotExists(documentName);
155
+ const document = new json_models_builders_1.DocumentBuilder()
156
+ .withDocumentTypeId(documentTypeId)
157
+ .addVariant()
158
+ .withName(documentName)
159
+ .done()
160
+ .addValue()
161
+ .withAlias(AliasHelper_1.AliasHelper.toAlias(dataTypeName))
162
+ .withValue(textContent)
163
+ .done()
164
+ .build();
165
+ return await this.create(document);
166
+ }
167
+ async createDefaultDocumentWithParent(documentName, documentTypeId, parentId) {
168
+ await this.ensureNameNotExists(documentName);
169
+ const document = new json_models_builders_1.DocumentBuilder()
170
+ .withDocumentTypeId(documentTypeId)
171
+ .withParentId(parentId)
172
+ .addVariant()
173
+ .withName(documentName)
174
+ .done()
175
+ .build();
176
+ return await this.create(document);
177
+ }
178
+ async createDocumentWithTemplate(documentName, documentTypeId, templateId) {
179
+ await this.ensureNameNotExists(documentName);
180
+ const document = new json_models_builders_1.DocumentBuilder()
181
+ .withDocumentTypeId(documentTypeId)
182
+ .addVariant()
183
+ .withName(documentName)
184
+ .done()
185
+ .withTemplateId(templateId)
186
+ .build();
187
+ return await this.create(document);
188
+ }
189
+ async createDocumentWithContentPicker(documentName, documentTypeId, contentPickerId) {
190
+ await this.ensureNameNotExists(documentName);
191
+ const document = new json_models_builders_1.DocumentBuilder()
192
+ .withDocumentTypeId(documentTypeId)
193
+ .addVariant()
194
+ .withName(documentName)
195
+ .done()
196
+ .addValue()
197
+ .withAlias('contentPicker')
198
+ .withValue(contentPickerId)
199
+ .done()
200
+ .build();
201
+ return await this.create(document);
202
+ }
203
+ async createDocumentWithOneMediaPicker(documentName, documentTypeId, mediaPickerId) {
204
+ await this.ensureNameNotExists(documentName);
205
+ const document = new json_models_builders_1.DocumentBuilder()
206
+ .withDocumentTypeId(documentTypeId)
207
+ .addVariant()
208
+ .withName(documentName)
209
+ .done()
210
+ .addValue()
211
+ .withAlias('mediaPicker')
212
+ .addMediaPickerValue()
213
+ .withMediaKey(mediaPickerId)
214
+ .done()
215
+ .done()
216
+ .build();
217
+ return await this.create(document);
218
+ }
219
+ async createDocumentWithTwoMediaPicker(documentName, documentTypeId, firstMediaPickerId, secondMediaPickerId, alias = 'multipleMediaPicker') {
220
+ await this.ensureNameNotExists(documentName);
221
+ const document = new json_models_builders_1.DocumentBuilder()
222
+ .withDocumentTypeId(documentTypeId)
223
+ .addVariant()
224
+ .withName(documentName)
225
+ .done()
226
+ .addValue()
227
+ .withAlias(alias)
228
+ .addMediaPickerValue()
229
+ .withMediaKey(firstMediaPickerId)
230
+ .done()
231
+ .addMediaPickerValue()
232
+ .withMediaKey(secondMediaPickerId)
233
+ .done()
234
+ .done()
235
+ .build();
236
+ return await this.create(document);
237
+ }
238
+ async createDocumentWithMemberPicker(documentName, documentTypeId, memberId) {
239
+ await this.ensureNameNotExists(documentName);
240
+ const document = new json_models_builders_1.DocumentBuilder()
241
+ .withDocumentTypeId(documentTypeId)
242
+ .addVariant()
243
+ .withName(documentName)
244
+ .done()
245
+ .addValue()
246
+ .withAlias('memberPicker')
247
+ .withValue(memberId)
248
+ .done()
249
+ .build();
250
+ return await this.create(document);
251
+ }
252
+ async createDocumentWithTags(documentName, documentTypeId, tagsName) {
253
+ await this.ensureNameNotExists(documentName);
254
+ const document = new json_models_builders_1.DocumentBuilder()
255
+ .withDocumentTypeId(documentTypeId)
256
+ .addVariant()
257
+ .withName(documentName)
258
+ .done()
259
+ .addValue()
260
+ .withAlias('tags')
261
+ .withValue(tagsName)
262
+ .done()
263
+ .build();
264
+ return await this.create(document);
265
+ }
266
+ async createDocumentWithExternalLinkURLPicker(documentName, documentTypeId, link, linkTitle) {
267
+ await this.ensureNameNotExists(documentName);
268
+ const document = new json_models_builders_1.DocumentBuilder()
269
+ .withDocumentTypeId(documentTypeId)
270
+ .addVariant()
271
+ .withName(documentName)
272
+ .done()
273
+ .addValue()
274
+ .withAlias('multiUrlPicker')
275
+ .addURLPickerValue()
276
+ .withIcon('icon-link')
277
+ .withName(linkTitle)
278
+ .withType('external')
279
+ .withUrl(link)
280
+ .done()
281
+ .done()
282
+ .build();
283
+ return await this.create(document);
284
+ }
285
+ // Domains
286
+ async getDomains(id) {
287
+ const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/document/' + id + '/domains');
288
+ return await response.json();
289
+ }
290
+ async updateDomains(id, domains) {
291
+ return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/document/' + id + '/domains', domains);
292
+ }
293
+ // Image Media Picker
294
+ async createDocumentWithImageMediaPicker(documentName, documentTypeId, propertyAlias, mediaKey, focalPoint = { left: 0, top: 0 }) {
295
+ await this.ensureNameNotExists(documentName);
296
+ const document = new json_models_builders_1.DocumentBuilder()
297
+ .withDocumentTypeId(documentTypeId)
298
+ .addVariant()
299
+ .withName(documentName)
300
+ .done()
301
+ .addValue()
302
+ .withAlias(propertyAlias)
303
+ .addMediaPickerValue()
304
+ .withMediaKey(mediaKey)
305
+ .withFocalPoint(focalPoint)
306
+ .done()
307
+ .done()
308
+ .build();
309
+ return await this.create(document);
310
+ }
311
+ async doesImageMediaPickerContainImage(id, propertyAlias, mediaKey) {
312
+ const contentData = await this.getByName(id);
313
+ return contentData.values.some(value => value.alias === propertyAlias && value.value.some(item => item.mediaKey === mediaKey));
314
+ }
315
+ async doesImageMediaPickerContainImageWithFocalPoint(id, propertyAlias, mediaKey, focalPoint) {
316
+ const contentData = await this.getByName(id);
317
+ if (focalPoint.left <= 0 || focalPoint.top <= 0) {
318
+ return contentData.values.some(value => value.alias === propertyAlias && value.value.some(item => {
319
+ return item.mediaKey === mediaKey && item.focalPoint === null;
320
+ }));
321
+ }
322
+ // When selecting a focalpoint, it is not exact down to the decimal, so we need a small tolerance to account for that.
323
+ const tolerance = 0.02;
324
+ return contentData.values.some(value => value.alias === propertyAlias && value.value.some(item => {
325
+ // Check if the mediaKey is the same and the focalPoint is within the tolerance
326
+ return item.mediaKey === mediaKey &&
327
+ Math.abs(item.focalPoint.left - focalPoint.left) <= tolerance * focalPoint.left &&
328
+ Math.abs(item.focalPoint.top - focalPoint.top) <= tolerance * focalPoint.top;
329
+ }));
330
+ }
331
+ async createDocumentWithUploadFile(documentName, documentTypeId, dataTypeName, uploadFileName, mineType) {
332
+ await this.ensureNameNotExists(documentName);
333
+ const temporaryFile = await this.api.temporaryFile.createTemporaryFile(uploadFileName, 'File', mineType);
334
+ const document = new json_models_builders_1.DocumentBuilder()
335
+ .withDocumentTypeId(documentTypeId)
336
+ .addVariant()
337
+ .withName(documentName)
338
+ .done()
339
+ .addValue()
340
+ .withAlias(AliasHelper_1.AliasHelper.toAlias(dataTypeName))
341
+ .withTemporaryFileId(temporaryFile.temporaryFileId)
342
+ .done()
343
+ .build();
344
+ return await this.create(document);
345
+ }
346
+ async createDefaultDocumentWithEnglishCulture(documentName, documentTypeId) {
347
+ await this.ensureNameNotExists(documentName);
348
+ const document = new json_models_builders_1.DocumentBuilder()
349
+ .withDocumentTypeId(documentTypeId)
350
+ .addVariant()
351
+ .withName(documentName)
352
+ .withCulture('en-US')
353
+ .done()
354
+ .build();
355
+ return await this.create(document);
356
+ }
357
+ async createDocumentWithEnglishCultureAndTextContent(documentName, documentTypeId, textContent, dataTypeName, varyByCultureForText = false) {
358
+ await this.ensureNameNotExists(documentName);
359
+ const cultureValue = varyByCultureForText === true ? 'en-US' : null;
360
+ const document = new json_models_builders_1.DocumentBuilder()
361
+ .withDocumentTypeId(documentTypeId)
362
+ .addVariant()
363
+ .withName(documentName)
364
+ .withCulture('en-US')
365
+ .done()
366
+ .addValue()
367
+ .withAlias(AliasHelper_1.AliasHelper.toAlias(dataTypeName))
368
+ .withValue(textContent)
369
+ .withCulture(cultureValue)
370
+ .done()
371
+ .build();
372
+ return await this.create(document);
373
+ }
9
374
  }
10
375
  exports.DocumentApiHelper = DocumentApiHelper;
11
376
  //# sourceMappingURL=DocumentApiHelper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/DocumentApiHelper.ts"],"names":[],"mappings":";;;AAEA,MAAa,iBAAiB;IAC5B,GAAG,CAAY;IAEf,YAAY,GAAe;QACzB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;CAEF;AAPD,8CAOC","sourcesContent":["import {ApiHelpers} from \"./ApiHelpers\";\n\nexport class DocumentApiHelper {\n api: ApiHelpers\n\n constructor(api: ApiHelpers) {\n this.api = api;\n }\n\n}"]}
1
+ {"version":3,"file":"DocumentApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/DocumentApiHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import {AliasHelper} from \"./AliasHelper\";\nimport {ApiHelpers} from \"./ApiHelpers\";\nimport {DocumentBuilder} from \"@umbraco/json-models-builders\";\n\nexport class DocumentApiHelper {\n api: ApiHelpers\n\n constructor(api: ApiHelpers) {\n this.api = api;\n }\n\n async get(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/document/' + id);\n return await response.json();\n }\n\n async doesExist(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/document/' + id);\n return response.status() === 200;\n }\n\n async create(document) {\n if (document == null) {\n return;\n }\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/document', document);\n return response.headers().location.split(\"v1/document/\").pop();\n }\n\n async delete(id: string) {\n if (id == null) {\n return;\n }\n const response = await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/document/' + id);\n return response.status();\n }\n\n async update(id: string, document) {\n if (document == null) {\n return;\n }\n const variantsData = document.variants.map(variant => ({\n culture: variant.culture,\n segment: variant.segment,\n name: variant.name\n }));\n \n const updateData = {\n values: document.values,\n variants: variantsData,\n template: document.template\n };\n return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/document/' + id, updateData);\n }\n\n async getAllAtRoot() {\n return await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/document/root?skip=0&take=10000');\n }\n\n async getChildren(id: string) {\n const response = await this.api.get(`${this.api.baseUrl}/umbraco/management/api/v1/tree/document/children?parentId=${id}&skip=0&take=10000`);\n const items = await response.json();\n return items.items;\n }\n\n async getChildrenAmount(id: string) {\n const response = await this.api.get(`${this.api.baseUrl}/umbraco/management/api/v1/tree/document/children?parentId=${id}&skip=0&take=10000`);\n const items = await response.json();\n return items.total;\n }\n\n async doesNameExist(name: string) {\n return await this.getByName(name);\n }\n\n private async recurseDeleteChildren(id: string) {\n const items = await this.getChildren(id);\n\n for (const child of items) {\n if (child.hasChildren) {\n await this.recurseDeleteChildren(child.id);\n } else {\n await this.delete(child.id);\n }\n }\n return await this.delete(id);\n }\n\n private async recurseChildren(name: string, id: string, toDelete: boolean) {\n const items = await this.getChildren(id);\n\n for (const child of items) {\n for (const variant of child.variants) {\n if (variant.name === name) {\n if (!toDelete) {\n return await this.get(child.id);\n }\n if (child.hasChildren) {\n return await this.recurseDeleteChildren(child.id);\n } else {\n return await this.delete(child.id);\n }\n }\n }\n if (child.hasChildren) {\n await this.recurseChildren(name, child.id, toDelete);\n }\n }\n return false;\n }\n\n async getByName(name: string) {\n const rootDocuments = await this.getAllAtRoot();\n const jsonDocuments = await rootDocuments.json();\n\n for (const document of jsonDocuments.items) {\n for (const variant of document.variants) {\n if (variant.name === name) {\n return this.get(document.id);\n }\n }\n if (document.hasChildren) {\n const result = await this.recurseChildren(name, document.id, false);\n if (result) { \n return result;\n }\n }\n }\n return false;\n }\n\n async ensureNameNotExists(name: string) {\n const rootDocuments = await this.getAllAtRoot();\n const jsonDocuments = await rootDocuments.json();\n\n for (const document of jsonDocuments.items) {\n for (const variant of document.variants) {\n if (variant.name === name) {\n if (document.hasChildren) {\n await this.recurseDeleteChildren(document.id);\n }\n await this.delete(document.id);\n } else {\n if (document.hasChildren) {\n await this.recurseChildren(name, document.id, true);\n }\n }\n }\n }\n }\n\n async publish(id: string, publishSchedulesData) {\n if (id == null) {\n return;\n }\n const response = await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/document/' + id + '/publish', publishSchedulesData);\n return response.status();\n }\n\n async createDefaultDocument(documentName: string, documentTypeId: string) {\n await this.ensureNameNotExists(documentName);\n\n const document = new DocumentBuilder()\n .withDocumentTypeId(documentTypeId)\n .addVariant()\n .withName(documentName)\n .done()\n .build();\n\n return await this.create(document);\n }\n\n async createDocumentWithTextContent(documentName: string, documentTypeId: string, textContent: string, dataTypeName: string) {\n await this.ensureNameNotExists(documentName);\n\n const document = new DocumentBuilder()\n .withDocumentTypeId(documentTypeId)\n .addVariant()\n .withName(documentName)\n .done()\n .addValue()\n .withAlias(AliasHelper.toAlias(dataTypeName))\n .withValue(textContent)\n .done()\n .build();\n\n return await this.create(document);\n }\n\n async createDefaultDocumentWithParent(documentName: string, documentTypeId: string, parentId: string) {\n await this.ensureNameNotExists(documentName);\n\n const document = new DocumentBuilder()\n .withDocumentTypeId(documentTypeId)\n .withParentId(parentId)\n .addVariant()\n .withName(documentName)\n .done()\n .build();\n\n return await this.create(document);\n }\n\n async createDocumentWithTemplate(documentName: string, documentTypeId: string, templateId: string) {\n await this.ensureNameNotExists(documentName);\n\n const document = new DocumentBuilder()\n .withDocumentTypeId(documentTypeId)\n .addVariant()\n .withName(documentName)\n .done()\n .withTemplateId(templateId)\n .build();\n\n return await this.create(document);\n }\n\n async createDocumentWithContentPicker(documentName: string, documentTypeId: string, contentPickerId: string) {\n await this.ensureNameNotExists(documentName);\n\n const document = new DocumentBuilder()\n .withDocumentTypeId(documentTypeId)\n .addVariant()\n .withName(documentName)\n .done()\n .addValue()\n .withAlias('contentPicker')\n .withValue(contentPickerId)\n .done()\n .build();\n\n return await this.create(document);\n }\n\n async createDocumentWithOneMediaPicker(documentName: string, documentTypeId: string, mediaPickerId: string) {\n await this.ensureNameNotExists(documentName);\n\n const document = new DocumentBuilder()\n .withDocumentTypeId(documentTypeId)\n .addVariant()\n .withName(documentName)\n .done()\n .addValue()\n .withAlias('mediaPicker')\n .addMediaPickerValue()\n .withMediaKey(mediaPickerId)\n .done()\n .done()\n .build();\n\n return await this.create(document);\n }\n\n async createDocumentWithTwoMediaPicker(documentName: string, documentTypeId: string, firstMediaPickerId: string, secondMediaPickerId: string, alias: string = 'multipleMediaPicker') {\n await this.ensureNameNotExists(documentName);\n\n const document = new DocumentBuilder()\n .withDocumentTypeId(documentTypeId)\n .addVariant()\n .withName(documentName)\n .done()\n .addValue()\n .withAlias(alias)\n .addMediaPickerValue()\n .withMediaKey(firstMediaPickerId)\n .done()\n .addMediaPickerValue()\n .withMediaKey(secondMediaPickerId)\n .done()\n .done()\n .build();\n\n return await this.create(document);\n }\n\n async createDocumentWithMemberPicker(documentName: string, documentTypeId: string, memberId: string) {\n await this.ensureNameNotExists(documentName);\n\n const document = new DocumentBuilder()\n .withDocumentTypeId(documentTypeId)\n .addVariant()\n .withName(documentName)\n .done()\n .addValue()\n .withAlias('memberPicker')\n .withValue(memberId)\n .done()\n .build();\n \n return await this.create(document);\n }\n\n async createDocumentWithTags(documentName: string, documentTypeId: string, tagsName: string[]) {\n await this.ensureNameNotExists(documentName);\n\n const document = new DocumentBuilder()\n .withDocumentTypeId(documentTypeId)\n .addVariant()\n .withName(documentName)\n .done()\n .addValue()\n .withAlias('tags')\n .withValue(tagsName)\n .done()\n .build();\n \n return await this.create(document);\n }\n\n async createDocumentWithExternalLinkURLPicker(documentName: string, documentTypeId: string, link: string, linkTitle: string) {\n await this.ensureNameNotExists(documentName);\n\n const document = new DocumentBuilder()\n .withDocumentTypeId(documentTypeId)\n .addVariant()\n .withName(documentName)\n .done()\n .addValue()\n .withAlias('multiUrlPicker')\n .addURLPickerValue()\n .withIcon('icon-link')\n .withName(linkTitle)\n .withType('external')\n .withUrl(link)\n .done()\n .done()\n .build();\n \n return await this.create(document);\n }\n\n // Domains\n async getDomains(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/document/' + id + '/domains');\n return await response.json();\n }\n\n async updateDomains(id: string, domains) {\n return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/document/' + id + '/domains', domains);\n }\n \n // Image Media Picker\n async createDocumentWithImageMediaPicker(documentName: string, documentTypeId: string, propertyAlias: string, mediaKey: string, focalPoint: {left: number, top: number} = {left: 0, top: 0}) {\n await this.ensureNameNotExists(documentName);\n\n const document = new DocumentBuilder()\n .withDocumentTypeId(documentTypeId)\n .addVariant()\n .withName(documentName)\n .done()\n .addValue()\n .withAlias(propertyAlias)\n .addMediaPickerValue()\n .withMediaKey(mediaKey)\n .withFocalPoint(focalPoint)\n .done()\n .done()\n .build();\n\n return await this.create(document);\n }\n \n async doesImageMediaPickerContainImage(id: string, propertyAlias: string, mediaKey: string) {\n const contentData = await this.getByName(id);\n return contentData.values.some(value =>\n value.alias === propertyAlias && value.value.some(item => item.mediaKey === mediaKey)\n );\n }\n\n async doesImageMediaPickerContainImageWithFocalPoint(id: string, propertyAlias: string, mediaKey: string, focalPoint: {left: number, top: number}) {\n const contentData = await this.getByName(id);\n\n if (focalPoint.left <= 0 || focalPoint.top <= 0) {\n return contentData.values.some(value => value.alias === propertyAlias && value.value.some(item => {\n return item.mediaKey === mediaKey && item.focalPoint === null;\n }));\n }\n\n // When selecting a focalpoint, it is not exact down to the decimal, so we need a small tolerance to account for that.\n const tolerance = 0.02;\n\n return contentData.values.some(value =>\n value.alias === propertyAlias && value.value.some(item => {\n // Check if the mediaKey is the same and the focalPoint is within the tolerance\n return item.mediaKey === mediaKey &&\n Math.abs(item.focalPoint.left - focalPoint.left) <= tolerance * focalPoint.left &&\n Math.abs(item.focalPoint.top - focalPoint.top) <= tolerance * focalPoint.top;\n })\n );\n }\n\n async createDocumentWithUploadFile(documentName: string, documentTypeId: string, dataTypeName: string, uploadFileName: string, mineType: string) {\n await this.ensureNameNotExists(documentName);\n const temporaryFile = await this.api.temporaryFile.createTemporaryFile(uploadFileName, 'File', mineType);\n\n const document = new DocumentBuilder()\n .withDocumentTypeId(documentTypeId)\n .addVariant()\n .withName(documentName)\n .done()\n .addValue()\n .withAlias(AliasHelper.toAlias(dataTypeName))\n .withTemporaryFileId(temporaryFile.temporaryFileId)\n .done()\n .build();\n\n return await this.create(document);\n }\n\n async createDefaultDocumentWithEnglishCulture(documentName: string, documentTypeId: string) {\n await this.ensureNameNotExists(documentName);\n\n const document = new DocumentBuilder()\n .withDocumentTypeId(documentTypeId)\n .addVariant()\n .withName(documentName)\n .withCulture('en-US')\n .done()\n .build();\n\n return await this.create(document);\n }\n\n async createDocumentWithEnglishCultureAndTextContent(documentName: string, documentTypeId: string, textContent: string, dataTypeName: string, varyByCultureForText: boolean = false) {\n await this.ensureNameNotExists(documentName);\n const cultureValue = varyByCultureForText === true ? 'en-US' : null;\n\n const document = new DocumentBuilder()\n .withDocumentTypeId(documentTypeId)\n .addVariant()\n .withName(documentName)\n .withCulture('en-US')\n .done()\n .addValue()\n .withAlias(AliasHelper.toAlias(dataTypeName))\n .withValue(textContent)\n .withCulture(cultureValue)\n .done()\n .build();\n\n return await this.create(document);\n }\n} "]}
@@ -0,0 +1,18 @@
1
+ import { ApiHelpers } from "./ApiHelpers";
2
+ export declare class DocumentBlueprintApiHelper {
3
+ api: ApiHelpers;
4
+ constructor(api: ApiHelpers);
5
+ get(id: string): Promise<any>;
6
+ doesExist(id: string): Promise<boolean>;
7
+ create(documentBlueprint: any): Promise<string | undefined>;
8
+ delete(id: string): Promise<number | undefined>;
9
+ update(id: string, documentBlueprint: any): Promise<import("playwright-core").APIResponse | undefined>;
10
+ getAllAtRoot(): Promise<import("playwright-core").APIResponse>;
11
+ getChildren(id: string): Promise<any>;
12
+ doesNameExist(name: string): Promise<any>;
13
+ private recurseDeleteChildren;
14
+ private recurseChildren;
15
+ getByName(name: string): Promise<any>;
16
+ ensureNameNotExists(name: string): Promise<void>;
17
+ createDefaultDocumentBlueprint(documentBlueprintName: string, documentTypeId: string): Promise<string | undefined>;
18
+ }
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DocumentBlueprintApiHelper = void 0;
4
+ const json_models_builders_1 = require("@umbraco/json-models-builders");
5
+ class DocumentBlueprintApiHelper {
6
+ api;
7
+ constructor(api) {
8
+ this.api = api;
9
+ }
10
+ async get(id) {
11
+ const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/document-blueprint/' + id);
12
+ return await response.json();
13
+ }
14
+ async doesExist(id) {
15
+ const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/document-blueprint/' + id);
16
+ return response.status() === 200;
17
+ }
18
+ async create(documentBlueprint) {
19
+ if (documentBlueprint == null) {
20
+ return;
21
+ }
22
+ const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/document-blueprint', documentBlueprint);
23
+ return response.headers().location.split("v1/document-blueprint/").pop();
24
+ }
25
+ async delete(id) {
26
+ if (id == null) {
27
+ return;
28
+ }
29
+ const response = await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/document-blueprint/' + id);
30
+ return response.status();
31
+ }
32
+ async update(id, documentBlueprint) {
33
+ if (documentBlueprint == null) {
34
+ return;
35
+ }
36
+ return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/document-blueprint/' + id, documentBlueprint);
37
+ }
38
+ async getAllAtRoot() {
39
+ return await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/document-blueprint/root?skip=0&take=1000&foldersOnly=false');
40
+ }
41
+ async getChildren(id) {
42
+ const response = await this.api.get(`${this.api.baseUrl}/umbraco/management/api/v1/tree/document-blueprint/children?parentId=${id}&skip=0&take=10000&foldersOnly=false`);
43
+ const items = await response.json();
44
+ return items.items;
45
+ }
46
+ async doesNameExist(name) {
47
+ return await this.getByName(name);
48
+ }
49
+ async recurseDeleteChildren(id) {
50
+ const items = await this.getChildren(id);
51
+ for (const child of items) {
52
+ if (child.hasChildren) {
53
+ await this.recurseDeleteChildren(child.id);
54
+ }
55
+ else {
56
+ await this.delete(child.id);
57
+ }
58
+ }
59
+ return await this.delete(id);
60
+ }
61
+ async recurseChildren(name, id, toDelete) {
62
+ const items = await this.getChildren(id);
63
+ for (const child of items) {
64
+ if (child.name === name) {
65
+ if (!toDelete) {
66
+ return await this.get(child.id);
67
+ }
68
+ if (child.hasChildren) {
69
+ return await this.recurseDeleteChildren(child.id);
70
+ }
71
+ else {
72
+ return await this.delete(child.id);
73
+ }
74
+ }
75
+ else if (child.hasChildren) {
76
+ await this.recurseChildren(name, child.id, toDelete);
77
+ }
78
+ }
79
+ return false;
80
+ }
81
+ async getByName(name) {
82
+ const rootDocumentBlueprints = await this.getAllAtRoot();
83
+ const jsonDocumentBlueprints = await rootDocumentBlueprints.json();
84
+ for (const blueprint of jsonDocumentBlueprints.items) {
85
+ if (blueprint.name === name) {
86
+ return this.get(blueprint.id);
87
+ }
88
+ else if (blueprint.hasChildren) {
89
+ const result = await this.recurseChildren(name, blueprint.id, false);
90
+ if (result) {
91
+ return result;
92
+ }
93
+ }
94
+ }
95
+ return false;
96
+ }
97
+ async ensureNameNotExists(name) {
98
+ const rootDocumentBlueprints = await this.getAllAtRoot();
99
+ const jsonDocumentBlueprints = await rootDocumentBlueprints.json();
100
+ for (const blueprint of jsonDocumentBlueprints.items) {
101
+ if (blueprint.name === name) {
102
+ if (blueprint.hasChildren) {
103
+ await this.recurseDeleteChildren(blueprint.id);
104
+ }
105
+ await this.delete(blueprint.id);
106
+ }
107
+ else {
108
+ if (blueprint.hasChildren) {
109
+ await this.recurseChildren(name, blueprint.id, true);
110
+ }
111
+ }
112
+ }
113
+ }
114
+ async createDefaultDocumentBlueprint(documentBlueprintName, documentTypeId) {
115
+ await this.ensureNameNotExists(documentBlueprintName);
116
+ const document = new json_models_builders_1.DocumentBlueprintsBuilder()
117
+ .withDocumentTypeId(documentTypeId)
118
+ .addVariant()
119
+ .withName(documentBlueprintName)
120
+ .done()
121
+ .build();
122
+ return await this.create(document);
123
+ }
124
+ }
125
+ exports.DocumentBlueprintApiHelper = DocumentBlueprintApiHelper;
126
+ //# sourceMappingURL=DocumentBlueprintApiHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocumentBlueprintApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/DocumentBlueprintApiHelper.ts"],"names":[],"mappings":";;;AACA,wEAAwE;AAExE,MAAa,0BAA0B;IACrC,GAAG,CAAa;IAEhB,YAAY,GAAe;QACzB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,gDAAgD,GAAG,EAAE,CAAC,CAAC;QAC9G,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,EAAU;QACxB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,gDAAgD,GAAG,EAAE,CAAC,CAAC;QAC9G,OAAO,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,iBAAiB;QAC5B,IAAI,iBAAiB,IAAI,IAAI,EAAE;YAC7B,OAAO;SACR;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,+CAA+C,EAAE,iBAAiB,CAAC,CAAC;QAC5H,OAAO,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,GAAG,EAAE,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,IAAI,EAAE,IAAI,IAAI,EAAE;YACd,OAAO;SACR;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,gDAAgD,GAAG,EAAE,CAAC,CAAC;QACjH,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,iBAAiB;QACxC,IAAI,iBAAiB,IAAI,IAAI,EAAE;YAC7B,OAAO;SACR;QACD,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,gDAAgD,GAAG,EAAE,EAAE,iBAAiB,CAAC,CAAC;IACzH,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,4FAA4F,CAAC,CAAC;IAC7I,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAAU;QAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,wEAAwE,EAAE,sCAAsC,CAAC,CAAC;QACzK,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAY;QAC9B,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,EAAU;QAC5C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAEzC,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE;YACzB,IAAI,KAAK,CAAC,WAAW,EAAE;gBACrB,MAAM,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;aAC5C;iBAAM;gBACL,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;aAC7B;SACF;QACD,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,IAAY,EAAE,EAAU,EAAE,QAAiB;QACvE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAEzC,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE;YACzB,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;gBACvB,IAAI,CAAC,QAAQ,EAAE;oBACb,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;iBACjC;gBACD,IAAI,KAAK,CAAC,WAAW,EAAE;oBACrB,OAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;iBACnD;qBAAM;oBACL,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;iBACpC;aACF;iBAAM,IAAI,KAAK,CAAC,WAAW,EAAE;gBAC5B,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;aACtD;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACzD,MAAM,sBAAsB,GAAG,MAAM,sBAAsB,CAAC,IAAI,EAAE,CAAC;QAEnE,KAAK,MAAM,SAAS,IAAI,sBAAsB,CAAC,KAAK,EAAE;YACpD,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI,EAAE;gBAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;aAC/B;iBAAM,IAAI,SAAS,CAAC,WAAW,EAAE;gBAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;gBACrE,IAAI,MAAM,EAAE;oBACV,OAAO,MAAM,CAAC;iBACf;aACF;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,IAAY;QACpC,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACzD,MAAM,sBAAsB,GAAG,MAAM,sBAAsB,CAAC,IAAI,EAAE,CAAC;QAEnE,KAAK,MAAM,SAAS,IAAI,sBAAsB,CAAC,KAAK,EAAE;YACpD,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI,EAAE;gBAC3B,IAAI,SAAS,CAAC,WAAW,EAAE;oBACzB,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;iBAChD;gBACD,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;aACjC;iBAAM;gBACL,IAAI,SAAS,CAAC,WAAW,EAAE;oBACzB,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;iBACtD;aACF;SACF;IACH,CAAC;IAED,KAAK,CAAC,8BAA8B,CAAC,qBAA6B,EAAE,cAAsB;QACxF,MAAM,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,gDAAyB,EAAE;aAC7C,kBAAkB,CAAC,cAAc,CAAC;aAClC,UAAU,EAAE;aACV,QAAQ,CAAC,qBAAqB,CAAC;aAC/B,IAAI,EAAE;aACR,KAAK,EAAE,CAAC;QACX,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;CACF;AApID,gEAoIC","sourcesContent":["import {ApiHelpers} from \"./ApiHelpers\";\nimport {DocumentBlueprintsBuilder} from \"@umbraco/json-models-builders\";\n\nexport class DocumentBlueprintApiHelper {\n api: ApiHelpers;\n\n constructor(api: ApiHelpers) {\n this.api = api;\n }\n\n async get(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/document-blueprint/' + id);\n return await response.json();\n }\n\n async doesExist(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/document-blueprint/' + id);\n return response.status() === 200;\n }\n\n async create(documentBlueprint) {\n if (documentBlueprint == null) {\n return;\n }\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/document-blueprint', documentBlueprint);\n return response.headers().location.split(\"v1/document-blueprint/\").pop();\n }\n\n async delete(id: string) {\n if (id == null) {\n return;\n }\n const response = await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/document-blueprint/' + id);\n return response.status();\n }\n\n async update(id: string, documentBlueprint) {\n if (documentBlueprint == null) {\n return;\n }\n return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/document-blueprint/' + id, documentBlueprint);\n }\n\n async getAllAtRoot() {\n return await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/document-blueprint/root?skip=0&take=1000&foldersOnly=false');\n }\n\n async getChildren(id: string) {\n const response = await this.api.get(`${this.api.baseUrl}/umbraco/management/api/v1/tree/document-blueprint/children?parentId=${id}&skip=0&take=10000&foldersOnly=false`);\n const items = await response.json();\n return items.items;\n }\n\n async doesNameExist(name: string) {\n return await this.getByName(name);\n }\n\n private async recurseDeleteChildren(id: string) {\n const items = await this.getChildren(id);\n\n for (const child of items) {\n if (child.hasChildren) {\n await this.recurseDeleteChildren(child.id);\n } else {\n await this.delete(child.id);\n }\n }\n return await this.delete(id);\n }\n\n private async recurseChildren(name: string, id: string, toDelete: boolean) {\n const items = await this.getChildren(id);\n\n for (const child of items) {\n if (child.name === name) {\n if (!toDelete) {\n return await this.get(child.id);\n }\n if (child.hasChildren) {\n return await this.recurseDeleteChildren(child.id);\n } else {\n return await this.delete(child.id);\n }\n } else if (child.hasChildren) {\n await this.recurseChildren(name, child.id, toDelete);\n }\n }\n return false;\n }\n\n async getByName(name: string) {\n const rootDocumentBlueprints = await this.getAllAtRoot();\n const jsonDocumentBlueprints = await rootDocumentBlueprints.json();\n\n for (const blueprint of jsonDocumentBlueprints.items) {\n if (blueprint.name === name) {\n return this.get(blueprint.id);\n } else if (blueprint.hasChildren) {\n const result = await this.recurseChildren(name, blueprint.id, false);\n if (result) {\n return result;\n }\n }\n }\n return false;\n }\n\n async ensureNameNotExists(name: string) {\n const rootDocumentBlueprints = await this.getAllAtRoot();\n const jsonDocumentBlueprints = await rootDocumentBlueprints.json();\n\n for (const blueprint of jsonDocumentBlueprints.items) {\n if (blueprint.name === name) {\n if (blueprint.hasChildren) {\n await this.recurseDeleteChildren(blueprint.id);\n }\n await this.delete(blueprint.id);\n } else {\n if (blueprint.hasChildren) {\n await this.recurseChildren(name, blueprint.id, true);\n }\n }\n }\n }\n\n async createDefaultDocumentBlueprint(documentBlueprintName: string, documentTypeId: string) {\n await this.ensureNameNotExists(documentBlueprintName);\n const document = new DocumentBlueprintsBuilder()\n .withDocumentTypeId(documentTypeId)\n .addVariant()\n .withName(documentBlueprintName)\n .done()\n .build();\n return await this.create(document);\n }\n} "]}
@@ -0,0 +1,17 @@
1
+ import { Page } from "@playwright/test";
2
+ import { UiBaseLocators } from "./UiBaseLocators";
3
+ export declare class DocumentBlueprintUiHelper extends UiBaseLocators {
4
+ private readonly documentBlueprintTree;
5
+ private readonly documentBlueprintNameTxt;
6
+ private readonly deleteMenu;
7
+ constructor(page: Page);
8
+ clickActionsMenuForDocumentBlueprints(name: string): Promise<void>;
9
+ clickActionsMenuAtRoot(): Promise<void>;
10
+ clickRootFolderCaretButton(): Promise<void>;
11
+ reloadDocumentBlueprintsTree(): Promise<void>;
12
+ goToDocumentBlueprint(blueprintName: string): Promise<void>;
13
+ isDocumentBlueprintRootTreeItemVisible(blueprintName: string, isVisible?: boolean, toReload?: boolean): Promise<void>;
14
+ clickCreateDocumentBlueprintButton(): Promise<void>;
15
+ enterDocumentBlueprintName(blueprintName: string): Promise<void>;
16
+ clickDeleteMenuButton(): Promise<void>;
17
+ }