@umbraco/playwright-testhelpers 2.0.0-beta.3 → 2.0.0-beta.30

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 (151) hide show
  1. package/dist/lib/helpers/ApiHelpers.d.ts +20 -4
  2. package/dist/lib/helpers/ApiHelpers.js +28 -4
  3. package/dist/lib/helpers/ApiHelpers.js.map +1 -1
  4. package/dist/lib/helpers/ConstantHelper.d.ts +11 -0
  5. package/dist/lib/helpers/ConstantHelper.js +16 -0
  6. package/dist/lib/helpers/ConstantHelper.js.map +1 -0
  7. package/dist/lib/helpers/DataTypeApiHelper.d.ts +14 -14
  8. package/dist/lib/helpers/DataTypeApiHelper.js +114 -133
  9. package/dist/lib/helpers/DataTypeApiHelper.js.map +1 -1
  10. package/dist/lib/helpers/DataTypeUiHelper.d.ts +140 -0
  11. package/dist/lib/helpers/DataTypeUiHelper.js +439 -0
  12. package/dist/lib/helpers/DataTypeUiHelper.js.map +1 -0
  13. package/dist/lib/helpers/DictionaryApiHelper.d.ts +12 -8
  14. package/dist/lib/helpers/DictionaryApiHelper.js +104 -66
  15. package/dist/lib/helpers/DictionaryApiHelper.js.map +1 -1
  16. package/dist/lib/helpers/DictionaryUiHelper.d.ts +31 -0
  17. package/dist/lib/helpers/DictionaryUiHelper.js +92 -0
  18. package/dist/lib/helpers/DictionaryUiHelper.js.map +1 -0
  19. package/dist/lib/helpers/DocumentApiHelper.d.ts +2 -0
  20. package/dist/lib/helpers/DocumentApiHelper.js +17 -0
  21. package/dist/lib/helpers/DocumentApiHelper.js.map +1 -1
  22. package/dist/lib/helpers/DocumentTypeApiHelper.d.ts +25 -0
  23. package/dist/lib/helpers/DocumentTypeApiHelper.js +223 -0
  24. package/dist/lib/helpers/DocumentTypeApiHelper.js.map +1 -0
  25. package/dist/lib/helpers/DocumentTypeUiHelper.d.ts +23 -0
  26. package/dist/lib/helpers/DocumentTypeUiHelper.js +62 -0
  27. package/dist/lib/helpers/DocumentTypeUiHelper.js.map +1 -0
  28. package/dist/lib/helpers/ExamineManagementUiHelper.d.ts +15 -0
  29. package/dist/lib/helpers/ExamineManagementUiHelper.js +38 -0
  30. package/dist/lib/helpers/ExamineManagementUiHelper.js.map +1 -0
  31. package/dist/lib/helpers/HealthCheckApiHelper.d.ts +13 -0
  32. package/dist/lib/helpers/HealthCheckApiHelper.js +47 -0
  33. package/dist/lib/helpers/HealthCheckApiHelper.js.map +1 -0
  34. package/dist/lib/helpers/HealthCheckUiHelper.d.ts +23 -0
  35. package/dist/lib/helpers/HealthCheckUiHelper.js +59 -0
  36. package/dist/lib/helpers/HealthCheckUiHelper.js.map +1 -0
  37. package/dist/lib/helpers/IndexerApiHelper.d.ts +7 -0
  38. package/dist/lib/helpers/IndexerApiHelper.js +19 -0
  39. package/dist/lib/helpers/IndexerApiHelper.js.map +1 -0
  40. package/dist/lib/helpers/LanguageApiHelper.d.ts +8 -4
  41. package/dist/lib/helpers/LanguageApiHelper.js +46 -26
  42. package/dist/lib/helpers/LanguageApiHelper.js.map +1 -1
  43. package/dist/lib/helpers/LanguageUiHelper.d.ts +23 -0
  44. package/dist/lib/helpers/LanguageUiHelper.js +64 -0
  45. package/dist/lib/helpers/LanguageUiHelper.js.map +1 -0
  46. package/dist/lib/helpers/LogViewerUiHelper.d.ts +37 -0
  47. package/dist/lib/helpers/LogViewerUiHelper.js +102 -0
  48. package/dist/lib/helpers/LogViewerUiHelper.js.map +1 -0
  49. package/dist/lib/helpers/LoginUiHelper.d.ts +11 -0
  50. package/dist/lib/helpers/LoginUiHelper.js +30 -0
  51. package/dist/lib/helpers/LoginUiHelper.js.map +1 -0
  52. package/dist/lib/helpers/MediaApiHelper.d.ts +7 -0
  53. package/dist/lib/helpers/MediaApiHelper.js +28 -0
  54. package/dist/lib/helpers/MediaApiHelper.js.map +1 -0
  55. package/dist/lib/helpers/MediaTypeApiHelper.d.ts +22 -0
  56. package/dist/lib/helpers/MediaTypeApiHelper.js +194 -0
  57. package/dist/lib/helpers/MediaTypeApiHelper.js.map +1 -0
  58. package/dist/lib/helpers/MediaTypeUiHelper.d.ts +15 -0
  59. package/dist/lib/helpers/MediaTypeUiHelper.js +39 -0
  60. package/dist/lib/helpers/MediaTypeUiHelper.js.map +1 -0
  61. package/dist/lib/helpers/ModelsBuilderApiHelper.d.ts +6 -0
  62. package/dist/lib/helpers/ModelsBuilderApiHelper.js +15 -0
  63. package/dist/lib/helpers/ModelsBuilderApiHelper.js.map +1 -0
  64. package/dist/lib/helpers/ModelsBuilderUiHelper.d.ts +11 -0
  65. package/dist/lib/helpers/ModelsBuilderUiHelper.js +27 -0
  66. package/dist/lib/helpers/ModelsBuilderUiHelper.js.map +1 -0
  67. package/dist/lib/helpers/ObjectTypesApiHelper.d.ts +7 -0
  68. package/dist/lib/helpers/ObjectTypesApiHelper.js +25 -0
  69. package/dist/lib/helpers/ObjectTypesApiHelper.js.map +1 -0
  70. package/dist/lib/helpers/PackageApiHelper.d.ts +3 -2
  71. package/dist/lib/helpers/PackageApiHelper.js +6 -3
  72. package/dist/lib/helpers/PackageApiHelper.js.map +1 -1
  73. package/dist/lib/helpers/PackageUiHelper.d.ts +49 -0
  74. package/dist/lib/helpers/PackageUiHelper.js +134 -0
  75. package/dist/lib/helpers/PackageUiHelper.js.map +1 -0
  76. package/dist/lib/helpers/PartialViewApiHelper.d.ts +14 -10
  77. package/dist/lib/helpers/PartialViewApiHelper.js +124 -98
  78. package/dist/lib/helpers/PartialViewApiHelper.js.map +1 -1
  79. package/dist/lib/helpers/PartialViewUiHelper.d.ts +19 -0
  80. package/dist/lib/helpers/PartialViewUiHelper.js +57 -0
  81. package/dist/lib/helpers/PartialViewUiHelper.js.map +1 -0
  82. package/dist/lib/helpers/ProfilingUiHelper.d.ts +11 -0
  83. package/dist/lib/helpers/ProfilingUiHelper.js +27 -0
  84. package/dist/lib/helpers/ProfilingUiHelper.js.map +1 -0
  85. package/dist/lib/helpers/PublishedCacheApiHelper.d.ts +6 -0
  86. package/dist/lib/helpers/PublishedCacheApiHelper.js +15 -0
  87. package/dist/lib/helpers/PublishedCacheApiHelper.js.map +1 -0
  88. package/dist/lib/helpers/PublishedStatusUiHelper.d.ts +19 -0
  89. package/dist/lib/helpers/PublishedStatusUiHelper.js +47 -0
  90. package/dist/lib/helpers/PublishedStatusUiHelper.js.map +1 -0
  91. package/dist/lib/helpers/RelationTypeApiHelper.d.ts +15 -0
  92. package/dist/lib/helpers/{RelationType.js → RelationTypeApiHelper.js} +45 -58
  93. package/dist/lib/helpers/RelationTypeApiHelper.js.map +1 -0
  94. package/dist/lib/helpers/RelationTypeUiHelper.d.ts +21 -0
  95. package/dist/lib/helpers/RelationTypeUiHelper.js +55 -0
  96. package/dist/lib/helpers/RelationTypeUiHelper.js.map +1 -0
  97. package/dist/lib/helpers/ScriptApiHelper.d.ts +15 -10
  98. package/dist/lib/helpers/ScriptApiHelper.js +144 -97
  99. package/dist/lib/helpers/ScriptApiHelper.js.map +1 -1
  100. package/dist/lib/helpers/ScriptUiHelper.d.ts +16 -0
  101. package/dist/lib/helpers/ScriptUiHelper.js +51 -0
  102. package/dist/lib/helpers/ScriptUiHelper.js.map +1 -0
  103. package/dist/lib/helpers/StylesheetApiHelper.d.ts +15 -10
  104. package/dist/lib/helpers/StylesheetApiHelper.js +139 -103
  105. package/dist/lib/helpers/StylesheetApiHelper.js.map +1 -1
  106. package/dist/lib/helpers/StylesheetUiHelper.d.ts +22 -0
  107. package/dist/lib/helpers/StylesheetUiHelper.js +68 -0
  108. package/dist/lib/helpers/StylesheetUiHelper.js.map +1 -0
  109. package/dist/lib/helpers/TelemetryDataUiHelper.d.ts +10 -0
  110. package/dist/lib/helpers/TelemetryDataUiHelper.js +25 -0
  111. package/dist/lib/helpers/TelemetryDataUiHelper.js.map +1 -0
  112. package/dist/lib/helpers/TemplateApiHelper.d.ts +7 -5
  113. package/dist/lib/helpers/TemplateApiHelper.js +75 -51
  114. package/dist/lib/helpers/TemplateApiHelper.js.map +1 -1
  115. package/dist/lib/helpers/TemplateUiHelper.d.ts +21 -0
  116. package/dist/lib/helpers/TemplateUiHelper.js +66 -0
  117. package/dist/lib/helpers/TemplateUiHelper.js.map +1 -0
  118. package/dist/lib/helpers/TemporaryFileApiHelper.d.ts +1 -1
  119. package/dist/lib/helpers/TemporaryFileApiHelper.js +6 -10
  120. package/dist/lib/helpers/TemporaryFileApiHelper.js.map +1 -1
  121. package/dist/lib/helpers/UiBaseLocators.d.ts +163 -0
  122. package/dist/lib/helpers/UiBaseLocators.js +487 -0
  123. package/dist/lib/helpers/UiBaseLocators.js.map +1 -0
  124. package/dist/lib/helpers/UiHelpers.d.ts +48 -6
  125. package/dist/lib/helpers/UiHelpers.js +75 -16
  126. package/dist/lib/helpers/UiHelpers.js.map +1 -1
  127. package/dist/lib/helpers/UserApiHelper.d.ts +7 -3
  128. package/dist/lib/helpers/UserApiHelper.js +35 -13
  129. package/dist/lib/helpers/UserApiHelper.js.map +1 -1
  130. package/dist/lib/helpers/UserGroupApiHelper.d.ts +5 -3
  131. package/dist/lib/helpers/UserGroupApiHelper.js +20 -19
  132. package/dist/lib/helpers/UserGroupApiHelper.js.map +1 -1
  133. package/dist/lib/helpers/UserGroupUiHelper.d.ts +20 -0
  134. package/dist/lib/helpers/UserGroupUiHelper.js +56 -0
  135. package/dist/lib/helpers/UserGroupUiHelper.js.map +1 -0
  136. package/dist/lib/helpers/UserUiHelper.d.ts +41 -0
  137. package/dist/lib/helpers/UserUiHelper.js +116 -0
  138. package/dist/lib/helpers/UserUiHelper.js.map +1 -0
  139. package/dist/lib/helpers/WelcomeDashboardUiHelper.d.ts +9 -0
  140. package/dist/lib/helpers/WelcomeDashboardUiHelper.js +22 -0
  141. package/dist/lib/helpers/WelcomeDashboardUiHelper.js.map +1 -0
  142. package/dist/lib/helpers/index.d.ts +1 -0
  143. package/dist/lib/helpers/index.js +3 -1
  144. package/dist/lib/helpers/index.js.map +1 -1
  145. package/dist/lib/helpers/testExtension.js.map +1 -1
  146. package/dist/tsconfig.tsbuildinfo +1 -1
  147. package/dist/umbraco.config.js +1 -1
  148. package/dist/umbraco.config.js.map +1 -1
  149. package/package.json +9 -7
  150. package/dist/lib/helpers/RelationType.d.ts +0 -15
  151. package/dist/lib/helpers/RelationType.js.map +0 -1
@@ -0,0 +1,194 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MediaTypeApiHelper = void 0;
4
+ const AliasHelper_1 = require("./AliasHelper");
5
+ const json_models_builders_1 = require("@umbraco/json-models-builders");
6
+ class MediaTypeApiHelper {
7
+ api;
8
+ constructor(api) {
9
+ this.api = api;
10
+ }
11
+ async ensureNameNotExists(name) {
12
+ const rootMediaTypes = await this.getAllAtRoot();
13
+ const jsonMediaTypes = await rootMediaTypes.json();
14
+ for (const mediaType of jsonMediaTypes.items) {
15
+ if (mediaType.name === name) {
16
+ if (mediaType.isFolder) {
17
+ return await this.recurseDeleteChildren(mediaType);
18
+ }
19
+ return await this.delete(mediaType.id);
20
+ }
21
+ else if (mediaType.hasChildren) {
22
+ await this.recurseChildren(name, mediaType.id, true);
23
+ }
24
+ }
25
+ return null;
26
+ }
27
+ async getAllAtRoot() {
28
+ return await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/media-type/root?skip=0&take=10000&foldersOnly=false');
29
+ }
30
+ async recurseChildren(name, id, toDelete) {
31
+ const items = await this.getChildren(id);
32
+ for (const child of items) {
33
+ if (child.name === name) {
34
+ if (!toDelete) {
35
+ if (child.isFolder) {
36
+ return await this.getFolder(child.id);
37
+ }
38
+ return await this.get(child.id);
39
+ }
40
+ if (child.isFolder) {
41
+ return await this.recurseDeleteChildren(child);
42
+ }
43
+ return await this.delete(child.id);
44
+ }
45
+ else if (child.hasChildren) {
46
+ return await this.recurseChildren(name, child.id, toDelete);
47
+ }
48
+ }
49
+ return false;
50
+ }
51
+ async recurseDeleteChildren(mediaTypeFolder) {
52
+ if (!mediaTypeFolder.hasChildren) {
53
+ return await this.deleteFolder(mediaTypeFolder.id);
54
+ }
55
+ const items = await this.getChildren(mediaTypeFolder.id);
56
+ for (const child of items) {
57
+ if (child.hasChildren) {
58
+ await this.recurseDeleteChildren(child);
59
+ }
60
+ else if (child.isFolder) {
61
+ await this.deleteFolder(child.id);
62
+ }
63
+ else {
64
+ await this.delete(child.id);
65
+ }
66
+ }
67
+ return await this.deleteFolder(mediaTypeFolder.id);
68
+ }
69
+ async getChildren(id) {
70
+ const response = await this.api.get(`${this.api.baseUrl}/umbraco/management/api/v1/tree/media-type/children?parentId=${id}&skip=0&take=10000&foldersOnly=false`);
71
+ const items = await response.json();
72
+ return items.items;
73
+ }
74
+ async create(mediaType) {
75
+ if (mediaType == null) {
76
+ return;
77
+ }
78
+ const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/media-type', mediaType);
79
+ return response.headers().location.split("/").pop();
80
+ }
81
+ async delete(id) {
82
+ if (id == null) {
83
+ return;
84
+ }
85
+ const response = await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/media-type/' + id);
86
+ return response.status();
87
+ }
88
+ async getByName(name) {
89
+ const rootMediaTypes = await this.getAllAtRoot();
90
+ const jsonMediaTypes = await rootMediaTypes.json();
91
+ for (const mediaType of jsonMediaTypes.items) {
92
+ if (mediaType.name === name) {
93
+ if (mediaType.isFolder) {
94
+ return this.getFolder(mediaType.id);
95
+ }
96
+ return this.get(mediaType.id);
97
+ }
98
+ else if (mediaType.isContainer || mediaType.hasChildren) {
99
+ const result = await this.recurseChildren(name, mediaType.id, false);
100
+ if (result) {
101
+ return result;
102
+ }
103
+ }
104
+ }
105
+ return false;
106
+ }
107
+ async doesNameExist(name) {
108
+ return await this.getByName(name);
109
+ }
110
+ async get(id) {
111
+ const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/media-type/' + id);
112
+ const json = await response.json();
113
+ if (json !== null) {
114
+ return json;
115
+ }
116
+ return null;
117
+ }
118
+ // Folder
119
+ async getFolder(id) {
120
+ const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/media-type/folder/' + id);
121
+ return await response.json();
122
+ }
123
+ async deleteFolder(id) {
124
+ return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/media-type/folder/' + id);
125
+ }
126
+ async createFolder(name, parentId) {
127
+ const folder = {
128
+ "name": name,
129
+ "parent": parentId ? { "id": parentId } : null
130
+ };
131
+ return await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/media-type/folder', folder);
132
+ }
133
+ async renameFolder(folderId, folderName) {
134
+ const folder = {
135
+ "name": folderName
136
+ };
137
+ return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/media-type/folder/' + folderId, folder);
138
+ }
139
+ async createDefaultMediaType(mediaTypeName) {
140
+ const mediaType = new json_models_builders_1.MediaTypeBuilder()
141
+ .withName(mediaTypeName)
142
+ .withAlias(AliasHelper_1.AliasHelper.toAlias(mediaTypeName))
143
+ .build();
144
+ return await this.create(mediaType);
145
+ }
146
+ async createMediaTypeWithPropertyEditor(mediaTypeName, dataTypeName, dataTypeId, groupName = "GroupTest") {
147
+ const crypto = require('crypto');
148
+ const containerId = crypto.randomUUID();
149
+ const mediaType = new json_models_builders_1.MediaTypeBuilder()
150
+ .withName(mediaTypeName)
151
+ .withAlias(AliasHelper_1.AliasHelper.toAlias(mediaTypeName))
152
+ .addContainer()
153
+ .withName(groupName)
154
+ .withId(containerId)
155
+ .withType("Group")
156
+ .done()
157
+ .addProperty()
158
+ .withContainerId(containerId)
159
+ .withAlias(AliasHelper_1.AliasHelper.toAlias(dataTypeName))
160
+ .withName(dataTypeName)
161
+ .withDataTypeId(dataTypeId)
162
+ .done()
163
+ .build();
164
+ return await this.create(mediaType);
165
+ }
166
+ async createMediaTypeWithTwoPropertyEditors(mediaTypeName, dataTypeNameOne, dataTypeIdOne, dataTypeNameTwo, dataTypeIdTwo, groupName = "GroupTest") {
167
+ const crypto = require('crypto');
168
+ const containerId = crypto.randomUUID();
169
+ const mediaType = new json_models_builders_1.MediaTypeBuilder()
170
+ .withName(mediaTypeName)
171
+ .withAlias(AliasHelper_1.AliasHelper.toAlias(mediaTypeName))
172
+ .addContainer()
173
+ .withName(groupName)
174
+ .withId(containerId)
175
+ .withType("Group")
176
+ .done()
177
+ .addProperty()
178
+ .withContainerId(containerId)
179
+ .withAlias(AliasHelper_1.AliasHelper.toAlias(dataTypeNameOne))
180
+ .withName(dataTypeNameOne)
181
+ .withDataTypeId(dataTypeIdOne)
182
+ .done()
183
+ .addProperty()
184
+ .withContainerId(containerId)
185
+ .withAlias(AliasHelper_1.AliasHelper.toAlias(dataTypeNameTwo))
186
+ .withName(dataTypeNameTwo)
187
+ .withDataTypeId(dataTypeIdTwo)
188
+ .done()
189
+ .build();
190
+ return await this.create(mediaType);
191
+ }
192
+ }
193
+ exports.MediaTypeApiHelper = MediaTypeApiHelper;
194
+ //# sourceMappingURL=MediaTypeApiHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MediaTypeApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/MediaTypeApiHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import {ApiHelpers} from \"./ApiHelpers\";\nimport {AliasHelper} from \"./AliasHelper\";\nimport {MediaTypeBuilder} from \"@umbraco/json-models-builders\";\n\nexport class MediaTypeApiHelper {\n api: ApiHelpers\n\n constructor(api: ApiHelpers) {\n this.api = api;\n }\n\n async ensureNameNotExists(name: string) {\n const rootMediaTypes = await this.getAllAtRoot();\n const jsonMediaTypes = await rootMediaTypes.json();\n\n for (const mediaType of jsonMediaTypes.items) {\n if (mediaType.name === name) {\n if (mediaType.isFolder) {\n return await this.recurseDeleteChildren(mediaType);\n }\n return await this.delete(mediaType.id);\n } else if (mediaType.hasChildren) {\n await this.recurseChildren(name, mediaType.id, true);\n }\n }\n return null;\n }\n\n async getAllAtRoot() {\n return await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/media-type/root?skip=0&take=10000&foldersOnly=false');\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 if (child.isFolder) {\n return await this.getFolder(child.id);\n }\n return await this.get(child.id);\n }\n if (child.isFolder) {\n return await this.recurseDeleteChildren(child);\n }\n return await this.delete(child.id);\n } else if (child.hasChildren) {\n return await this.recurseChildren(name, child.id, toDelete);\n }\n }\n return false;\n }\n\n private async recurseDeleteChildren(mediaTypeFolder) {\n if (!mediaTypeFolder.hasChildren) {\n return await this.deleteFolder(mediaTypeFolder.id);\n }\n const items = await this.getChildren(mediaTypeFolder.id);\n\n for (const child of items) {\n if (child.hasChildren) {\n await this.recurseDeleteChildren(child);\n } else if (child.isFolder) {\n await this.deleteFolder(child.id);\n } else {\n await this.delete(child.id);\n }\n }\n return await this.deleteFolder(mediaTypeFolder.id);\n }\n\n async getChildren(id: string) {\n const response = await this.api.get(`${this.api.baseUrl}/umbraco/management/api/v1/tree/media-type/children?parentId=${id}&skip=0&take=10000&foldersOnly=false`);\n const items = await response.json();\n return items.items;\n }\n\n async create(mediaType) {\n if (mediaType == null) {\n return;\n }\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/media-type', mediaType)\n return response.headers().location.split(\"/\").pop();\n }\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/media-type/' + id);\n return response.status();\n }\n\n async getByName(name: string) {\n const rootMediaTypes = await this.getAllAtRoot();\n const jsonMediaTypes = await rootMediaTypes.json();\n\n for (const mediaType of jsonMediaTypes.items) {\n if (mediaType.name === name) {\n if (mediaType.isFolder) {\n return this.getFolder(mediaType.id);\n }\n return this.get(mediaType.id);\n } else if (mediaType.isContainer || mediaType.hasChildren) {\n const result = await this.recurseChildren(name, mediaType.id, false);\n if (result) {\n return result;\n }\n }\n }\n return false;\n }\n\n async doesNameExist(name: string) {\n return await this.getByName(name);\n }\n\n async get(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/media-type/' + id);\n const json = await response.json();\n if (json !== null) {\n return json;\n }\n return null;\n }\n \n // Folder\n async getFolder(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/media-type/folder/' + id);\n return await response.json();\n }\n\n async deleteFolder(id: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/media-type/folder/' + id);\n }\n\n async createFolder(name: string, parentId?: string) {\n const folder = {\n \"name\": name,\n \"parent\": parentId ? {\"id\": parentId} : null\n }\n return await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/media-type/folder', folder);\n }\n\n async renameFolder(folderId: string, folderName: string) {\n const folder = {\n \"name\": folderName\n }\n return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/media-type/folder/' + folderId, folder);\n }\n\n async createDefaultMediaType(mediaTypeName: string) {\n const mediaType = new MediaTypeBuilder()\n .withName(mediaTypeName)\n .withAlias(AliasHelper.toAlias(mediaTypeName))\n .build();\n return await this.create(mediaType);\n }\n\n async createMediaTypeWithPropertyEditor(mediaTypeName: string, dataTypeName: string, dataTypeId: string, groupName: string = \"GroupTest\")\n {\n const crypto = require('crypto');\n const containerId = crypto.randomUUID();\n\n const mediaType = new MediaTypeBuilder()\n .withName(mediaTypeName)\n .withAlias(AliasHelper.toAlias(mediaTypeName))\n .addContainer()\n .withName(groupName)\n .withId(containerId)\n .withType(\"Group\")\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(dataTypeName))\n .withName(dataTypeName)\n .withDataTypeId(dataTypeId)\n .done()\n .build();\n return await this.create(mediaType);\n }\n\n async createMediaTypeWithTwoPropertyEditors(mediaTypeName: string, dataTypeNameOne: string, dataTypeIdOne: string, dataTypeNameTwo: string, dataTypeIdTwo: string, groupName: string = \"GroupTest\")\n {\n const crypto = require('crypto');\n const containerId = crypto.randomUUID();\n\n const mediaType = new MediaTypeBuilder()\n .withName(mediaTypeName)\n .withAlias(AliasHelper.toAlias(mediaTypeName))\n .addContainer()\n .withName(groupName)\n .withId(containerId)\n .withType(\"Group\")\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(dataTypeNameOne))\n .withName(dataTypeNameOne)\n .withDataTypeId(dataTypeIdOne)\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(dataTypeNameTwo))\n .withName(dataTypeNameTwo)\n .withDataTypeId(dataTypeIdTwo)\n .done()\n .build();\n return await this.create(mediaType);\n }\n}"]}
@@ -0,0 +1,15 @@
1
+ import { UiBaseLocators } from "./UiBaseLocators";
2
+ import { Page } from "@playwright/test";
3
+ export declare class MediaTypeUiHelper extends UiBaseLocators {
4
+ private readonly newMediaTypeThreeDotsBtn;
5
+ private readonly mediaTypeNameTxt;
6
+ private readonly mediaEditPropertyWorkspace;
7
+ constructor(page: Page);
8
+ clickActionsMenuForMediaType(name: string): Promise<void>;
9
+ clickActionsMenuAtRoot(): Promise<void>;
10
+ clickRootFolderCaretButton(): Promise<void>;
11
+ clickNewMediaTypeButton(): Promise<void>;
12
+ goToMediaType(mediaTypeName: string): Promise<void>;
13
+ enterMediaTypeName(name: string): Promise<void>;
14
+ enterDescriptionForPropertyEditorWithName(propertyEditorName: string, description: string): Promise<void>;
15
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MediaTypeUiHelper = void 0;
4
+ const UiBaseLocators_1 = require("./UiBaseLocators");
5
+ class MediaTypeUiHelper extends UiBaseLocators_1.UiBaseLocators {
6
+ newMediaTypeThreeDotsBtn;
7
+ mediaTypeNameTxt;
8
+ mediaEditPropertyWorkspace;
9
+ constructor(page) {
10
+ super(page);
11
+ this.newMediaTypeThreeDotsBtn = page.getByLabel('New Media Type...');
12
+ this.mediaTypeNameTxt = page.getByLabel('name', { exact: true });
13
+ this.mediaEditPropertyWorkspace = page.locator('umb-media-type-workspace-view-edit-property');
14
+ }
15
+ async clickActionsMenuForMediaType(name) {
16
+ await this.clickActionsMenuForName(name);
17
+ }
18
+ async clickActionsMenuAtRoot() {
19
+ await this.clickActionsMenuForMediaType("Media Types");
20
+ }
21
+ async clickRootFolderCaretButton() {
22
+ await this.clickCaretButtonForName("Media Types");
23
+ }
24
+ async clickNewMediaTypeButton() {
25
+ await this.newMediaTypeThreeDotsBtn.click();
26
+ }
27
+ async goToMediaType(mediaTypeName) {
28
+ await this.clickRootFolderCaretButton();
29
+ await this.page.getByLabel(mediaTypeName).click();
30
+ }
31
+ async enterMediaTypeName(name) {
32
+ await this.mediaTypeNameTxt.fill(name);
33
+ }
34
+ async enterDescriptionForPropertyEditorWithName(propertyEditorName, description) {
35
+ await this.mediaEditPropertyWorkspace.filter({ hasText: propertyEditorName }).getByLabel('description').fill(description);
36
+ }
37
+ }
38
+ exports.MediaTypeUiHelper = MediaTypeUiHelper;
39
+ //# sourceMappingURL=MediaTypeUiHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MediaTypeUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/MediaTypeUiHelper.ts"],"names":[],"mappings":";;;AAAA,qDAAgD;AAGhD,MAAa,iBAAkB,SAAQ,+BAAc;IAClC,wBAAwB,CAAU;IAClC,gBAAgB,CAAU;IAC1B,0BAA0B,CAAU;IAErD,YAAY,IAAU;QACpB,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;QACrE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC;IAChG,CAAC;IAED,KAAK,CAAC,4BAA4B,CAAC,IAAY;QAC7C,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,sBAAsB;QAC1B,MAAM,IAAI,CAAC,4BAA4B,CAAC,aAAa,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,0BAA0B;QAC9B,MAAM,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,uBAAuB;QAC3B,MAAM,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,aAAqB;QACvC,MAAM,IAAI,CAAC,0BAA0B,EAAE,CAAC;QACxC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,IAAY;QACnC,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,yCAAyC,CAAC,kBAA0B,EAAE,WAAmB;QAC7F,MAAM,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,EAAC,OAAO,EAAE,kBAAkB,EAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1H,CAAC;CACF;AAxCD,8CAwCC","sourcesContent":["import {UiBaseLocators} from \"./UiBaseLocators\";\nimport {Locator, Page} from \"@playwright/test\";\n\nexport class MediaTypeUiHelper extends UiBaseLocators {\n private readonly newMediaTypeThreeDotsBtn: Locator;\n private readonly mediaTypeNameTxt: Locator;\n private readonly mediaEditPropertyWorkspace: Locator;\n\n constructor(page: Page) {\n super(page);\n this.newMediaTypeThreeDotsBtn = page.getByLabel('New Media Type...');\n this.mediaTypeNameTxt = page.getByLabel('name', {exact: true});\n this.mediaEditPropertyWorkspace = page.locator('umb-media-type-workspace-view-edit-property');\n }\n\n async clickActionsMenuForMediaType(name: string) {\n await this.clickActionsMenuForName(name);\n }\n\n async clickActionsMenuAtRoot() {\n await this.clickActionsMenuForMediaType(\"Media Types\");\n }\n\n async clickRootFolderCaretButton() {\n await this.clickCaretButtonForName(\"Media Types\");\n }\n\n async clickNewMediaTypeButton() {\n await this.newMediaTypeThreeDotsBtn.click();\n }\n \n async goToMediaType(mediaTypeName: string) {\n await this.clickRootFolderCaretButton();\n await this.page.getByLabel(mediaTypeName).click();\n }\n\n async enterMediaTypeName(name: string) {\n await this.mediaTypeNameTxt.fill(name);\n }\n\n async enterDescriptionForPropertyEditorWithName(propertyEditorName: string, description: string) {\n await this.mediaEditPropertyWorkspace.filter({hasText: propertyEditorName}).getByLabel('description').fill(description);\n }\n}"]}
@@ -0,0 +1,6 @@
1
+ import { ApiHelpers } from "./ApiHelpers";
2
+ export declare class ModelsBuilderApiHelper {
3
+ api: ApiHelpers;
4
+ constructor(api: ApiHelpers);
5
+ getDashboard(): Promise<any>;
6
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModelsBuilderApiHelper = void 0;
4
+ class ModelsBuilderApiHelper {
5
+ api;
6
+ constructor(api) {
7
+ this.api = api;
8
+ }
9
+ async getDashboard() {
10
+ const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/models-builder/dashboard');
11
+ return await response.json();
12
+ }
13
+ }
14
+ exports.ModelsBuilderApiHelper = ModelsBuilderApiHelper;
15
+ //# sourceMappingURL=ModelsBuilderApiHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelsBuilderApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/ModelsBuilderApiHelper.ts"],"names":[],"mappings":";;;AAEA,MAAa,sBAAsB;IACjC,GAAG,CAAY;IAEf,YAAY,GAAe;QACzB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,qDAAqD,CAAC,CAAC;QAC9G,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;CACF;AAXD,wDAWC","sourcesContent":["import {ApiHelpers} from \"./ApiHelpers\";\n\nexport class ModelsBuilderApiHelper {\n api: ApiHelpers\n\n constructor(api: ApiHelpers) {\n this.api = api;\n }\n\n async getDashboard() {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/models-builder/dashboard');\n return await response.json(); \n }\n}"]}
@@ -0,0 +1,11 @@
1
+ import { Page } from "@playwright/test";
2
+ import { UiBaseLocators } from "./UiBaseLocators";
3
+ export declare class ModelsBuilderUiHelper extends UiBaseLocators {
4
+ private readonly modelsBuilderTab;
5
+ private readonly reloadBtn;
6
+ private readonly modelsBuilderDashboardContent;
7
+ constructor(page: Page);
8
+ clickModelsBuilderTab(): Promise<void>;
9
+ clickReloadButton(): Promise<void>;
10
+ doesModelsBuilderDashboardHaveText(text: string): Promise<void>;
11
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModelsBuilderUiHelper = void 0;
4
+ const test_1 = require("@playwright/test");
5
+ const UiBaseLocators_1 = require("./UiBaseLocators");
6
+ class ModelsBuilderUiHelper extends UiBaseLocators_1.UiBaseLocators {
7
+ modelsBuilderTab;
8
+ reloadBtn;
9
+ modelsBuilderDashboardContent;
10
+ constructor(page) {
11
+ super(page);
12
+ this.modelsBuilderTab = page.getByRole('tab', { name: 'Models Builder' });
13
+ this.reloadBtn = page.getByLabel('Reload');
14
+ this.modelsBuilderDashboardContent = page.locator('umb-models-builder-dashboard');
15
+ }
16
+ async clickModelsBuilderTab() {
17
+ await this.modelsBuilderTab.click();
18
+ }
19
+ async clickReloadButton() {
20
+ await this.reloadBtn.click();
21
+ }
22
+ async doesModelsBuilderDashboardHaveText(text) {
23
+ return await (0, test_1.expect)(this.modelsBuilderDashboardContent).toContainText(text, { timeout: 10000 });
24
+ }
25
+ }
26
+ exports.ModelsBuilderUiHelper = ModelsBuilderUiHelper;
27
+ //# sourceMappingURL=ModelsBuilderUiHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelsBuilderUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/ModelsBuilderUiHelper.ts"],"names":[],"mappings":";;;AAAA,2CAAuD;AACvD,qDAAgD;AAEhD,MAAa,qBAAsB,SAAQ,+BAAc;IACtC,gBAAgB,CAAU;IAC1B,SAAS,CAAU;IACnB,6BAA6B,CAAU;IAExD,YAAY,IAAU;QACpB,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAC,IAAI,EAAE,gBAAgB,EAAC,CAAC,CAAC;QACxE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;IACpF,CAAC;IAED,KAAK,CAAC,qBAAqB;QACzB,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,kCAAkC,CAAC,IAAY;QACnD,OAAO,MAAM,IAAA,aAAM,EAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;IAChG,CAAC;CACF;AAvBD,sDAuBC","sourcesContent":["import {Page, Locator, expect} from \"@playwright/test\";\nimport {UiBaseLocators} from \"./UiBaseLocators\";\n\nexport class ModelsBuilderUiHelper extends UiBaseLocators {\n private readonly modelsBuilderTab: Locator;\n private readonly reloadBtn: Locator;\n private readonly modelsBuilderDashboardContent: Locator;\n\n constructor(page: Page) {\n super(page);\n this.modelsBuilderTab = page.getByRole('tab', {name: 'Models Builder'});\n this.reloadBtn = page.getByLabel('Reload');\n this.modelsBuilderDashboardContent = page.locator('umb-models-builder-dashboard');\n }\n\n async clickModelsBuilderTab() {\n await this.modelsBuilderTab.click();\n }\n\n async clickReloadButton() {\n await this.reloadBtn.click();\n }\n\n async doesModelsBuilderDashboardHaveText(text: string) {\n return await expect(this.modelsBuilderDashboardContent).toContainText(text, {timeout: 10000});\n }\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import { ApiHelpers } from "./ApiHelpers";
2
+ export declare class ObjectTypesApiHelper {
3
+ api: ApiHelpers;
4
+ constructor(api: ApiHelpers);
5
+ getAll(): Promise<any>;
6
+ getIdByName(name: string): Promise<any>;
7
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ObjectTypesApiHelper = void 0;
4
+ class ObjectTypesApiHelper {
5
+ api;
6
+ constructor(api) {
7
+ this.api = api;
8
+ }
9
+ async getAll() {
10
+ const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/object-types?skip=0&take=10000');
11
+ return await response.json();
12
+ }
13
+ async getIdByName(name) {
14
+ const response = await this.getAll();
15
+ if (response.items === null)
16
+ return null;
17
+ for (const item of response.items) {
18
+ if (item.name == name) {
19
+ return item.id;
20
+ }
21
+ }
22
+ }
23
+ }
24
+ exports.ObjectTypesApiHelper = ObjectTypesApiHelper;
25
+ //# sourceMappingURL=ObjectTypesApiHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectTypesApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/ObjectTypesApiHelper.ts"],"names":[],"mappings":";;;AAEA,MAAa,oBAAoB;IAC/B,GAAG,CAAY;IAEf,YAAY,GAAe;QACzB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,2DAA2D,CAAC,CAAC;QACpH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAY;QAC5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACrC,IAAI,QAAQ,CAAC,KAAK,KAAK,IAAI;YACzB,OAAO,IAAI,CAAC;QACd,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE;YACjC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;gBACrB,OAAO,IAAI,CAAC,EAAE,CAAC;aAChB;SACF;IACH,CAAC;CACF;AAtBD,oDAsBC","sourcesContent":["import {ApiHelpers} from \"./ApiHelpers\";\n\nexport class ObjectTypesApiHelper {\n api: ApiHelpers\n\n constructor(api: ApiHelpers) {\n this.api = api;\n }\n\n async getAll() {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/object-types?skip=0&take=10000');\n return await response.json(); \n }\n\n async getIdByName(name: string) {\n const response = await this.getAll();\n if (response.items === null) \n return null;\n for (const item of response.items) {\n if (item.name == name) {\n return item.id;\n }\n }\n }\n}"]}
@@ -3,8 +3,8 @@ export declare class PackageApiHelper {
3
3
  api: ApiHelpers;
4
4
  constructor(api: ApiHelpers);
5
5
  ensureNameNotExists(name: string): Promise<import("playwright-core").APIResponse | null>;
6
- exists(id: string): Promise<boolean>;
7
- nameExists(name: string): Promise<boolean>;
6
+ doesExist(id: string): Promise<boolean>;
7
+ doesNameExist(name: string): Promise<boolean>;
8
8
  create(name: string, contentLoadChildNodes?: boolean, mediaLoadChildNodes?: boolean, contentNodeId?: string, mediaIds?: string[], documentTypes?: any, mediaTypes?: any, dataTypes?: any, templates?: any, partialViews?: any, stylesheets?: any, scripts?: any, languages?: any, dictionaryItems?: any): Promise<string | undefined>;
9
9
  getByName(name: string): Promise<any>;
10
10
  get(id: string): Promise<any>;
@@ -12,4 +12,5 @@ export declare class PackageApiHelper {
12
12
  update(id: string, packageData: any): Promise<import("playwright-core").APIResponse>;
13
13
  delete(id: string): Promise<import("playwright-core").APIResponse>;
14
14
  download(id: string): Promise<string>;
15
+ createEmptyPackage(name: string): Promise<string | undefined>;
15
16
  }
@@ -18,11 +18,11 @@ class PackageApiHelper {
18
18
  }
19
19
  return null;
20
20
  }
21
- async exists(id) {
21
+ async doesExist(id) {
22
22
  const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/package/created/' + id);
23
23
  return response.status() === 200;
24
24
  }
25
- async nameExists(name) {
25
+ async doesNameExist(name) {
26
26
  const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/package/created?skip=0&take=10000');
27
27
  const json = await response.json();
28
28
  if (name !== null) {
@@ -34,7 +34,7 @@ class PackageApiHelper {
34
34
  }
35
35
  return false;
36
36
  }
37
- async create(name, contentLoadChildNodes = true, mediaLoadChildNodes = true, contentNodeId, mediaIds, documentTypes, mediaTypes, dataTypes, templates, partialViews, stylesheets, scripts, languages, dictionaryItems) {
37
+ async create(name, contentLoadChildNodes = false, mediaLoadChildNodes = false, contentNodeId, mediaIds, documentTypes, mediaTypes, dataTypes, templates, partialViews, stylesheets, scripts, languages, dictionaryItems) {
38
38
  const packageData = {
39
39
  "name": name,
40
40
  "contentNodeId": contentNodeId,
@@ -114,6 +114,9 @@ class PackageApiHelper {
114
114
  const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/package/created/' + id + '/download');
115
115
  return await response.text();
116
116
  }
117
+ async createEmptyPackage(name) {
118
+ return await this.create(name);
119
+ }
117
120
  }
118
121
  exports.PackageApiHelper = PackageApiHelper;
119
122
  //# sourceMappingURL=PackageApiHelper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PackageApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/PackageApiHelper.ts"],"names":[],"mappings":";;;AAEA,MAAa,gBAAgB;IAC3B,GAAG,CAAY;IAEf,YAAY,GAAe;QACzB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,IAAY;QACpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,8DAA8D,CAAC,CAAC;QACvH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;YAC3B,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,EAAE;gBACpB,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE;oBAClB,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,6CAA6C,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;iBACxG;aACF;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,6CAA6C,GAAG,EAAE,CAAC,CAAC;QAC3G,OAAO,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAY;QAC3B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,8DAA8D,CAAC,CAAC;QACvH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;gBAC3B,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,EAAE;oBACpB,OAAO,IAAI,CAAC;iBACb;aACF;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,qBAAqB,GAAG,IAAI,EAAE,mBAAmB,GAAG,IAAI,EAAE,aAAsB,EAAE,QAAmB,EAAE,aAAc,EAAE,UAAW,EAAE,SAAU,EAAE,SAAU,EAAE,YAAa,EAAE,WAAY,EAAE,OAAQ,EAAE,SAAU,EAAE,eAAgB;QACxP,MAAM,WAAW,GAAG;YAClB,MAAM,EAAE,IAAI;YACZ,eAAe,EAAE,aAAa;YAC9B,uBAAuB,EAAE,qBAAqB;YAC9C,UAAU,EAAE,QAAQ;YACpB,qBAAqB,EAAE,mBAAmB;YAC1C,eAAe,EAAE;gBACf,aAAa;aACd;YACD,YAAY,EAAE;gBACZ,UAAU;aACX;YACD,WAAW,EAAE;gBACX,SAAS;aACV;YACD,WAAW,EAAE;gBACX,SAAS;aACV;YACD,cAAc,EAAE;gBACd,YAAY;aACb;YACD,aAAa,EAAE;gBACb,WAAW;aACZ;YACD,SAAS,EAAE;gBACT,OAAO;aACR;YACD,WAAW,EAAE;gBACX,SAAS;aACV;YACD,iBAAiB,EAAE;gBACjB,eAAe;aAChB;SACF,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,4CAA4C,EAAE,WAAW,CAAC,CAAC;QACnH,wCAAwC;QACxC,OAAO,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,8DAA8D,CAAC,CAAC;QACvH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;gBAC3B,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,EAAE;oBACpB,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE;wBAClB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,6CAA6C,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;wBAC9G,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;qBAC9B;iBACF;aACF;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,6CAA6C,GAAG,EAAE,CAAC,CAAC;QAAA,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAE9I,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,IAAI,CAAC;IAEd,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,8DAA8D,CAAC,CAAC;QACvH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,WAAW;QAClC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,6CAA6C,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;IAChH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,6CAA6C,GAAG,EAAE,CAAC,CAAC;IACtG,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,6CAA6C,GAAG,EAAE,GAAG,WAAW,CAAC,CAAC;QACzH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;CACF;AAlID,4CAkIC","sourcesContent":["import {ApiHelpers} from \"./ApiHelpers\";\n\nexport class PackageApiHelper {\n api: ApiHelpers\n\n constructor(api: ApiHelpers) {\n this.api = api;\n }\n\n async ensureNameNotExists(name: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/package/created?skip=0&take=10000');\n const json = await response.json();\n\n for (const sb of json.items) {\n if (sb.name === name) {\n if (sb.id !== null) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/package/created/' + sb.id);\n }\n }\n }\n return null;\n }\n\n async exists(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/package/created/' + id);\n return response.status() === 200;\n }\n\n async nameExists(name: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/package/created?skip=0&take=10000');\n const json = await response.json();\n\n if (name !== null) {\n for (const sb of json.items) {\n if (sb.name === name) {\n return true;\n }\n }\n }\n return false;\n }\n\n async create(name: string, contentLoadChildNodes = true, mediaLoadChildNodes = true, contentNodeId?: string, mediaIds?: string[], documentTypes?, mediaTypes?, dataTypes?, templates?, partialViews?, stylesheets?, scripts?, languages?, dictionaryItems?) {\n const packageData = {\n \"name\": name,\n \"contentNodeId\": contentNodeId,\n \"contentLoadChildNodes\": contentLoadChildNodes,\n \"mediaIds\": mediaIds,\n \"mediaLoadChildNodes\": mediaLoadChildNodes,\n \"documentTypes\": [\n documentTypes\n ],\n \"mediaTypes\": [\n mediaTypes\n ],\n \"dataTypes\": [\n dataTypes\n ],\n \"templates\": [\n templates\n ],\n \"partialViews\": [\n partialViews\n ],\n \"stylesheets\": [\n stylesheets\n ],\n \"scripts\": [\n scripts\n ],\n \"languages\": [\n languages\n ],\n \"dictionaryItems\": [\n dictionaryItems\n ]\n };\n\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/package/created', packageData);\n // Returns the id of the created package\n return response.headers().location.split(\"/\").pop();\n }\n\n async getByName(name: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/package/created?skip=0&take=10000');\n const json = await response.json();\n\n if (name !== null) {\n for (const sb of json.items) {\n if (sb.name === name) {\n if (sb.id !== null) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/package/created/' + sb.id);\n return await response.json();\n }\n }\n }\n }\n return null;\n }\n\n async get(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/package/created/' + id);const json = await response.json();\n\n if (json !== null) {\n return json;\n }\n return null;\n \n }\n\n async getAll() {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/package/created?skip=0&take=10000');\n const json = await response.json();\n\n if (json !== null) {\n return json;\n }\n return null;\n }\n\n async update(id: string, packageData) {\n return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/package/created/' + id, packageData);\n }\n\n async delete(id: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/package/created/' + id);\n }\n\n async download(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/package/created/' + id + '/download');\n return await response.text();\n }\n}"]}
1
+ {"version":3,"file":"PackageApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/PackageApiHelper.ts"],"names":[],"mappings":";;;AAEA,MAAa,gBAAgB;IAC3B,GAAG,CAAY;IAEf,YAAY,GAAe;QACzB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,IAAY;QACpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,8DAA8D,CAAC,CAAC;QACvH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;YAC3B,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,EAAE;gBACpB,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE;oBAClB,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,6CAA6C,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;iBACxG;aACF;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,EAAU;QACxB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,6CAA6C,GAAG,EAAE,CAAC,CAAC;QAC3G,OAAO,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAY;QAC9B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,8DAA8D,CAAC,CAAC;QACvH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;gBAC3B,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,EAAE;oBACpB,OAAO,IAAI,CAAC;iBACb;aACF;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,qBAAqB,GAAG,KAAK,EAAE,mBAAmB,GAAG,KAAK,EAAE,aAAsB,EAAE,QAAmB,EAAE,aAAc,EAAE,UAAW,EAAE,SAAU,EAAE,SAAU,EAAE,YAAa,EAAE,WAAY,EAAE,OAAQ,EAAE,SAAU,EAAE,eAAgB;QAC1P,MAAM,WAAW,GAAG;YAClB,MAAM,EAAE,IAAI;YACZ,eAAe,EAAE,aAAa;YAC9B,uBAAuB,EAAE,qBAAqB;YAC9C,UAAU,EAAE,QAAQ;YACpB,qBAAqB,EAAE,mBAAmB;YAC1C,eAAe,EAAE;gBACf,aAAa;aACd;YACD,YAAY,EAAE;gBACZ,UAAU;aACX;YACD,WAAW,EAAE;gBACX,SAAS;aACV;YACD,WAAW,EAAE;gBACX,SAAS;aACV;YACD,cAAc,EAAE;gBACd,YAAY;aACb;YACD,aAAa,EAAE;gBACb,WAAW;aACZ;YACD,SAAS,EAAE;gBACT,OAAO;aACR;YACD,WAAW,EAAE;gBACX,SAAS;aACV;YACD,iBAAiB,EAAE;gBACjB,eAAe;aAChB;SACF,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,4CAA4C,EAAE,WAAW,CAAC,CAAC;QACnH,wCAAwC;QACxC,OAAO,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,8DAA8D,CAAC,CAAC;QACvH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;gBAC3B,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,EAAE;oBACpB,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE;wBAClB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,6CAA6C,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;wBAC9G,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;qBAC9B;iBACF;aACF;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,6CAA6C,GAAG,EAAE,CAAC,CAAC;QAC3G,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,IAAI,CAAC;IAEd,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,8DAA8D,CAAC,CAAC;QACvH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,WAAW;QAClC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,6CAA6C,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;IAChH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,6CAA6C,GAAG,EAAE,CAAC,CAAC;IACtG,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,6CAA6C,GAAG,EAAE,GAAG,WAAW,CAAC,CAAC;QACzH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,IAAY;QACnC,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;CACF;AAvID,4CAuIC","sourcesContent":["import {ApiHelpers} from \"./ApiHelpers\";\n\nexport class PackageApiHelper {\n api: ApiHelpers\n\n constructor(api: ApiHelpers) {\n this.api = api;\n }\n\n async ensureNameNotExists(name: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/package/created?skip=0&take=10000');\n const json = await response.json();\n\n for (const sb of json.items) {\n if (sb.name === name) {\n if (sb.id !== null) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/package/created/' + sb.id);\n }\n }\n }\n return null;\n }\n\n async doesExist(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/package/created/' + id);\n return response.status() === 200;\n }\n\n async doesNameExist(name: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/package/created?skip=0&take=10000');\n const json = await response.json();\n\n if (name !== null) {\n for (const sb of json.items) {\n if (sb.name === name) {\n return true;\n }\n }\n }\n return false;\n }\n\n async create(name: string, contentLoadChildNodes = false, mediaLoadChildNodes = false, contentNodeId?: string, mediaIds?: string[], documentTypes?, mediaTypes?, dataTypes?, templates?, partialViews?, stylesheets?, scripts?, languages?, dictionaryItems?) {\n const packageData = {\n \"name\": name,\n \"contentNodeId\": contentNodeId,\n \"contentLoadChildNodes\": contentLoadChildNodes,\n \"mediaIds\": mediaIds,\n \"mediaLoadChildNodes\": mediaLoadChildNodes,\n \"documentTypes\": [\n documentTypes\n ],\n \"mediaTypes\": [\n mediaTypes\n ],\n \"dataTypes\": [\n dataTypes\n ],\n \"templates\": [\n templates\n ],\n \"partialViews\": [\n partialViews\n ],\n \"stylesheets\": [\n stylesheets\n ],\n \"scripts\": [\n scripts\n ],\n \"languages\": [\n languages\n ],\n \"dictionaryItems\": [\n dictionaryItems\n ]\n };\n\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/package/created', packageData);\n // Returns the id of the created package\n return response.headers().location.split(\"/\").pop();\n }\n\n async getByName(name: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/package/created?skip=0&take=10000');\n const json = await response.json();\n\n if (name !== null) {\n for (const sb of json.items) {\n if (sb.name === name) {\n if (sb.id !== null) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/package/created/' + sb.id);\n return await response.json();\n }\n }\n }\n }\n return null;\n }\n\n async get(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/package/created/' + id);\n const json = await response.json();\n\n if (json !== null) {\n return json;\n }\n return null;\n\n }\n\n async getAll() {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/package/created?skip=0&take=10000');\n const json = await response.json();\n\n if (json !== null) {\n return json;\n }\n return null;\n }\n\n async update(id: string, packageData) {\n return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/package/created/' + id, packageData);\n }\n\n async delete(id: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/package/created/' + id);\n }\n\n async download(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/package/created/' + id + '/download');\n return await response.text();\n }\n\n async createEmptyPackage(name: string) {\n return await this.create(name);\n }\n}"]}
@@ -0,0 +1,49 @@
1
+ import { Page } from "@playwright/test";
2
+ import { UiBaseLocators } from "./UiBaseLocators";
3
+ export declare class PackageUiHelper extends UiBaseLocators {
4
+ private readonly createdTabBtn;
5
+ private readonly marketPlaceIFrame;
6
+ private readonly installedTabBtn;
7
+ private readonly noPackagesHaveBeenInstalledTxt;
8
+ private readonly packagesTabBtn;
9
+ private readonly createPackageBtn;
10
+ private readonly packageNameTxt;
11
+ private readonly saveChangesToPackageBtn;
12
+ private readonly addContentToPackageBtn;
13
+ private readonly addMediaToPackageBtn;
14
+ private readonly addDocumentTypeToPackageBtn;
15
+ private readonly addMediaTypeToPackageBtn;
16
+ private readonly addLanguageToPackageBtn;
17
+ private readonly addDictionaryToPackageBtn;
18
+ private readonly addDataTypesToPackageBtn;
19
+ private readonly addTemplatesToPackagesBtn;
20
+ private readonly addPartialViewToPackageBtn;
21
+ private readonly addScriptToPackageBtn;
22
+ private readonly addStylesheetToPackageBtn;
23
+ private readonly downloadPackageBtn;
24
+ constructor(page: Page);
25
+ isTextNoPackagesHaveBeenInstalledVisible(isVisible?: boolean): Promise<void>;
26
+ clickCreatedTab(): Promise<void>;
27
+ clickInstalledTab(): Promise<void>;
28
+ clickPackagesTab(): Promise<void>;
29
+ clickChooseBtn(): Promise<void>;
30
+ isMarketPlaceIFrameVisible(isVisible?: boolean): Promise<void>;
31
+ clickCreatePackageButton(): Promise<void>;
32
+ enterPackageName(packageName: string): Promise<void>;
33
+ isPackageNameVisible(packageName: string, isVisible?: boolean): Promise<void>;
34
+ clickExistingPackageName(packageName: string): Promise<void>;
35
+ clickDeleteButtonForPackageName(packageName: string): Promise<void>;
36
+ clickSaveChangesToPackageButton(): Promise<void>;
37
+ clickAddContentToPackageButton(): Promise<void>;
38
+ clickAddMediaToPackageButton(): Promise<void>;
39
+ clickAddDocumentTypeToPackageButton(): Promise<void>;
40
+ clickAddMediaTypeToPackageButton(): Promise<void>;
41
+ clickAddLanguageToPackageButton(): Promise<void>;
42
+ clickAddDictionaryToPackageButton(): Promise<void>;
43
+ clickAddDataTypesToPackageButton(): Promise<void>;
44
+ clickAddTemplatesToPackageButton(): Promise<void>;
45
+ clickAddPartialViewToPackageButton(): Promise<void>;
46
+ clickAddScriptToPackageButton(): Promise<void>;
47
+ clickAddStylesheetToPackageButton(): Promise<void>;
48
+ downloadPackage(packageId: string): Promise<string>;
49
+ }