@umbraco/playwright-testhelpers 2.0.0-beta.7 → 2.0.0-beta.70

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 (183) hide show
  1. package/dist/lib/helpers/ApiHelpers.d.ts +38 -4
  2. package/dist/lib/helpers/ApiHelpers.js +133 -4
  3. package/dist/lib/helpers/ApiHelpers.js.map +1 -1
  4. package/dist/lib/helpers/ConstantHelper.js.map +1 -1
  5. package/dist/lib/helpers/ContentUiHelper.d.ts +99 -0
  6. package/dist/lib/helpers/ContentUiHelper.js +282 -0
  7. package/dist/lib/helpers/ContentUiHelper.js.map +1 -0
  8. package/dist/lib/helpers/DataTypeApiHelper.d.ts +76 -14
  9. package/dist/lib/helpers/DataTypeApiHelper.js +618 -132
  10. package/dist/lib/helpers/DataTypeApiHelper.js.map +1 -1
  11. package/dist/lib/helpers/DataTypeUiHelper.d.ts +260 -0
  12. package/dist/lib/helpers/DataTypeUiHelper.js +827 -0
  13. package/dist/lib/helpers/DataTypeUiHelper.js.map +1 -0
  14. package/dist/lib/helpers/DictionaryApiHelper.d.ts +12 -8
  15. package/dist/lib/helpers/DictionaryApiHelper.js +104 -66
  16. package/dist/lib/helpers/DictionaryApiHelper.js.map +1 -1
  17. package/dist/lib/helpers/DictionaryUiHelper.d.ts +32 -0
  18. package/dist/lib/helpers/DictionaryUiHelper.js +100 -0
  19. package/dist/lib/helpers/DictionaryUiHelper.js.map +1 -0
  20. package/dist/lib/helpers/DocumentApiHelper.d.ts +22 -0
  21. package/dist/lib/helpers/DocumentApiHelper.js +226 -0
  22. package/dist/lib/helpers/DocumentApiHelper.js.map +1 -1
  23. package/dist/lib/helpers/DocumentBlueprintApiHelper.d.ts +18 -0
  24. package/dist/lib/helpers/DocumentBlueprintApiHelper.js +126 -0
  25. package/dist/lib/helpers/DocumentBlueprintApiHelper.js.map +1 -0
  26. package/dist/lib/helpers/DocumentBlueprintUiHelper.d.ts +18 -0
  27. package/dist/lib/helpers/DocumentBlueprintUiHelper.js +54 -0
  28. package/dist/lib/helpers/DocumentBlueprintUiHelper.js.map +1 -0
  29. package/dist/lib/helpers/DocumentTypeApiHelper.d.ts +37 -0
  30. package/dist/lib/helpers/DocumentTypeApiHelper.js +464 -0
  31. package/dist/lib/helpers/DocumentTypeApiHelper.js.map +1 -0
  32. package/dist/lib/helpers/DocumentTypeUiHelper.d.ts +35 -0
  33. package/dist/lib/helpers/DocumentTypeUiHelper.js +98 -0
  34. package/dist/lib/helpers/DocumentTypeUiHelper.js.map +1 -0
  35. package/dist/lib/helpers/ExamineManagementUiHelper.d.ts +15 -0
  36. package/dist/lib/helpers/ExamineManagementUiHelper.js +38 -0
  37. package/dist/lib/helpers/ExamineManagementUiHelper.js.map +1 -0
  38. package/dist/lib/helpers/HealthCheckApiHelper.d.ts +13 -0
  39. package/dist/lib/helpers/HealthCheckApiHelper.js +47 -0
  40. package/dist/lib/helpers/HealthCheckApiHelper.js.map +1 -0
  41. package/dist/lib/helpers/HealthCheckUiHelper.d.ts +23 -0
  42. package/dist/lib/helpers/HealthCheckUiHelper.js +59 -0
  43. package/dist/lib/helpers/HealthCheckUiHelper.js.map +1 -0
  44. package/dist/lib/helpers/IndexerApiHelper.d.ts +7 -0
  45. package/dist/lib/helpers/IndexerApiHelper.js +19 -0
  46. package/dist/lib/helpers/IndexerApiHelper.js.map +1 -0
  47. package/dist/lib/helpers/LanguageApiHelper.d.ts +8 -4
  48. package/dist/lib/helpers/LanguageApiHelper.js +46 -26
  49. package/dist/lib/helpers/LanguageApiHelper.js.map +1 -1
  50. package/dist/lib/helpers/LanguageUiHelper.d.ts +23 -0
  51. package/dist/lib/helpers/LanguageUiHelper.js +68 -0
  52. package/dist/lib/helpers/LanguageUiHelper.js.map +1 -0
  53. package/dist/lib/helpers/LogViewerUiHelper.d.ts +37 -0
  54. package/dist/lib/helpers/LogViewerUiHelper.js +102 -0
  55. package/dist/lib/helpers/LogViewerUiHelper.js.map +1 -0
  56. package/dist/lib/helpers/LoginUiHelper.d.ts +11 -0
  57. package/dist/lib/helpers/LoginUiHelper.js +30 -0
  58. package/dist/lib/helpers/LoginUiHelper.js.map +1 -0
  59. package/dist/lib/helpers/MediaApiHelper.d.ts +22 -0
  60. package/dist/lib/helpers/MediaApiHelper.js +168 -0
  61. package/dist/lib/helpers/MediaApiHelper.js.map +1 -0
  62. package/dist/lib/helpers/MediaTypeApiHelper.d.ts +32 -0
  63. package/dist/lib/helpers/MediaTypeApiHelper.js +390 -0
  64. package/dist/lib/helpers/MediaTypeApiHelper.js.map +1 -0
  65. package/dist/lib/helpers/MediaTypeUiHelper.d.ts +14 -0
  66. package/dist/lib/helpers/MediaTypeUiHelper.js +38 -0
  67. package/dist/lib/helpers/MediaTypeUiHelper.js.map +1 -0
  68. package/dist/lib/helpers/MediaUiHelper.d.ts +36 -0
  69. package/dist/lib/helpers/MediaUiHelper.js +115 -0
  70. package/dist/lib/helpers/MediaUiHelper.js.map +1 -0
  71. package/dist/lib/helpers/MemberApiHelper.d.ts +16 -0
  72. package/dist/lib/helpers/MemberApiHelper.js +88 -0
  73. package/dist/lib/helpers/MemberApiHelper.js.map +1 -0
  74. package/dist/lib/helpers/MemberGroupApiHelper.d.ts +14 -0
  75. package/dist/lib/helpers/MemberGroupApiHelper.js +62 -0
  76. package/dist/lib/helpers/MemberGroupApiHelper.js.map +1 -0
  77. package/dist/lib/helpers/MemberGroupUiHelper.d.ts +15 -0
  78. package/dist/lib/helpers/MemberGroupUiHelper.js +40 -0
  79. package/dist/lib/helpers/MemberGroupUiHelper.js.map +1 -0
  80. package/dist/lib/helpers/MemberTypeApiHelper.d.ts +17 -0
  81. package/dist/lib/helpers/MemberTypeApiHelper.js +121 -0
  82. package/dist/lib/helpers/MemberTypeApiHelper.js.map +1 -0
  83. package/dist/lib/helpers/MemberTypeUiHelper.d.ts +13 -0
  84. package/dist/lib/helpers/MemberTypeUiHelper.js +35 -0
  85. package/dist/lib/helpers/MemberTypeUiHelper.js.map +1 -0
  86. package/dist/lib/helpers/MemberUiHelper.d.ts +40 -0
  87. package/dist/lib/helpers/MemberUiHelper.js +114 -0
  88. package/dist/lib/helpers/MemberUiHelper.js.map +1 -0
  89. package/dist/lib/helpers/ModelsBuilderApiHelper.d.ts +6 -0
  90. package/dist/lib/helpers/ModelsBuilderApiHelper.js +15 -0
  91. package/dist/lib/helpers/ModelsBuilderApiHelper.js.map +1 -0
  92. package/dist/lib/helpers/ModelsBuilderUiHelper.d.ts +9 -0
  93. package/dist/lib/helpers/ModelsBuilderUiHelper.js +22 -0
  94. package/dist/lib/helpers/ModelsBuilderUiHelper.js.map +1 -0
  95. package/dist/lib/helpers/ObjectTypesApiHelper.d.ts +7 -0
  96. package/dist/lib/helpers/ObjectTypesApiHelper.js +25 -0
  97. package/dist/lib/helpers/ObjectTypesApiHelper.js.map +1 -0
  98. package/dist/lib/helpers/PackageApiHelper.d.ts +3 -2
  99. package/dist/lib/helpers/PackageApiHelper.js +6 -3
  100. package/dist/lib/helpers/PackageApiHelper.js.map +1 -1
  101. package/dist/lib/helpers/PackageUiHelper.d.ts +49 -0
  102. package/dist/lib/helpers/PackageUiHelper.js +134 -0
  103. package/dist/lib/helpers/PackageUiHelper.js.map +1 -0
  104. package/dist/lib/helpers/PartialViewApiHelper.d.ts +14 -10
  105. package/dist/lib/helpers/PartialViewApiHelper.js +124 -98
  106. package/dist/lib/helpers/PartialViewApiHelper.js.map +1 -1
  107. package/dist/lib/helpers/PartialViewUiHelper.d.ts +19 -0
  108. package/dist/lib/helpers/PartialViewUiHelper.js +59 -0
  109. package/dist/lib/helpers/PartialViewUiHelper.js.map +1 -0
  110. package/dist/lib/helpers/ProfilingUiHelper.d.ts +11 -0
  111. package/dist/lib/helpers/ProfilingUiHelper.js +27 -0
  112. package/dist/lib/helpers/ProfilingUiHelper.js.map +1 -0
  113. package/dist/lib/helpers/PublishedCacheApiHelper.d.ts +6 -0
  114. package/dist/lib/helpers/PublishedCacheApiHelper.js +15 -0
  115. package/dist/lib/helpers/PublishedCacheApiHelper.js.map +1 -0
  116. package/dist/lib/helpers/PublishedStatusUiHelper.d.ts +19 -0
  117. package/dist/lib/helpers/PublishedStatusUiHelper.js +47 -0
  118. package/dist/lib/helpers/PublishedStatusUiHelper.js.map +1 -0
  119. package/dist/lib/helpers/RedirectManagementApiHelper.d.ts +10 -0
  120. package/dist/lib/helpers/RedirectManagementApiHelper.js +30 -0
  121. package/dist/lib/helpers/RedirectManagementApiHelper.js.map +1 -0
  122. package/dist/lib/helpers/RedirectManagementUiHelper.d.ts +17 -0
  123. package/dist/lib/helpers/RedirectManagementUiHelper.js +45 -0
  124. package/dist/lib/helpers/RedirectManagementUiHelper.js.map +1 -0
  125. package/dist/lib/helpers/RelationTypeApiHelper.d.ts +15 -0
  126. package/dist/lib/helpers/{RelationType.js → RelationTypeApiHelper.js} +45 -58
  127. package/dist/lib/helpers/RelationTypeApiHelper.js.map +1 -0
  128. package/dist/lib/helpers/RelationTypeUiHelper.d.ts +21 -0
  129. package/dist/lib/helpers/RelationTypeUiHelper.js +55 -0
  130. package/dist/lib/helpers/RelationTypeUiHelper.js.map +1 -0
  131. package/dist/lib/helpers/ScriptApiHelper.d.ts +5 -3
  132. package/dist/lib/helpers/ScriptApiHelper.js +44 -26
  133. package/dist/lib/helpers/ScriptApiHelper.js.map +1 -1
  134. package/dist/lib/helpers/ScriptUiHelper.d.ts +18 -0
  135. package/dist/lib/helpers/ScriptUiHelper.js +59 -0
  136. package/dist/lib/helpers/ScriptUiHelper.js.map +1 -0
  137. package/dist/lib/helpers/StylesheetApiHelper.d.ts +6 -4
  138. package/dist/lib/helpers/StylesheetApiHelper.js +47 -41
  139. package/dist/lib/helpers/StylesheetApiHelper.js.map +1 -1
  140. package/dist/lib/helpers/StylesheetUiHelper.d.ts +22 -28
  141. package/dist/lib/helpers/StylesheetUiHelper.js +72 -75
  142. package/dist/lib/helpers/StylesheetUiHelper.js.map +1 -1
  143. package/dist/lib/helpers/TelemetryDataUiHelper.d.ts +10 -0
  144. package/dist/lib/helpers/TelemetryDataUiHelper.js +25 -0
  145. package/dist/lib/helpers/TelemetryDataUiHelper.js.map +1 -0
  146. package/dist/lib/helpers/TemplateApiHelper.d.ts +1 -0
  147. package/dist/lib/helpers/TemplateApiHelper.js +6 -0
  148. package/dist/lib/helpers/TemplateApiHelper.js.map +1 -1
  149. package/dist/lib/helpers/TemplateUiHelper.d.ts +25 -0
  150. package/dist/lib/helpers/TemplateUiHelper.js +93 -0
  151. package/dist/lib/helpers/TemplateUiHelper.js.map +1 -0
  152. package/dist/lib/helpers/TemporaryFileApiHelper.d.ts +1 -1
  153. package/dist/lib/helpers/TemporaryFileApiHelper.js +6 -10
  154. package/dist/lib/helpers/TemporaryFileApiHelper.js.map +1 -1
  155. package/dist/lib/helpers/UiBaseLocators.d.ts +220 -0
  156. package/dist/lib/helpers/UiBaseLocators.js +698 -0
  157. package/dist/lib/helpers/UiBaseLocators.js.map +1 -0
  158. package/dist/lib/helpers/UiHelpers.d.ts +58 -9
  159. package/dist/lib/helpers/UiHelpers.js +90 -39
  160. package/dist/lib/helpers/UiHelpers.js.map +1 -1
  161. package/dist/lib/helpers/UserApiHelper.d.ts +16 -9
  162. package/dist/lib/helpers/UserApiHelper.js +64 -19
  163. package/dist/lib/helpers/UserApiHelper.js.map +1 -1
  164. package/dist/lib/helpers/UserGroupApiHelper.d.ts +5 -3
  165. package/dist/lib/helpers/UserGroupApiHelper.js +20 -19
  166. package/dist/lib/helpers/UserGroupApiHelper.js.map +1 -1
  167. package/dist/lib/helpers/UserGroupUiHelper.d.ts +20 -0
  168. package/dist/lib/helpers/UserGroupUiHelper.js +56 -0
  169. package/dist/lib/helpers/UserGroupUiHelper.js.map +1 -0
  170. package/dist/lib/helpers/UserUiHelper.d.ts +73 -0
  171. package/dist/lib/helpers/UserUiHelper.js +200 -0
  172. package/dist/lib/helpers/UserUiHelper.js.map +1 -0
  173. package/dist/lib/helpers/WelcomeDashboardUiHelper.d.ts +9 -0
  174. package/dist/lib/helpers/WelcomeDashboardUiHelper.js +22 -0
  175. package/dist/lib/helpers/WelcomeDashboardUiHelper.js.map +1 -0
  176. package/dist/lib/helpers/testExtension.js +5 -0
  177. package/dist/lib/helpers/testExtension.js.map +1 -1
  178. package/dist/tsconfig.tsbuildinfo +1 -1
  179. package/dist/umbraco.config.js +1 -1
  180. package/dist/umbraco.config.js.map +1 -1
  181. package/package.json +9 -11
  182. package/dist/lib/helpers/RelationType.d.ts +0 -15
  183. package/dist/lib/helpers/RelationType.js.map +0 -1
@@ -6,131 +6,157 @@ class PartialViewApiHelper {
6
6
  constructor(api) {
7
7
  this.api = api;
8
8
  }
9
- async ensureNameNotExistsAtRoot(name) {
10
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/partial-view/root?skip=0&take=10000');
11
- const json = await response.json();
12
- for (const sb of json.items) {
13
- if (sb.name === name) {
14
- if (sb.isFolder == false) {
15
- return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view?path=' + sb.path);
9
+ async get(path) {
10
+ const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/' + encodeURIComponent(path));
11
+ return await response.json();
12
+ }
13
+ async doesExist(path) {
14
+ const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/' + encodeURIComponent(path));
15
+ return response.status() === 200;
16
+ }
17
+ async create(name, content, parentPath) {
18
+ const parentValue = parentPath ? { 'path': parentPath } : null;
19
+ const partialViewData = {
20
+ 'name': name,
21
+ 'parent': parentValue,
22
+ 'content': content
23
+ };
24
+ const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/partial-view', partialViewData);
25
+ // Returns the path of the created partialView
26
+ const partialViewPath = response.headers().location.split("/").pop();
27
+ return decodeURIComponent(partialViewPath);
28
+ }
29
+ async updateContent(path, content) {
30
+ const contentData = {
31
+ 'content': content
32
+ };
33
+ return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/' + encodeURIComponent(path), contentData);
34
+ }
35
+ async updateName(path, name) {
36
+ const renameData = {
37
+ 'name': name
38
+ };
39
+ const response = await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/' + encodeURIComponent(path) + '/rename', renameData);
40
+ // Returns the path of the renamed partialView
41
+ const partialViewPath = response.headers().location.split("/").pop();
42
+ return decodeURIComponent(partialViewPath);
43
+ }
44
+ async delete(path) {
45
+ return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/' + encodeURIComponent(path));
46
+ }
47
+ async doesNameExist(name) {
48
+ return await this.getByName(name);
49
+ }
50
+ async getChildren(path) {
51
+ const response = await this.api.get(`${this.api.baseUrl}/umbraco/management/api/v1/tree/partial-view/children?parentPath=${path}&skip=0&take=10000`);
52
+ const items = await response.json();
53
+ return items.items;
54
+ }
55
+ async getAllAtRoot() {
56
+ return await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/partial-view/root?skip=0&take=10000');
57
+ }
58
+ async getByName(name) {
59
+ const rootPartialView = await this.getAllAtRoot();
60
+ const jsonPartialView = await rootPartialView.json();
61
+ for (const partialView of jsonPartialView.items) {
62
+ if (partialView.name === name) {
63
+ if (partialView.isFolder) {
64
+ return this.getFolder(partialView.path);
16
65
  }
17
66
  else {
18
- if (sb.hasChildren == true) {
19
- return await this.recurseFolderChildren(sb.path);
20
- }
21
- else {
22
- return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder?path=' + sb.path);
23
- }
67
+ return this.get(partialView.path);
24
68
  }
25
69
  }
26
- }
27
- return null;
28
- }
29
- async nameExistsAtRoot(name) {
30
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/partial-view/root?skip=0&take=10000');
31
- const json = await response.json();
32
- for (const sb of json.items) {
33
- if (sb.name === name) {
34
- return true;
70
+ else if (partialView.isFolder && partialView.hasChildren) {
71
+ const result = await this.recurseChildren(name, partialView.path, false);
72
+ if (result) {
73
+ return result;
74
+ }
35
75
  }
36
76
  }
37
77
  return false;
38
78
  }
39
- async exists(path) {
40
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view?path=' + path);
41
- return response.status() === 200;
42
- }
43
- async get(path) {
44
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view?path=' + path);
45
- return await response.json();
46
- }
47
- async getByNameAtRoot(name) {
48
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/partial-view/root?skip=0&take=10000');
49
- const json = await response.json();
50
- for (const sb of json.items) {
51
- if (sb.name === name) {
52
- if (sb.isFolder === false) {
53
- const partialView = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view?path=' + sb.path);
54
- return await partialView.json();
55
- }
56
- else {
57
- const partialViewFolder = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder?path=' + sb.path);
58
- return await partialViewFolder.json();
79
+ async ensureNameNotExists(name) {
80
+ const rootPartialView = await this.getAllAtRoot();
81
+ const jsonPartialView = await rootPartialView.json();
82
+ for (const partialView of jsonPartialView.items) {
83
+ if (partialView.name === name) {
84
+ if (partialView.isFolder) {
85
+ return await this.recurseDeleteChildren(partialView);
59
86
  }
87
+ return await this.delete(partialView.path);
88
+ }
89
+ else if (partialView.hasChildren) {
90
+ await this.recurseChildren(name, partialView.path, true);
60
91
  }
61
92
  }
62
93
  return null;
63
94
  }
64
- async create(name, content, parentPath = "") {
65
- const partialViewData = {
66
- "name": name,
67
- "content": content,
68
- "parentPath": parentPath
69
- };
70
- const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/partial-view', partialViewData);
71
- // Returns the path of the created partialView
72
- return response.headers().location.split("=").pop();
73
- }
74
- async update(partialView) {
75
- const partialViewData = {
76
- "name": partialView.name,
77
- "content": partialView.content,
78
- "existingPath": partialView.path
79
- };
80
- return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/partial-view', partialViewData);
95
+ async recurseChildren(name, path, toDelete) {
96
+ const items = await this.getChildren(path);
97
+ for (const child of items) {
98
+ if (child.name === name) {
99
+ if (!toDelete) {
100
+ if (child.isFolder) {
101
+ return await this.getFolder(child.path);
102
+ }
103
+ return await this.get(child.path);
104
+ }
105
+ if (child.isFolder) {
106
+ return await this.recurseDeleteChildren(child);
107
+ }
108
+ return await this.delete(child.path);
109
+ }
110
+ else if (child.hasChildren) {
111
+ return await this.recurseChildren(name, child.path, toDelete);
112
+ }
113
+ }
114
+ return false;
81
115
  }
82
- async delete(path) {
83
- return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view?path=' + path);
116
+ async recurseDeleteChildren(partialViewFolder) {
117
+ if (!partialViewFolder.hasChildren) {
118
+ return await this.deleteFolder(partialViewFolder.path);
119
+ }
120
+ const items = await this.getChildren(partialViewFolder.path);
121
+ for (const child of items) {
122
+ if (child.hasChildren) {
123
+ await this.recurseDeleteChildren(child);
124
+ }
125
+ else if (child.isFolder) {
126
+ await this.deleteFolder(child.path);
127
+ }
128
+ else {
129
+ await this.delete(child.path);
130
+ }
131
+ }
132
+ return await this.deleteFolder(partialViewFolder.path);
84
133
  }
85
134
  // Folder
86
135
  async getFolder(path) {
87
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder?path=' + path);
136
+ const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder/' + encodeURIComponent(path));
88
137
  return await response.json();
89
138
  }
90
- async folderExists(path) {
91
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder?path=' + path);
139
+ async doesFolderExist(path) {
140
+ const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder/' + encodeURIComponent(path));
92
141
  return response.status() === 200;
93
142
  }
94
- async getFolderChildren(path) {
95
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/partial-view/children?path=' + path + '&skip=0&take=10000');
96
- const json = await response.json();
97
- if (json !== null) {
98
- return json;
99
- }
100
- return null;
101
- }
102
- async createFolder(name, parentPath = "") {
143
+ async createFolder(name, parentPath) {
144
+ const parentValue = parentPath ? { 'path': parentPath } : null;
103
145
  const partialViewFolderData = {
104
146
  "name": name,
105
- "parentPath": parentPath
147
+ "parent": parentValue
106
148
  };
107
149
  const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder', partialViewFolderData);
108
- // Returns the id of the created partialViewFolder
109
- const json = await response.json();
110
- return json.path;
150
+ // Returns the path of the created folder
151
+ const folderPath = response.headers().location.split("/").pop();
152
+ return decodeURIComponent(folderPath);
111
153
  }
112
154
  async deleteFolder(path) {
113
- return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder?path=' + path);
114
- }
115
- async recurseFolderChildren(path) {
116
- const parentPartialView = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/partial-view/children?path=' + path + '&skip=0&take=10000');
117
- const itemsJson = await parentPartialView.json();
118
- for (const child of itemsJson.items) {
119
- if (child.path !== null) {
120
- if (child.isFolder == true) {
121
- if (child.hasChildren == true) {
122
- await this.recurseFolderChildren(child.path);
123
- }
124
- else {
125
- await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder?path=' + child.path);
126
- }
127
- }
128
- else {
129
- await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/?path=' + child.path);
130
- }
131
- }
132
- }
133
- await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder?path=' + path);
155
+ return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder/' + encodeURIComponent(path));
156
+ }
157
+ async createDefaultPartialView(name) {
158
+ await this.ensureNameNotExists(name);
159
+ return await this.create(name, "<h1>Test</h1>");
134
160
  }
135
161
  }
136
162
  exports.PartialViewApiHelper = PartialViewApiHelper;
@@ -1 +1 @@
1
- {"version":3,"file":"PartialViewApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/PartialViewApiHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import {ApiHelpers} from \"./ApiHelpers\";\n\nexport class PartialViewApiHelper {\n api: ApiHelpers\n\n constructor(api: ApiHelpers) {\n this.api = api;\n }\n\n async ensureNameNotExistsAtRoot(name: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/partial-view/root?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.isFolder == false) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view?path=' + sb.path);\n } else {\n if (sb.hasChildren == true) {\n return await this.recurseFolderChildren(sb.path);\n } else {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder?path=' + sb.path);\n }\n }\n }\n }\n return null;\n }\n\n async nameExistsAtRoot(name: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/partial-view/root?skip=0&take=10000');\n const json = await response.json();\n\n for (const sb of json.items) {\n if (sb.name === name) {\n return true;\n }\n }\n return false;\n }\n\n async exists(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view?path=' + path);\n return response.status() === 200;\n }\n\n async get(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view?path=' + path);\n return await response.json();\n }\n\n async getByNameAtRoot(name: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/partial-view/root?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.isFolder === false) {\n const partialView = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view?path=' + sb.path);\n return await partialView.json();\n } else {\n const partialViewFolder = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder?path=' + sb.path);\n return await partialViewFolder.json();\n }\n }\n }\n return null;\n }\n\n async create(name: string, content: string, parentPath: string = \"\") {\n const partialViewData = {\n \"name\": name,\n \"content\": content,\n \"parentPath\": parentPath\n };\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/partial-view', partialViewData);\n // Returns the path of the created partialView\n return response.headers().location.split(\"=\").pop();\n }\n\n async update(partialView) {\n const partialViewData = {\n \"name\": partialView.name,\n \"content\": partialView.content,\n \"existingPath\": partialView.path\n };\n return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/partial-view', partialViewData);\n }\n\n async delete(path: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view?path=' + path);\n }\n\n // Folder\n async getFolder(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder?path=' + path);\n return await response.json();\n }\n\n async folderExists(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder?path=' + path);\n return response.status() === 200;\n }\n\n async getFolderChildren(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/partial-view/children?path=' + path + '&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 createFolder(name: string, parentPath = \"\") {\n const partialViewFolderData =\n {\n \"name\": name,\n \"parentPath\": parentPath\n };\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder', partialViewFolderData);\n // Returns the id of the created partialViewFolder\n const json = await response.json();\n return json.path;\n }\n\n async deleteFolder(path: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder?path=' + path);\n }\n\n async recurseFolderChildren(path: string) {\n const parentPartialView = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/partial-view/children?path=' + path + '&skip=0&take=10000');\n const itemsJson = await parentPartialView.json();\n\n for (const child of itemsJson.items) {\n if (child.path !== null) {\n if (child.isFolder == true) {\n if (child.hasChildren == true) {\n await this.recurseFolderChildren(child.path);\n } else {\n await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder?path=' + child.path);\n }\n } else {\n await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/?path=' + child.path);\n }\n }\n }\n await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder?path=' + path);\n }\n}"]}
1
+ {"version":3,"file":"PartialViewApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/PartialViewApiHelper.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,GAAG,CAAC,IAAY;QACpB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,0CAA0C,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9H,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,0CAA0C,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9H,OAAO,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,OAAe,EAAE,UAAmB;QAC7D,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,EAAC,MAAM,EAAE,UAAU,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7D,MAAM,eAAe,GAAG;YACtB,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,WAAW;YACrB,SAAS,EAAE,OAAO;SACnB,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,yCAAyC,EAAE,eAAe,CAAC,CAAC;QACpH,8CAA8C;QAC9C,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAY,CAAC;QAC/E,OAAO,kBAAkB,CAAC,eAAe,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAY,EAAE,OAAe;QAC/C,MAAM,WAAW,GAAG;YAClB,SAAS,EAAE,OAAO;SACnB,CAAA;QACD,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,0CAA0C,GAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;IAClI,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,IAAY;QACzC,MAAM,UAAU,GAAG;YACjB,MAAM,EAAE,IAAI;SACb,CAAA;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,0CAA0C,GAAE,kBAAkB,CAAC,IAAI,CAAC,GAAG,SAAS,EAAE,UAAU,CAAC,CAAC;QACrJ,8CAA8C;QAC9C,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAY,CAAC;QAC/E,OAAO,kBAAkB,CAAC,eAAe,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,0CAA0C,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IACzH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAY;QAC9B,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAY;QAC5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,oEAAoE,IAAI,oBAAoB,CAAC,CAAC;QACrJ,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,qEAAqE,CAAC,CAAC;IACtH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAClD,MAAM,eAAe,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,CAAC;QAErD,KAAK,MAAM,WAAW,IAAI,eAAe,CAAC,KAAK,EAAE;YAC/C,IAAI,WAAW,CAAC,IAAI,KAAK,IAAI,EAAE;gBAC7B,IAAI,WAAW,CAAC,QAAQ,EAAE;oBACxB,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;iBACzC;qBAAM;oBACL,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;iBACnC;aACF;iBAAM,IAAI,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC,WAAW,EAAE;gBAC1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACzE,IAAI,MAAM,EAAE;oBACV,OAAO,MAAM,CAAC;iBACf;aACF;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,IAAY;QACpC,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAClD,MAAM,eAAe,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,CAAC;QAErD,KAAK,MAAM,WAAW,IAAI,eAAe,CAAC,KAAK,EAAE;YAC/C,IAAI,WAAW,CAAC,IAAI,KAAK,IAAI,EAAE;gBAC7B,IAAI,WAAW,CAAC,QAAQ,EAAE;oBACxB,OAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;iBACtD;gBACD,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aAC5C;iBAAM,IAAI,WAAW,CAAC,WAAW,EAAE;gBAClC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;aAC1D;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,IAAY,EAAE,IAAY,EAAE,QAAiB;QACzE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAE3C,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE;YACzB,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;gBACvB,IAAI,CAAC,QAAQ,EAAE;oBACb,IAAI,KAAK,CAAC,QAAQ,EAAE;wBAClB,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;qBACzC;oBACD,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;iBACnC;gBACD,IAAI,KAAK,CAAC,QAAQ,EAAE;oBAClB,OAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;iBAChD;gBACD,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aACtC;iBAAM,IAAI,KAAK,CAAC,WAAW,EAAE;gBAC5B,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;aAC/D;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,iBAAiB;QACnD,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE;YAClC,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;SACxD;QACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAE7D,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE;YACzB,IAAI,KAAK,CAAC,WAAW,EAAE;gBACrB,MAAM,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;aACzC;iBAAM,IAAI,KAAK,CAAC,QAAQ,EAAE;gBACzB,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aACrC;iBAAM;gBACL,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC/B;SACF;QACD,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,SAAS;IACT,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,iDAAiD,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QACrI,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,IAAY;QAChC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,iDAAiD,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QACrI,OAAO,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,UAAmB;QAClD,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,EAAC,MAAM,EAAE,UAAU,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7D,MAAM,qBAAqB,GACzB;YACE,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,WAAW;SACtB,CAAC;QACJ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,gDAAgD,EAAE,qBAAqB,CAAC,CAAC;QACjI,yCAAyC;QACzC,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAY,CAAC;QAC1E,OAAO,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAY;QAC7B,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,iDAAiD,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAChI,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,IAAY;QACzC,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IAClD,CAAC;CACF;AA/KD,oDA+KC","sourcesContent":["import {ApiHelpers} from \"./ApiHelpers\";\n\nexport class PartialViewApiHelper {\n api: ApiHelpers\n\n constructor(api: ApiHelpers) {\n this.api = api;\n }\n\n async get(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/' + encodeURIComponent(path));\n return await response.json();\n }\n\n async doesExist(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/' + encodeURIComponent(path));\n return response.status() === 200;\n }\n\n async create(name: string, content: string, parentPath?: string) {\n const parentValue = parentPath ? {'path': parentPath} : null;\n const partialViewData = {\n 'name': name,\n 'parent': parentValue,\n 'content': content\n };\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/partial-view', partialViewData);\n // Returns the path of the created partialView\n const partialViewPath = response.headers().location.split(\"/\").pop() as string;\n return decodeURIComponent(partialViewPath);\n }\n\n async updateContent(path: string, content: string) {\n const contentData = {\n 'content': content\n }\n return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/'+ encodeURIComponent(path), contentData);\n }\n\n async updateName(path: string, name: string) {\n const renameData = {\n 'name': name\n }\n const response = await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/'+ encodeURIComponent(path) + '/rename', renameData);\n // Returns the path of the renamed partialView\n const partialViewPath = response.headers().location.split(\"/\").pop() as string;\n return decodeURIComponent(partialViewPath);\n }\n\n async delete(path: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/' + encodeURIComponent(path));\n }\n\n async doesNameExist(name: string) {\n return await this.getByName(name);\n }\n\n async getChildren(path: string) {\n const response = await this.api.get(`${this.api.baseUrl}/umbraco/management/api/v1/tree/partial-view/children?parentPath=${path}&skip=0&take=10000`);\n const items = await response.json();\n return items.items;\n }\n\n async getAllAtRoot() {\n return await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/partial-view/root?skip=0&take=10000');\n }\n\n async getByName(name: string) {\n const rootPartialView = await this.getAllAtRoot();\n const jsonPartialView = await rootPartialView.json();\n\n for (const partialView of jsonPartialView.items) {\n if (partialView.name === name) {\n if (partialView.isFolder) {\n return this.getFolder(partialView.path);\n } else {\n return this.get(partialView.path);\n }\n } else if (partialView.isFolder && partialView.hasChildren) {\n const result = await this.recurseChildren(name, partialView.path, false);\n if (result) {\n return result;\n }\n }\n }\n return false;\n }\n\n async ensureNameNotExists(name: string) {\n const rootPartialView = await this.getAllAtRoot();\n const jsonPartialView = await rootPartialView.json();\n\n for (const partialView of jsonPartialView.items) {\n if (partialView.name === name) {\n if (partialView.isFolder) {\n return await this.recurseDeleteChildren(partialView);\n }\n return await this.delete(partialView.path);\n } else if (partialView.hasChildren) {\n await this.recurseChildren(name, partialView.path, true);\n }\n }\n return null;\n }\n\n private async recurseChildren(name: string, path: string, toDelete: boolean) {\n const items = await this.getChildren(path);\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.path);\n }\n return await this.get(child.path);\n }\n if (child.isFolder) {\n return await this.recurseDeleteChildren(child);\n }\n return await this.delete(child.path);\n } else if (child.hasChildren) {\n return await this.recurseChildren(name, child.path, toDelete);\n }\n }\n return false;\n }\n\n private async recurseDeleteChildren(partialViewFolder) {\n if (!partialViewFolder.hasChildren) {\n return await this.deleteFolder(partialViewFolder.path);\n }\n const items = await this.getChildren(partialViewFolder.path);\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.path);\n } else {\n await this.delete(child.path);\n }\n }\n return await this.deleteFolder(partialViewFolder.path);\n }\n\n // Folder\n async getFolder(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder/' + encodeURIComponent(path));\n return await response.json();\n }\n\n async doesFolderExist(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder/' + encodeURIComponent(path));\n return response.status() === 200;\n }\n\n async createFolder(name: string, parentPath?: string) {\n const parentValue = parentPath ? {'path': parentPath} : null;\n const partialViewFolderData =\n {\n \"name\": name,\n \"parent\": parentValue\n };\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder', partialViewFolderData);\n // Returns the path of the created folder\n const folderPath = response.headers().location.split(\"/\").pop() as string;\n return decodeURIComponent(folderPath);\n }\n\n async deleteFolder(path: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/partial-view/folder/' + encodeURIComponent(path));\n }\n\n async createDefaultPartialView(name: string) {\n await this.ensureNameNotExists(name);\n return await this.create(name, \"<h1>Test</h1>\");\n }\n}"]}
@@ -0,0 +1,19 @@
1
+ import { Page } from "@playwright/test";
2
+ import { UiBaseLocators } from "./UiBaseLocators";
3
+ export declare class PartialViewUiHelper extends UiBaseLocators {
4
+ private readonly newEmptyPartialViewBtn;
5
+ private readonly newPartialViewFromSnippetBtn;
6
+ private readonly partialViewNameTxt;
7
+ private readonly partialViewTree;
8
+ constructor(page: Page);
9
+ clickActionsMenuForPartialView(name: string): Promise<void>;
10
+ clickActionsMenuAtRoot(): Promise<void>;
11
+ clickRootFolderCaretButton(): Promise<void>;
12
+ clickNewEmptyPartialViewButton(): Promise<void>;
13
+ clickNewPartialViewFromSnippetButton(): Promise<void>;
14
+ enterPartialViewName(partialViewName: string): Promise<void>;
15
+ enterPartialViewContent(partialViewContent: string): Promise<void>;
16
+ openPartialViewAtRoot(partialViewName: string): Promise<void>;
17
+ reloadPartialViewTree(): Promise<void>;
18
+ isPartialViewRootTreeItemVisibile(partialView: string, isVisible?: boolean, toReload?: boolean): Promise<void>;
19
+ }
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PartialViewUiHelper = void 0;
4
+ const test_1 = require("@playwright/test");
5
+ const UiBaseLocators_1 = require("./UiBaseLocators");
6
+ class PartialViewUiHelper extends UiBaseLocators_1.UiBaseLocators {
7
+ newEmptyPartialViewBtn;
8
+ newPartialViewFromSnippetBtn;
9
+ partialViewNameTxt;
10
+ partialViewTree;
11
+ constructor(page) {
12
+ super(page);
13
+ this.newEmptyPartialViewBtn = page.getByLabel('New empty partial view');
14
+ this.newPartialViewFromSnippetBtn = page.getByLabel('New partial view from snippet...');
15
+ this.partialViewNameTxt = page.getByLabel('Enter a name...');
16
+ this.partialViewTree = page.locator('umb-tree[alias="Umb.Tree.PartialView"]');
17
+ }
18
+ async clickActionsMenuForPartialView(name) {
19
+ await this.clickActionsMenuForName(name);
20
+ }
21
+ async clickActionsMenuAtRoot() {
22
+ await this.clickActionsMenuForPartialView('Partial Views');
23
+ }
24
+ async clickRootFolderCaretButton() {
25
+ await this.clickCaretButtonForName('Partial Views');
26
+ }
27
+ async clickNewEmptyPartialViewButton() {
28
+ await this.newEmptyPartialViewBtn.click();
29
+ }
30
+ async clickNewPartialViewFromSnippetButton() {
31
+ await this.newPartialViewFromSnippetBtn.click();
32
+ }
33
+ async enterPartialViewName(partialViewName) {
34
+ await (0, test_1.expect)(this.partialViewNameTxt).toBeVisible();
35
+ await this.partialViewNameTxt.click();
36
+ await this.partialViewNameTxt.clear();
37
+ await this.partialViewNameTxt.fill(partialViewName);
38
+ }
39
+ async enterPartialViewContent(partialViewContent) {
40
+ await this.textAreaInputArea.clear();
41
+ await this.textAreaInputArea.fill(partialViewContent);
42
+ }
43
+ async openPartialViewAtRoot(partialViewName) {
44
+ await this.reloadPartialViewTree();
45
+ await this.page.getByLabel(partialViewName).click();
46
+ await (0, test_1.expect)(this.partialViewNameTxt).toBeVisible();
47
+ }
48
+ async reloadPartialViewTree() {
49
+ await this.reloadTree('Partial Views');
50
+ }
51
+ async isPartialViewRootTreeItemVisibile(partialView, isVisible = true, toReload = true) {
52
+ if (toReload) {
53
+ await this.reloadPartialViewTree();
54
+ }
55
+ return (0, test_1.expect)(this.partialViewTree.getByText(partialView, { exact: true })).toBeVisible({ visible: isVisible });
56
+ }
57
+ }
58
+ exports.PartialViewUiHelper = PartialViewUiHelper;
59
+ //# sourceMappingURL=PartialViewUiHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PartialViewUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/PartialViewUiHelper.ts"],"names":[],"mappings":";;;AAAA,2CAAsD;AACtD,qDAAgD;AAEhD,MAAa,mBAAoB,SAAQ,+BAAc;IACpC,sBAAsB,CAAU;IAChC,4BAA4B,CAAU;IACtC,kBAAkB,CAAU;IAC5B,eAAe,CAAU;IAE1C,YAAY,IAAU;QACpB,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC;QACxE,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,UAAU,CAAC,kCAAkC,CAAC,CAAC;QACxF,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAC7D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC;IAChF,CAAC;IAED,KAAK,CAAC,8BAA8B,CAAC,IAAY;QAC/C,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,sBAAsB;QAC1B,MAAM,IAAI,CAAC,8BAA8B,CAAC,eAAe,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,0BAA0B;QAC9B,MAAM,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,8BAA8B;QAClC,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,oCAAoC;QACxC,MAAM,IAAI,CAAC,4BAA4B,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,eAAuB;QAChD,MAAM,IAAA,aAAM,EAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,WAAW,EAAE,CAAC;QACpD,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QACtC,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QACtC,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,kBAA0B;QACtD,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QACrC,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,eAAuB;QACjD,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACnC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,KAAK,EAAE,CAAC;QACpD,MAAM,IAAA,aAAM,EAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,WAAW,EAAE,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,qBAAqB;QACzB,MAAM,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,iCAAiC,CAAC,WAAmB,EAAE,YAAqB,IAAI,EAAE,WAAoB,IAAI;QAC9G,IAAI,QAAQ,EAAE;YACZ,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;SACpC;QACD,OAAO,IAAA,aAAM,EAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,WAAW,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAC,OAAO,EAAE,SAAS,EAAC,CAAC,CAAC;IAC9G,CAAC;CACF;AA9DD,kDA8DC","sourcesContent":["import {Page, Locator, expect} from \"@playwright/test\"\nimport {UiBaseLocators} from \"./UiBaseLocators\";\n\nexport class PartialViewUiHelper extends UiBaseLocators{\n private readonly newEmptyPartialViewBtn: Locator;\n private readonly newPartialViewFromSnippetBtn: Locator;\n private readonly partialViewNameTxt: Locator;\n private readonly partialViewTree: Locator;\n\n constructor(page: Page) {\n super(page);\n this.newEmptyPartialViewBtn = page.getByLabel('New empty partial view');\n this.newPartialViewFromSnippetBtn = page.getByLabel('New partial view from snippet...');\n this.partialViewNameTxt = page.getByLabel('Enter a name...');\n this.partialViewTree = page.locator('umb-tree[alias=\"Umb.Tree.PartialView\"]');\n }\n\n async clickActionsMenuForPartialView(name: string) {\n await this.clickActionsMenuForName(name);\n }\n\n async clickActionsMenuAtRoot() {\n await this.clickActionsMenuForPartialView('Partial Views');\n }\n\n async clickRootFolderCaretButton() {\n await this.clickCaretButtonForName('Partial Views');\n }\n\n async clickNewEmptyPartialViewButton() {\n await this.newEmptyPartialViewBtn.click();\n }\n\n async clickNewPartialViewFromSnippetButton() {\n await this.newPartialViewFromSnippetBtn.click();\n }\n\n async enterPartialViewName(partialViewName: string) {\n await expect(this.partialViewNameTxt).toBeVisible();\n await this.partialViewNameTxt.click();\n await this.partialViewNameTxt.clear();\n await this.partialViewNameTxt.fill(partialViewName);\n }\n\n async enterPartialViewContent(partialViewContent: string) {\n await this.textAreaInputArea.clear();\n await this.textAreaInputArea.fill(partialViewContent);\n }\n\n async openPartialViewAtRoot(partialViewName: string) {\n await this.reloadPartialViewTree();\n await this.page.getByLabel(partialViewName).click();\n await expect(this.partialViewNameTxt).toBeVisible();\n }\n\n async reloadPartialViewTree() {\n await this.reloadTree('Partial Views');\n }\n\n async isPartialViewRootTreeItemVisibile(partialView: string, isVisible: boolean = true, toReload: boolean = true){\n if (toReload) {\n await this.reloadPartialViewTree();\n }\n return expect(this.partialViewTree.getByText(partialView, {exact: true})).toBeVisible({visible: isVisible});\n }\n}"]}
@@ -0,0 +1,11 @@
1
+ import { Page } from "@playwright/test";
2
+ import { UiBaseLocators } from "./UiBaseLocators";
3
+ export declare class ProfilingUiHelper extends UiBaseLocators {
4
+ private readonly profilingTab;
5
+ private readonly activateProfilerByDefaultSlider;
6
+ private readonly activateProfilerByDefaultCheckbox;
7
+ constructor(page: Page);
8
+ clickProfilingTab(): Promise<void>;
9
+ clickActivateProfilerByDefaultSlider(): Promise<void>;
10
+ isActivateProfilerByDefaultSliderChecked(isChecked: boolean): Promise<void>;
11
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProfilingUiHelper = void 0;
4
+ const test_1 = require("@playwright/test");
5
+ const UiBaseLocators_1 = require("./UiBaseLocators");
6
+ class ProfilingUiHelper extends UiBaseLocators_1.UiBaseLocators {
7
+ profilingTab;
8
+ activateProfilerByDefaultSlider;
9
+ activateProfilerByDefaultCheckbox;
10
+ constructor(page) {
11
+ super(page);
12
+ this.profilingTab = page.getByRole('tab', { name: 'Profiling' });
13
+ this.activateProfilerByDefaultSlider = page.locator("[label='Activate the profiler by default'] #slider");
14
+ this.activateProfilerByDefaultCheckbox = page.getByLabel('Activate the profiler by default');
15
+ }
16
+ async clickProfilingTab() {
17
+ await this.profilingTab.click();
18
+ }
19
+ async clickActivateProfilerByDefaultSlider() {
20
+ await this.activateProfilerByDefaultSlider.click();
21
+ }
22
+ async isActivateProfilerByDefaultSliderChecked(isChecked) {
23
+ return (0, test_1.expect)(this.activateProfilerByDefaultCheckbox).toBeChecked({ checked: isChecked });
24
+ }
25
+ }
26
+ exports.ProfilingUiHelper = ProfilingUiHelper;
27
+ //# sourceMappingURL=ProfilingUiHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProfilingUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/ProfilingUiHelper.ts"],"names":[],"mappings":";;;AAAA,2CAAuD;AACvD,qDAAgD;AAEhD,MAAa,iBAAkB,SAAQ,+BAAc;IAClC,YAAY,CAAU;IACtB,+BAA+B,CAAU;IACzC,iCAAiC,CAAU;IAE5D,YAAY,IAAU;QACpB,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAC,IAAI,EAAE,WAAW,EAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC;QAC1G,IAAI,CAAC,iCAAiC,GAAG,IAAI,CAAC,UAAU,CAAC,kCAAkC,CAAC,CAAC;IAC/F,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,oCAAoC;QACxC,MAAM,IAAI,CAAC,+BAA+B,CAAC,KAAK,EAAE,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,wCAAwC,CAAC,SAAkB;QAC/D,OAAO,IAAA,aAAM,EAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,WAAW,CAAC,EAAC,OAAO,EAAE,SAAS,EAAC,CAAC,CAAC;IAC1F,CAAC;CACF;AAvBD,8CAuBC","sourcesContent":["import {Page, Locator, expect} from \"@playwright/test\";\nimport {UiBaseLocators} from \"./UiBaseLocators\";\n\nexport class ProfilingUiHelper extends UiBaseLocators {\n private readonly profilingTab: Locator;\n private readonly activateProfilerByDefaultSlider: Locator;\n private readonly activateProfilerByDefaultCheckbox: Locator;\n\n constructor(page: Page) {\n super(page);\n this.profilingTab = page.getByRole('tab', {name: 'Profiling'});\n this.activateProfilerByDefaultSlider = page.locator(\"[label='Activate the profiler by default'] #slider\");\n this.activateProfilerByDefaultCheckbox = page.getByLabel('Activate the profiler by default');\n }\n\n async clickProfilingTab() {\n await this.profilingTab.click();\n }\n\n async clickActivateProfilerByDefaultSlider() {\n await this.activateProfilerByDefaultSlider.click();\n }\n\n async isActivateProfilerByDefaultSliderChecked(isChecked: boolean) {\n return expect(this.activateProfilerByDefaultCheckbox).toBeChecked({checked: isChecked});\n }\n}\n"]}
@@ -0,0 +1,6 @@
1
+ import { ApiHelpers } from "./ApiHelpers";
2
+ export declare class PublishedCacheApiHelper {
3
+ api: ApiHelpers;
4
+ constructor(api: ApiHelpers);
5
+ getStatus(): Promise<any>;
6
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PublishedCacheApiHelper = void 0;
4
+ class PublishedCacheApiHelper {
5
+ api;
6
+ constructor(api) {
7
+ this.api = api;
8
+ }
9
+ async getStatus() {
10
+ const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/published-cache/status');
11
+ return await response.json();
12
+ }
13
+ }
14
+ exports.PublishedCacheApiHelper = PublishedCacheApiHelper;
15
+ //# sourceMappingURL=PublishedCacheApiHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PublishedCacheApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/PublishedCacheApiHelper.ts"],"names":[],"mappings":";;;AAEA,MAAa,uBAAuB;IAClC,GAAG,CAAY;IAEf,YAAY,GAAe;QACzB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,mDAAmD,CAAC,CAAC;QAC5G,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;CACF;AAXD,0DAWC","sourcesContent":["import {ApiHelpers} from \"./ApiHelpers\";\n\nexport class PublishedCacheApiHelper {\n api: ApiHelpers\n\n constructor(api: ApiHelpers) {\n this.api = api;\n }\n\n async getStatus() {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/published-cache/status');\n return await response.json(); \n }\n}"]}
@@ -0,0 +1,19 @@
1
+ import { Page } from "@playwright/test";
2
+ import { UiBaseLocators } from "./UiBaseLocators";
3
+ export declare class PublishedStatusUiHelper extends UiBaseLocators {
4
+ private readonly publishedStatusTab;
5
+ private readonly refreshStatusBtn;
6
+ private readonly reloadMemoryCacheBtn;
7
+ private readonly rebuildDatabaseCacheBtn;
8
+ private readonly snapshotInternalCacheBtn;
9
+ private readonly continueBtn;
10
+ private readonly publishedCacheBox;
11
+ constructor(page: Page);
12
+ clickPublishedStatusTab(): Promise<void>;
13
+ clickRefreshStatusButton(): Promise<void>;
14
+ clickReloadMemoryCacheButton(): Promise<void>;
15
+ clickRebuildDatabaseCacheButton(): Promise<void>;
16
+ clickSnapshotInternalCacheButton(): Promise<void>;
17
+ clickContinueButton(): Promise<void>;
18
+ isPublishedCacheStatusVisible(status: string): Promise<void>;
19
+ }
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PublishedStatusUiHelper = void 0;
4
+ const test_1 = require("@playwright/test");
5
+ const UiBaseLocators_1 = require("./UiBaseLocators");
6
+ class PublishedStatusUiHelper extends UiBaseLocators_1.UiBaseLocators {
7
+ publishedStatusTab;
8
+ refreshStatusBtn;
9
+ reloadMemoryCacheBtn;
10
+ rebuildDatabaseCacheBtn;
11
+ snapshotInternalCacheBtn;
12
+ continueBtn;
13
+ publishedCacheBox;
14
+ constructor(page) {
15
+ super(page);
16
+ this.publishedStatusTab = page.getByRole('tab', { name: 'Published Status' });
17
+ this.refreshStatusBtn = page.getByLabel('Refresh Status');
18
+ this.reloadMemoryCacheBtn = page.getByLabel('Reload Memory Cache');
19
+ this.rebuildDatabaseCacheBtn = page.getByLabel('Rebuild Database Cache');
20
+ this.snapshotInternalCacheBtn = page.getByLabel('Snapshot Internal Cache');
21
+ this.continueBtn = page.locator('#confirm').getByLabel('Continue');
22
+ this.publishedCacheBox = page.locator('[headline="Published Cache Status"]');
23
+ }
24
+ async clickPublishedStatusTab() {
25
+ await this.publishedStatusTab.click();
26
+ }
27
+ async clickRefreshStatusButton() {
28
+ await this.refreshStatusBtn.click();
29
+ }
30
+ async clickReloadMemoryCacheButton() {
31
+ await this.reloadMemoryCacheBtn.click();
32
+ }
33
+ async clickRebuildDatabaseCacheButton() {
34
+ await this.rebuildDatabaseCacheBtn.click();
35
+ }
36
+ async clickSnapshotInternalCacheButton() {
37
+ await this.snapshotInternalCacheBtn.click();
38
+ }
39
+ async clickContinueButton() {
40
+ await this.continueBtn.click();
41
+ }
42
+ async isPublishedCacheStatusVisible(status) {
43
+ return (0, test_1.expect)(this.publishedCacheBox.getByText(status)).toBeVisible();
44
+ }
45
+ }
46
+ exports.PublishedStatusUiHelper = PublishedStatusUiHelper;
47
+ //# sourceMappingURL=PublishedStatusUiHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PublishedStatusUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/PublishedStatusUiHelper.ts"],"names":[],"mappings":";;;AAAA,2CAAuD;AACvD,qDAAgD;AAEhD,MAAa,uBAAwB,SAAQ,+BAAc;IACxC,kBAAkB,CAAU;IAC5B,gBAAgB,CAAU;IAC1B,oBAAoB,CAAU;IAC9B,uBAAuB,CAAU;IACjC,wBAAwB,CAAU;IAClC,WAAW,CAAU;IACrB,iBAAiB,CAAU;IAE5C,YAAY,IAAU;QACpB,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAC,IAAI,EAAE,kBAAkB,EAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QAC1D,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;QACnE,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC;QACzE,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC;QAC3E,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACnE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAA;IAC9E,CAAC;IAED,KAAK,CAAC,uBAAuB;QAC3B,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,wBAAwB;QAC5B,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,4BAA4B;QAChC,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,+BAA+B;QACnC,MAAM,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,gCAAgC;QACpC,MAAM,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,6BAA6B,CAAC,MAAc;QAChD,OAAO,IAAA,aAAM,EAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACxE,CAAC;CACF;AA/CD,0DA+CC","sourcesContent":["import {Page, Locator, expect} from \"@playwright/test\";\nimport {UiBaseLocators} from \"./UiBaseLocators\";\n\nexport class PublishedStatusUiHelper extends UiBaseLocators {\n private readonly publishedStatusTab: Locator;\n private readonly refreshStatusBtn: Locator;\n private readonly reloadMemoryCacheBtn: Locator;\n private readonly rebuildDatabaseCacheBtn: Locator;\n private readonly snapshotInternalCacheBtn: Locator;\n private readonly continueBtn: Locator;\n private readonly publishedCacheBox: Locator;\n\n constructor(page: Page) {\n super(page);\n this.publishedStatusTab = page.getByRole('tab', {name: 'Published Status'});\n this.refreshStatusBtn = page.getByLabel('Refresh Status');\n this.reloadMemoryCacheBtn = page.getByLabel('Reload Memory Cache');\n this.rebuildDatabaseCacheBtn = page.getByLabel('Rebuild Database Cache');\n this.snapshotInternalCacheBtn = page.getByLabel('Snapshot Internal Cache');\n this.continueBtn = page.locator('#confirm').getByLabel('Continue');\n this.publishedCacheBox = page.locator('[headline=\"Published Cache Status\"]')\n }\n\n async clickPublishedStatusTab() {\n await this.publishedStatusTab.click();\n }\n\n async clickRefreshStatusButton() {\n await this.refreshStatusBtn.click();\n }\n\n async clickReloadMemoryCacheButton() {\n await this.reloadMemoryCacheBtn.click();\n }\n\n async clickRebuildDatabaseCacheButton() {\n await this.rebuildDatabaseCacheBtn.click();\n }\n\n async clickSnapshotInternalCacheButton() {\n await this.snapshotInternalCacheBtn.click();\n }\n\n async clickContinueButton() {\n await this.continueBtn.click();\n }\n\n async isPublishedCacheStatusVisible(status: string) {\n return expect(this.publishedCacheBox.getByText(status)).toBeVisible();\n }\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import { ApiHelpers } from "./ApiHelpers";
2
+ export declare class RedirectManagementApiHelper {
3
+ api: ApiHelpers;
4
+ constructor(api: ApiHelpers);
5
+ get(id: string): Promise<any>;
6
+ delete(id: string): Promise<any>;
7
+ getAll(): Promise<any>;
8
+ getStatus(): Promise<any>;
9
+ setStatus(status: string): Promise<import("playwright-core").APIResponse>;
10
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RedirectManagementApiHelper = void 0;
4
+ class RedirectManagementApiHelper {
5
+ api;
6
+ constructor(api) {
7
+ this.api = api;
8
+ }
9
+ async get(id) {
10
+ const response = await this.api.get(this.api.baseUrl + 'umbraco/management/api/v1/redirect-management/' + id);
11
+ return await response.json();
12
+ }
13
+ async delete(id) {
14
+ const response = await this.api.delete(this.api.baseUrl + 'umbraco/management/api/v1/redirect-management/' + id);
15
+ return await response.json();
16
+ }
17
+ async getAll() {
18
+ const response = await this.api.get(this.api.baseUrl + 'umbraco/management/api/v1/redirect-management?skip=0&take=1000');
19
+ return await response.json();
20
+ }
21
+ async getStatus() {
22
+ const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/redirect-management/status');
23
+ return await response.json();
24
+ }
25
+ async setStatus(status) {
26
+ return await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/redirect-management/status?status=' + status);
27
+ }
28
+ }
29
+ exports.RedirectManagementApiHelper = RedirectManagementApiHelper;
30
+ //# sourceMappingURL=RedirectManagementApiHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RedirectManagementApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/RedirectManagementApiHelper.ts"],"names":[],"mappings":";;;AAEA,MAAa,2BAA2B;IACtC,GAAG,CAAY;IAEf,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,MAAM,CAAC,EAAU;QACrB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,gDAAgD,GAAG,EAAE,CAAC,CAAC;QACjH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,gEAAgE,CAAC,CAAC;QACzH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,uDAAuD,CAAC,CAAC;QAChH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAc;QAC5B,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,+DAA+D,GAAG,MAAM,CAAC,CAAC;IAC1H,CAAC;CACF;AA9BD,kEA8BC","sourcesContent":["import {ApiHelpers} from \"./ApiHelpers\";\n\nexport class RedirectManagementApiHelper {\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/redirect-management/' + id);\n return await response.json(); \n }\n\n async delete(id: string) {\n const response = await this.api.delete(this.api.baseUrl + 'umbraco/management/api/v1/redirect-management/' + id);\n return await response.json(); \n }\n\n async getAll() {\n const response = await this.api.get(this.api.baseUrl + 'umbraco/management/api/v1/redirect-management?skip=0&take=1000');\n return await response.json(); \n }\n\n async getStatus() {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/redirect-management/status');\n return await response.json(); \n }\n\n async setStatus(status: string) {\n return await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/redirect-management/status?status=' + status);\n }\n}"]}
@@ -0,0 +1,17 @@
1
+ import { Page } from "@playwright/test";
2
+ import { UiBaseLocators } from "./UiBaseLocators";
3
+ export declare class RedirectManagementUiHelper extends UiBaseLocators {
4
+ private readonly redirectManagementTab;
5
+ private readonly enableURLTrackerBtn;
6
+ private readonly disableURLTrackerBtn;
7
+ private readonly originalUrlTxt;
8
+ private readonly searchBtn;
9
+ private readonly firstDeleteButton;
10
+ constructor(page: Page);
11
+ clickRedirectManagementTab(): Promise<void>;
12
+ clickEnableURLTrackerButton(): Promise<void>;
13
+ clickDisableURLTrackerButton(): Promise<void>;
14
+ enterOriginalUrl(url: string): Promise<void>;
15
+ clickSearchButton(): Promise<void>;
16
+ deleteFirstRedirectURL(): Promise<void>;
17
+ }