@umbraco/playwright-testhelpers 2.0.0-beta.6 → 2.0.0-beta.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/dist/lib/helpers/ApiHelpers.d.ts +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.d.ts +1 -1
  5. package/dist/lib/helpers/ConstantHelper.js +1 -1
  6. package/dist/lib/helpers/ConstantHelper.js.map +1 -1
  7. package/dist/lib/helpers/ContentUiHelper.d.ts +83 -0
  8. package/dist/lib/helpers/ContentUiHelper.js +229 -0
  9. package/dist/lib/helpers/ContentUiHelper.js.map +1 -0
  10. package/dist/lib/helpers/DataTypeApiHelper.d.ts +14 -14
  11. package/dist/lib/helpers/DataTypeApiHelper.js +114 -133
  12. package/dist/lib/helpers/DataTypeApiHelper.js.map +1 -1
  13. package/dist/lib/helpers/DataTypeUiHelper.d.ts +169 -0
  14. package/dist/lib/helpers/DataTypeUiHelper.js +539 -0
  15. package/dist/lib/helpers/DataTypeUiHelper.js.map +1 -0
  16. package/dist/lib/helpers/DictionaryApiHelper.d.ts +12 -8
  17. package/dist/lib/helpers/DictionaryApiHelper.js +104 -66
  18. package/dist/lib/helpers/DictionaryApiHelper.js.map +1 -1
  19. package/dist/lib/helpers/DocumentApiHelper.d.ts +19 -0
  20. package/dist/lib/helpers/DocumentApiHelper.js +177 -0
  21. package/dist/lib/helpers/DocumentApiHelper.js.map +1 -1
  22. package/dist/lib/helpers/DocumentBlueprintApiHelper.d.ts +18 -0
  23. package/dist/lib/helpers/DocumentBlueprintApiHelper.js +126 -0
  24. package/dist/lib/helpers/DocumentBlueprintApiHelper.js.map +1 -0
  25. package/dist/lib/helpers/DocumentBlueprintUiHelper.d.ts +18 -0
  26. package/dist/lib/helpers/DocumentBlueprintUiHelper.js +54 -0
  27. package/dist/lib/helpers/DocumentBlueprintUiHelper.js.map +1 -0
  28. package/dist/lib/helpers/DocumentTypeApiHelper.d.ts +36 -0
  29. package/dist/lib/helpers/DocumentTypeApiHelper.js +442 -0
  30. package/dist/lib/helpers/DocumentTypeApiHelper.js.map +1 -0
  31. package/dist/lib/helpers/DocumentTypeUiHelper.d.ts +35 -0
  32. package/dist/lib/helpers/DocumentTypeUiHelper.js +98 -0
  33. package/dist/lib/helpers/DocumentTypeUiHelper.js.map +1 -0
  34. package/dist/lib/helpers/ExamineManagementUiHelper.d.ts +15 -0
  35. package/dist/lib/helpers/ExamineManagementUiHelper.js +38 -0
  36. package/dist/lib/helpers/ExamineManagementUiHelper.js.map +1 -0
  37. package/dist/lib/helpers/HealthCheckApiHelper.d.ts +13 -0
  38. package/dist/lib/helpers/HealthCheckApiHelper.js +47 -0
  39. package/dist/lib/helpers/HealthCheckApiHelper.js.map +1 -0
  40. package/dist/lib/helpers/HealthCheckUiHelper.d.ts +23 -0
  41. package/dist/lib/helpers/HealthCheckUiHelper.js +59 -0
  42. package/dist/lib/helpers/HealthCheckUiHelper.js.map +1 -0
  43. package/dist/lib/helpers/IndexerApiHelper.d.ts +7 -0
  44. package/dist/lib/helpers/IndexerApiHelper.js +19 -0
  45. package/dist/lib/helpers/IndexerApiHelper.js.map +1 -0
  46. package/dist/lib/helpers/LanguageApiHelper.d.ts +8 -4
  47. package/dist/lib/helpers/LanguageApiHelper.js +46 -26
  48. package/dist/lib/helpers/LanguageApiHelper.js.map +1 -1
  49. package/dist/lib/helpers/LanguageUiHelper.d.ts +22 -0
  50. package/dist/lib/helpers/LanguageUiHelper.js +62 -0
  51. package/dist/lib/helpers/LanguageUiHelper.js.map +1 -0
  52. package/dist/lib/helpers/LogViewerUiHelper.d.ts +37 -0
  53. package/dist/lib/helpers/LogViewerUiHelper.js +102 -0
  54. package/dist/lib/helpers/LogViewerUiHelper.js.map +1 -0
  55. package/dist/lib/helpers/LoginUiHelper.d.ts +11 -0
  56. package/dist/lib/helpers/LoginUiHelper.js +30 -0
  57. package/dist/lib/helpers/LoginUiHelper.js.map +1 -0
  58. package/dist/lib/helpers/MediaApiHelper.d.ts +22 -0
  59. package/dist/lib/helpers/MediaApiHelper.js +168 -0
  60. package/dist/lib/helpers/MediaApiHelper.js.map +1 -0
  61. package/dist/lib/helpers/MediaTypeApiHelper.d.ts +32 -0
  62. package/dist/lib/helpers/MediaTypeApiHelper.js +390 -0
  63. package/dist/lib/helpers/MediaTypeApiHelper.js.map +1 -0
  64. package/dist/lib/helpers/MediaTypeUiHelper.d.ts +14 -0
  65. package/dist/lib/helpers/MediaTypeUiHelper.js +38 -0
  66. package/dist/lib/helpers/MediaTypeUiHelper.js.map +1 -0
  67. package/dist/lib/helpers/MediaUiHelper.d.ts +37 -0
  68. package/dist/lib/helpers/MediaUiHelper.js +117 -0
  69. package/dist/lib/helpers/MediaUiHelper.js.map +1 -0
  70. package/dist/lib/helpers/MemberApiHelper.d.ts +16 -0
  71. package/dist/lib/helpers/MemberApiHelper.js +88 -0
  72. package/dist/lib/helpers/MemberApiHelper.js.map +1 -0
  73. package/dist/lib/helpers/MemberGroupApiHelper.d.ts +14 -0
  74. package/dist/lib/helpers/MemberGroupApiHelper.js +62 -0
  75. package/dist/lib/helpers/MemberGroupApiHelper.js.map +1 -0
  76. package/dist/lib/helpers/MemberGroupUiHelper.d.ts +15 -0
  77. package/dist/lib/helpers/MemberGroupUiHelper.js +40 -0
  78. package/dist/lib/helpers/MemberGroupUiHelper.js.map +1 -0
  79. package/dist/lib/helpers/MemberTypeApiHelper.d.ts +17 -0
  80. package/dist/lib/helpers/MemberTypeApiHelper.js +121 -0
  81. package/dist/lib/helpers/MemberTypeApiHelper.js.map +1 -0
  82. package/dist/lib/helpers/MemberTypeUiHelper.d.ts +13 -0
  83. package/dist/lib/helpers/MemberTypeUiHelper.js +35 -0
  84. package/dist/lib/helpers/MemberTypeUiHelper.js.map +1 -0
  85. package/dist/lib/helpers/MemberUiHelper.d.ts +40 -0
  86. package/dist/lib/helpers/MemberUiHelper.js +114 -0
  87. package/dist/lib/helpers/MemberUiHelper.js.map +1 -0
  88. package/dist/lib/helpers/ModelsBuilderApiHelper.d.ts +6 -0
  89. package/dist/lib/helpers/ModelsBuilderApiHelper.js +15 -0
  90. package/dist/lib/helpers/ModelsBuilderApiHelper.js.map +1 -0
  91. package/dist/lib/helpers/ModelsBuilderUiHelper.d.ts +9 -0
  92. package/dist/lib/helpers/ModelsBuilderUiHelper.js +22 -0
  93. package/dist/lib/helpers/ModelsBuilderUiHelper.js.map +1 -0
  94. package/dist/lib/helpers/ObjectTypesApiHelper.d.ts +7 -0
  95. package/dist/lib/helpers/ObjectTypesApiHelper.js +25 -0
  96. package/dist/lib/helpers/ObjectTypesApiHelper.js.map +1 -0
  97. package/dist/lib/helpers/PackageApiHelper.d.ts +3 -2
  98. package/dist/lib/helpers/PackageApiHelper.js +6 -3
  99. package/dist/lib/helpers/PackageApiHelper.js.map +1 -1
  100. package/dist/lib/helpers/PackageUiHelper.d.ts +49 -0
  101. package/dist/lib/helpers/PackageUiHelper.js +134 -0
  102. package/dist/lib/helpers/PackageUiHelper.js.map +1 -0
  103. package/dist/lib/helpers/PartialViewApiHelper.d.ts +14 -10
  104. package/dist/lib/helpers/PartialViewApiHelper.js +124 -98
  105. package/dist/lib/helpers/PartialViewApiHelper.js.map +1 -1
  106. package/dist/lib/helpers/PartialViewUiHelper.d.ts +19 -0
  107. package/dist/lib/helpers/PartialViewUiHelper.js +59 -0
  108. package/dist/lib/helpers/PartialViewUiHelper.js.map +1 -0
  109. package/dist/lib/helpers/ProfilingUiHelper.d.ts +11 -0
  110. package/dist/lib/helpers/ProfilingUiHelper.js +27 -0
  111. package/dist/lib/helpers/ProfilingUiHelper.js.map +1 -0
  112. package/dist/lib/helpers/PublishedCacheApiHelper.d.ts +6 -0
  113. package/dist/lib/helpers/PublishedCacheApiHelper.js +15 -0
  114. package/dist/lib/helpers/PublishedCacheApiHelper.js.map +1 -0
  115. package/dist/lib/helpers/PublishedStatusUiHelper.d.ts +19 -0
  116. package/dist/lib/helpers/PublishedStatusUiHelper.js +47 -0
  117. package/dist/lib/helpers/PublishedStatusUiHelper.js.map +1 -0
  118. package/dist/lib/helpers/RedirectManagementApiHelper.d.ts +10 -0
  119. package/dist/lib/helpers/RedirectManagementApiHelper.js +30 -0
  120. package/dist/lib/helpers/RedirectManagementApiHelper.js.map +1 -0
  121. package/dist/lib/helpers/RedirectManagementUiHelper.d.ts +17 -0
  122. package/dist/lib/helpers/RedirectManagementUiHelper.js +45 -0
  123. package/dist/lib/helpers/RedirectManagementUiHelper.js.map +1 -0
  124. package/dist/lib/helpers/RelationTypeApiHelper.d.ts +15 -0
  125. package/dist/lib/helpers/{RelationType.js → RelationTypeApiHelper.js} +45 -58
  126. package/dist/lib/helpers/RelationTypeApiHelper.js.map +1 -0
  127. package/dist/lib/helpers/RelationTypeUiHelper.d.ts +21 -0
  128. package/dist/lib/helpers/RelationTypeUiHelper.js +55 -0
  129. package/dist/lib/helpers/RelationTypeUiHelper.js.map +1 -0
  130. package/dist/lib/helpers/ScriptApiHelper.d.ts +5 -3
  131. package/dist/lib/helpers/ScriptApiHelper.js +44 -26
  132. package/dist/lib/helpers/ScriptApiHelper.js.map +1 -1
  133. package/dist/lib/helpers/ScriptUiHelper.d.ts +18 -0
  134. package/dist/lib/helpers/ScriptUiHelper.js +59 -0
  135. package/dist/lib/helpers/ScriptUiHelper.js.map +1 -0
  136. package/dist/lib/helpers/StylesheetApiHelper.d.ts +14 -10
  137. package/dist/lib/helpers/StylesheetApiHelper.js +131 -105
  138. package/dist/lib/helpers/StylesheetApiHelper.js.map +1 -1
  139. package/dist/lib/helpers/StylesheetUiHelper.d.ts +28 -0
  140. package/dist/lib/helpers/StylesheetUiHelper.js +92 -0
  141. package/dist/lib/helpers/StylesheetUiHelper.js.map +1 -0
  142. package/dist/lib/helpers/TelemetryDataUiHelper.d.ts +10 -0
  143. package/dist/lib/helpers/TelemetryDataUiHelper.js +25 -0
  144. package/dist/lib/helpers/TelemetryDataUiHelper.js.map +1 -0
  145. package/dist/lib/helpers/TemplateApiHelper.d.ts +1 -0
  146. package/dist/lib/helpers/TemplateApiHelper.js +6 -0
  147. package/dist/lib/helpers/TemplateApiHelper.js.map +1 -1
  148. package/dist/lib/helpers/TemplateUiHelper.d.ts +25 -0
  149. package/dist/lib/helpers/TemplateUiHelper.js +93 -0
  150. package/dist/lib/helpers/TemplateUiHelper.js.map +1 -0
  151. package/dist/lib/helpers/TemporaryFileApiHelper.d.ts +1 -1
  152. package/dist/lib/helpers/TemporaryFileApiHelper.js +6 -10
  153. package/dist/lib/helpers/TemporaryFileApiHelper.js.map +1 -1
  154. package/dist/lib/helpers/TranslationUiHelper.d.ts +32 -0
  155. package/dist/lib/helpers/TranslationUiHelper.js +100 -0
  156. package/dist/lib/helpers/TranslationUiHelper.js.map +1 -0
  157. package/dist/lib/helpers/UiBaseLocators.d.ts +218 -0
  158. package/dist/lib/helpers/UiBaseLocators.js +691 -0
  159. package/dist/lib/helpers/UiBaseLocators.js.map +1 -0
  160. package/dist/lib/helpers/UiHelpers.d.ts +62 -9
  161. package/dist/lib/helpers/UiHelpers.js +96 -35
  162. package/dist/lib/helpers/UiHelpers.js.map +1 -1
  163. package/dist/lib/helpers/UserApiHelper.d.ts +16 -9
  164. package/dist/lib/helpers/UserApiHelper.js +64 -19
  165. package/dist/lib/helpers/UserApiHelper.js.map +1 -1
  166. package/dist/lib/helpers/UserGroupApiHelper.d.ts +5 -3
  167. package/dist/lib/helpers/UserGroupApiHelper.js +20 -19
  168. package/dist/lib/helpers/UserGroupApiHelper.js.map +1 -1
  169. package/dist/lib/helpers/UserGroupUiHelper.d.ts +20 -0
  170. package/dist/lib/helpers/UserGroupUiHelper.js +56 -0
  171. package/dist/lib/helpers/UserGroupUiHelper.js.map +1 -0
  172. package/dist/lib/helpers/UserUiHelper.d.ts +74 -0
  173. package/dist/lib/helpers/UserUiHelper.js +202 -0
  174. package/dist/lib/helpers/UserUiHelper.js.map +1 -0
  175. package/dist/lib/helpers/WelcomeDashboardUiHelper.d.ts +9 -0
  176. package/dist/lib/helpers/WelcomeDashboardUiHelper.js +22 -0
  177. package/dist/lib/helpers/WelcomeDashboardUiHelper.js.map +1 -0
  178. package/dist/lib/helpers/testExtension.js +5 -0
  179. package/dist/lib/helpers/testExtension.js.map +1 -1
  180. package/dist/tsconfig.tsbuildinfo +1 -1
  181. package/dist/umbraco.config.js +1 -1
  182. package/dist/umbraco.config.js.map +1 -1
  183. package/package.json +8 -6
  184. package/dist/lib/helpers/RelationType.d.ts +0 -15
  185. package/dist/lib/helpers/RelationType.js.map +0 -1
@@ -0,0 +1,229 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContentUiHelper = void 0;
4
+ const test_1 = require("@playwright/test");
5
+ const UiBaseLocators_1 = require("./UiBaseLocators");
6
+ class ContentUiHelper extends UiBaseLocators_1.UiBaseLocators {
7
+ contentNameTxt;
8
+ saveAndPublishBtn;
9
+ actionsBtn;
10
+ publishBtn;
11
+ unpublishBtn;
12
+ actionMenuForContentBtn;
13
+ openedModal;
14
+ textstringTxt;
15
+ infoTab;
16
+ linkContent;
17
+ historyItems;
18
+ generalItem;
19
+ publicationStatus;
20
+ createdDate;
21
+ editDocumentTypeBtn;
22
+ addTemplateBtn;
23
+ id;
24
+ cultureAndHostnamesBtn;
25
+ cultureLanguageDropdownBox;
26
+ addNewDomainBtn;
27
+ domainTxt;
28
+ domainLanguageDropdownBox;
29
+ deleteDomainBtn;
30
+ reloadChildrenThreeDotsBtn;
31
+ contentTree;
32
+ richTextAreaTxt;
33
+ textAreaTxt;
34
+ plusIconBtn;
35
+ enterTagTxt;
36
+ menuItemTree;
37
+ domainComboBox;
38
+ confirmToUnpublishBtn;
39
+ saveModalBtn;
40
+ documentTypeNode;
41
+ createDocumentBlueprintBtn;
42
+ constructor(page) {
43
+ super(page);
44
+ this.contentNameTxt = page.locator('#name-input input');
45
+ this.saveAndPublishBtn = page.getByLabel('Save And Publish');
46
+ this.actionsBtn = page.getByLabel('Actions', { exact: true });
47
+ this.publishBtn = page.getByLabel('Publish', { exact: true });
48
+ this.unpublishBtn = page.getByLabel('Unpublish', { exact: true });
49
+ this.actionMenuForContentBtn = page.locator('#header [label="Open actions menu"]');
50
+ this.openedModal = page.locator('uui-modal-container[backdrop]');
51
+ this.textstringTxt = page.locator('umb-property-editor-ui-text-box #input');
52
+ this.reloadChildrenThreeDotsBtn = page.getByRole('button', { name: 'Reload children...' });
53
+ this.contentTree = page.locator('umb-tree[alias="Umb.Tree.Document"]');
54
+ this.richTextAreaTxt = page.frameLocator('iframe[title="Rich Text Area"]').locator('#tinymce');
55
+ this.textAreaTxt = page.locator('umb-property-editor-ui-textarea textarea');
56
+ this.plusIconBtn = page.locator('#icon-add svg');
57
+ this.enterTagTxt = page.getByPlaceholder('Enter tag');
58
+ this.menuItemTree = page.locator('umb-menu-item-tree-default');
59
+ this.confirmToUnpublishBtn = page.locator('umb-document-unpublish-modal').getByLabel('Unpublish');
60
+ this.documentTypeNode = page.locator('uui-ref-node-document-type');
61
+ this.createDocumentBlueprintBtn = page.getByLabel('Create Document Blueprint');
62
+ // Info tab
63
+ this.infoTab = page.getByRole('tab', { name: 'Info' });
64
+ this.linkContent = page.locator('.link-content');
65
+ this.historyItems = page.locator('umb-history-item');
66
+ this.generalItem = page.locator('.general-item');
67
+ this.publicationStatus = this.generalItem.filter({ hasText: 'Publication Status' }).locator('uui-tag');
68
+ this.createdDate = this.generalItem.filter({ hasText: 'Created' }).locator('umb-localize-date');
69
+ this.editDocumentTypeBtn = this.generalItem.filter({ hasText: 'Document Type' }).locator('#button');
70
+ this.addTemplateBtn = this.generalItem.filter({ hasText: 'Template' }).locator('#button');
71
+ this.id = this.generalItem.filter({ hasText: 'Id' }).locator('span');
72
+ // Culure and Hostname
73
+ this.cultureAndHostnamesBtn = page.getByLabel('Culture and Hostnames');
74
+ this.cultureLanguageDropdownBox = page.locator('[headline="Culture"]').getByLabel('combobox-input');
75
+ this.addNewDomainBtn = page.getByLabel('Add new domain');
76
+ this.domainTxt = page.getByLabel('Domain', { exact: true });
77
+ this.domainLanguageDropdownBox = page.locator('[headline="Domains"]').getByLabel('combobox-input');
78
+ this.deleteDomainBtn = page.locator('[headline="Domains"] [name="icon-trash"] svg');
79
+ this.domainComboBox = page.locator('#domains uui-combobox');
80
+ this.saveModalBtn = this.sidebarModal.getByLabel('Save', { exact: true });
81
+ }
82
+ async enterContentName(name) {
83
+ await (0, test_1.expect)(this.contentNameTxt).toBeVisible();
84
+ await this.contentNameTxt.clear();
85
+ await this.contentNameTxt.fill(name);
86
+ }
87
+ async clickSaveAndPublishButton() {
88
+ await this.saveAndPublishBtn.click();
89
+ }
90
+ async clickActionsButton() {
91
+ await this.actionsBtn.click();
92
+ }
93
+ async clickPublishButton() {
94
+ await this.publishBtn.click();
95
+ }
96
+ async clickUnpublishButton() {
97
+ await this.unpublishBtn.click();
98
+ }
99
+ async clickReloadChildrenThreeDotsButton() {
100
+ await this.reloadChildrenThreeDotsBtn.click();
101
+ }
102
+ async clickActionsMenuAtRoot() {
103
+ await this.actionMenuForContentBtn.click();
104
+ }
105
+ async openContent(contentName) {
106
+ await this.menuItemTree.getByText(contentName, { exact: true }).click();
107
+ }
108
+ async clickActionsMenuForContent(name) {
109
+ await this.clickActionsMenuForName(name);
110
+ }
111
+ async clickCaretButtonForContentName(name) {
112
+ await this.menuItemTree.filter({ hasText: name }).last().locator('#caret-button').last().click();
113
+ }
114
+ async waitForModalVisible() {
115
+ await this.openedModal.waitFor({ state: 'attached' });
116
+ }
117
+ async waitForModalHidden() {
118
+ await this.openedModal.waitFor({ state: 'hidden' });
119
+ }
120
+ async enterTextstring(text) {
121
+ await this.textstringTxt.clear();
122
+ await this.textstringTxt.fill(text);
123
+ }
124
+ async doesContentTreeHaveName(contentName) {
125
+ await (0, test_1.expect)(this.contentTree).toContainText(contentName);
126
+ }
127
+ async enterRichTextArea(value) {
128
+ await (0, test_1.expect)(this.richTextAreaTxt).toBeVisible();
129
+ await this.richTextAreaTxt.fill(value);
130
+ }
131
+ async enterTextArea(value) {
132
+ await (0, test_1.expect)(this.textAreaTxt).toBeVisible();
133
+ await this.textAreaTxt.fill(value);
134
+ }
135
+ async addTags(tagName) {
136
+ await this.plusIconBtn.click();
137
+ await this.enterTagTxt.fill(tagName);
138
+ await this.enterTagTxt.press('Enter');
139
+ }
140
+ async addContentPicker(contentName) {
141
+ await this.clickChooseButton();
142
+ await this.sidebarModal.getByText(contentName).click();
143
+ await this.chooseModalBtn.click();
144
+ }
145
+ async clickConfirmToUnpublishButton() {
146
+ await this.confirmToUnpublishBtn.click();
147
+ }
148
+ async clickCreateDocumentBlueprintButton() {
149
+ await this.createDocumentBlueprintBtn.click();
150
+ }
151
+ // Info Tab
152
+ async clickInfoTab() {
153
+ await this.infoTab.click({ force: true });
154
+ }
155
+ async doesLinkHaveText(text) {
156
+ await (0, test_1.expect)(this.linkContent).toHaveText(text);
157
+ }
158
+ async doesHistoryHaveText(text) {
159
+ await (0, test_1.expect)(this.historyItems).toHaveText(text);
160
+ }
161
+ async doesPublicationStatusHaveText(text) {
162
+ await (0, test_1.expect)(this.publicationStatus).toHaveText(text);
163
+ }
164
+ async doesCreatedDateHaveText(text) {
165
+ await (0, test_1.expect)(this.createdDate).toHaveText(text);
166
+ }
167
+ async doesIdHaveText(text) {
168
+ await (0, test_1.expect)(this.id).toHaveText(text);
169
+ }
170
+ async clickEditDocumentTypeButton() {
171
+ await this.editDocumentTypeBtn.click();
172
+ }
173
+ async clickAddTemplateButton() {
174
+ await this.addTemplateBtn.click();
175
+ }
176
+ async clickDocumentTypeByName(documentTypeName) {
177
+ await this.page.locator('uui-ref-node-document-type[name="' + documentTypeName + '"]').click();
178
+ }
179
+ async clickTemplateByName(templateName) {
180
+ await this.page.locator('uui-ref-node[name="' + templateName + '"]').click();
181
+ }
182
+ async isDocumentTypeModalVisible(documentTypeName) {
183
+ await (0, test_1.expect)(this.sidebarModal.locator('umb-document-type-workspace-editor [value="' + documentTypeName + '"]')).toBeVisible();
184
+ }
185
+ async isTemplateModalVisible(templateName) {
186
+ await (0, test_1.expect)(this.sidebarModal.getByText(templateName)).toBeVisible();
187
+ }
188
+ async clickEditTemplateByName(templateName) {
189
+ await this.page.locator('uui-ref-node[name="' + templateName + '"]').getByLabel('Choose').click();
190
+ }
191
+ async changeTemplate(oldTemplate, newTemplate) {
192
+ await this.clickEditTemplateByName(oldTemplate);
193
+ await this.sidebarModal.getByLabel(newTemplate).click();
194
+ await this.chooseModalBtn.click();
195
+ }
196
+ async isTemplateNameDisabled(templateName) {
197
+ await (0, test_1.expect)(this.sidebarModal.getByLabel(templateName)).toBeDisabled();
198
+ }
199
+ // Culture and Hostnames
200
+ async clickCultureAndHostnamesButton() {
201
+ await this.cultureAndHostnamesBtn.click();
202
+ }
203
+ async selectCultureLanguageOption(option) {
204
+ await this.cultureLanguageDropdownBox.click();
205
+ await this.page.getByText(option).click();
206
+ }
207
+ async selectDomainLanguageOption(option, index = 0) {
208
+ await this.domainLanguageDropdownBox.nth(index).click();
209
+ await this.domainComboBox.nth(index).getByText(option).click();
210
+ }
211
+ async clickAddNewDomainButton() {
212
+ await this.addNewDomainBtn.click();
213
+ }
214
+ async enterDomain(value, index = 0) {
215
+ await this.domainTxt.nth(index).clear();
216
+ await this.domainTxt.nth(index).fill(value);
217
+ }
218
+ async clickDeleteDomainButton() {
219
+ await this.deleteDomainBtn.first().click();
220
+ }
221
+ async clickSaveModalButton() {
222
+ await this.saveModalBtn.click();
223
+ }
224
+ async chooseDocumentType(documentTypeName) {
225
+ await this.documentTypeNode.filter({ hasText: documentTypeName }).click();
226
+ }
227
+ }
228
+ exports.ContentUiHelper = ContentUiHelper;
229
+ //# sourceMappingURL=ContentUiHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContentUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/ContentUiHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import {Page, Locator, expect} from \"@playwright/test\";\nimport {UiBaseLocators} from \"./UiBaseLocators\";\n\nexport class ContentUiHelper extends UiBaseLocators {\n private readonly contentNameTxt: Locator;\n private readonly saveAndPublishBtn: Locator;\n private readonly actionsBtn: Locator;\n private readonly publishBtn: Locator;\n private readonly unpublishBtn: Locator;\n private readonly actionMenuForContentBtn: Locator;\n private readonly openedModal: Locator;\n private readonly textstringTxt: Locator;\n private readonly infoTab: Locator;\n private readonly linkContent: Locator;\n private readonly historyItems: Locator;\n private readonly generalItem: Locator;\n private readonly publicationStatus: Locator;\n private readonly createdDate: Locator;\n private readonly editDocumentTypeBtn: Locator;\n private readonly addTemplateBtn: Locator;\n private readonly id: Locator;\n private readonly cultureAndHostnamesBtn: Locator;\n private readonly cultureLanguageDropdownBox: Locator;\n private readonly addNewDomainBtn: Locator;\n private readonly domainTxt: Locator;\n private readonly domainLanguageDropdownBox: Locator;\n private readonly deleteDomainBtn: Locator;\n private readonly reloadChildrenThreeDotsBtn: Locator;\n private readonly contentTree: Locator;\n private readonly richTextAreaTxt: Locator;\n private readonly textAreaTxt: Locator;\n private readonly plusIconBtn: Locator;\n private readonly enterTagTxt: Locator;\n private readonly menuItemTree: Locator;\n private readonly domainComboBox: Locator;\n private readonly confirmToUnpublishBtn: Locator;\n private readonly saveModalBtn: Locator;\n private readonly documentTypeNode: Locator;\n private readonly createDocumentBlueprintBtn: Locator;\n\n constructor(page: Page) {\n super(page);\n this.contentNameTxt = page.locator('#name-input input');\n this.saveAndPublishBtn = page.getByLabel('Save And Publish');\n this.actionsBtn = page.getByLabel('Actions', {exact: true});\n this.publishBtn = page.getByLabel('Publish', {exact: true});\n this.unpublishBtn = page.getByLabel('Unpublish', {exact: true});\n this.actionMenuForContentBtn = page.locator('#header [label=\"Open actions menu\"]');\n this.openedModal = page.locator('uui-modal-container[backdrop]');\n this.textstringTxt = page.locator('umb-property-editor-ui-text-box #input');\n this.reloadChildrenThreeDotsBtn = page.getByRole('button', {name: 'Reload children...'});\n this.contentTree = page.locator('umb-tree[alias=\"Umb.Tree.Document\"]');\n this.richTextAreaTxt = page.frameLocator('iframe[title=\"Rich Text Area\"]').locator('#tinymce');\n this.textAreaTxt = page.locator('umb-property-editor-ui-textarea textarea');\n this.plusIconBtn = page.locator('#icon-add svg');\n this.enterTagTxt = page.getByPlaceholder('Enter tag');\n this.menuItemTree = page.locator('umb-menu-item-tree-default');\n this.confirmToUnpublishBtn = page.locator('umb-document-unpublish-modal').getByLabel('Unpublish');\n this.documentTypeNode = page.locator('uui-ref-node-document-type');\n this.createDocumentBlueprintBtn = page.getByLabel('Create Document Blueprint');\n // Info tab\n this.infoTab = page.getByRole('tab', {name: 'Info'});\n this.linkContent = page.locator('.link-content');\n this.historyItems = page.locator('umb-history-item');\n this.generalItem = page.locator('.general-item');\n this.publicationStatus = this.generalItem.filter({hasText: 'Publication Status'}).locator('uui-tag');\n this.createdDate = this.generalItem.filter({hasText: 'Created'}).locator('umb-localize-date');\n this.editDocumentTypeBtn = this.generalItem.filter({hasText: 'Document Type'}).locator('#button');\n this.addTemplateBtn = this.generalItem.filter({hasText: 'Template'}).locator('#button');\n this.id = this.generalItem.filter({hasText: 'Id'}).locator('span');\n // Culure and Hostname\n this.cultureAndHostnamesBtn = page.getByLabel('Culture and Hostnames');\n this.cultureLanguageDropdownBox = page.locator('[headline=\"Culture\"]').getByLabel('combobox-input');\n this.addNewDomainBtn = page.getByLabel('Add new domain');\n this.domainTxt = page.getByLabel('Domain', { exact: true });\n this.domainLanguageDropdownBox = page.locator('[headline=\"Domains\"]').getByLabel('combobox-input');\n this.deleteDomainBtn = page.locator('[headline=\"Domains\"] [name=\"icon-trash\"] svg');\n this.domainComboBox = page.locator('#domains uui-combobox');\n this.saveModalBtn = this.sidebarModal.getByLabel('Save', {exact: true});\n }\n\n async enterContentName(name: string) {\n await expect(this.contentNameTxt).toBeVisible();\n await this.contentNameTxt.clear();\n await this.contentNameTxt.fill(name);\n }\n\n async clickSaveAndPublishButton() {\n await this.saveAndPublishBtn.click();\n }\n\n async clickActionsButton() {\n await this.actionsBtn.click();\n }\n\n async clickPublishButton() {\n await this.publishBtn.click();\n }\n\n async clickUnpublishButton() {\n await this.unpublishBtn.click();\n }\n\n async clickReloadChildrenThreeDotsButton() {\n await this.reloadChildrenThreeDotsBtn.click();\n }\n\n async clickActionsMenuAtRoot() {\n await this.actionMenuForContentBtn.click();\n }\n\n async openContent(contentName: string) {\n await this.menuItemTree.getByText(contentName, {exact: true}).click();\n }\n\n async clickActionsMenuForContent(name: string) {\n await this.clickActionsMenuForName(name);\n }\n\n async clickCaretButtonForContentName(name: string) {\n await this.menuItemTree.filter({hasText: name}).last().locator('#caret-button').last().click();\n }\n\n async waitForModalVisible() {\n await this.openedModal.waitFor({state: 'attached'});\n }\n\n async waitForModalHidden() {\n await this.openedModal.waitFor({state: 'hidden'});\n }\n\n async enterTextstring(text: string) {\n await this.textstringTxt.clear();\n await this.textstringTxt.fill(text);\n }\n\n async doesContentTreeHaveName(contentName: string) {\n await expect(this.contentTree).toContainText(contentName);\n }\n\n async enterRichTextArea(value: string) {\n await expect(this.richTextAreaTxt).toBeVisible();\n await this.richTextAreaTxt.fill(value);\n }\n\n async enterTextArea(value: string) {\n await expect(this.textAreaTxt).toBeVisible();\n await this.textAreaTxt.fill(value);\n }\n\n async addTags(tagName: string) {\n await this.plusIconBtn.click();\n await this.enterTagTxt.fill(tagName);\n await this.enterTagTxt.press('Enter');\n }\n\n async addContentPicker(contentName: string) {\n await this.clickChooseButton();\n await this.sidebarModal.getByText(contentName).click();\n await this.chooseModalBtn.click();\n }\n\n async clickConfirmToUnpublishButton() {\n await this.confirmToUnpublishBtn.click();\n }\n\n async clickCreateDocumentBlueprintButton() {\n await this.createDocumentBlueprintBtn.click();\n }\n\n // Info Tab\n async clickInfoTab() {\n await this.infoTab.click({force: true});\n }\n\n async doesLinkHaveText(text: string) {\n await expect(this.linkContent).toHaveText(text);\n }\n\n async doesHistoryHaveText(text: string) {\n await expect(this.historyItems).toHaveText(text);\n }\n\n async doesPublicationStatusHaveText(text: string) {\n await expect(this.publicationStatus).toHaveText(text);\n }\n\n async doesCreatedDateHaveText(text: string) {\n await expect(this.createdDate).toHaveText(text);\n }\n\n async doesIdHaveText(text: string) {\n await expect(this.id).toHaveText(text);\n }\n\n async clickEditDocumentTypeButton() {\n await this.editDocumentTypeBtn.click();\n }\n\n async clickAddTemplateButton() {\n await this.addTemplateBtn.click();\n }\n\n async clickDocumentTypeByName(documentTypeName:string) {\n await this.page.locator('uui-ref-node-document-type[name=\"' + documentTypeName + '\"]').click();\n }\n\n async clickTemplateByName(templateName:string) {\n await this.page.locator('uui-ref-node[name=\"' + templateName + '\"]').click();\n }\n\n async isDocumentTypeModalVisible(documentTypeName: string) {\n await expect(this.sidebarModal.locator('umb-document-type-workspace-editor [value=\"' + documentTypeName + '\"]')).toBeVisible();\n }\n\n async isTemplateModalVisible(templateName: string) {\n await expect(this.sidebarModal.getByText(templateName)).toBeVisible();\n }\n\n async clickEditTemplateByName(templateName:string) {\n await this.page.locator('uui-ref-node[name=\"' + templateName + '\"]').getByLabel('Choose').click();\n }\n\n async changeTemplate(oldTemplate: string, newTemplate: string) {\n await this.clickEditTemplateByName(oldTemplate);\n await this.sidebarModal.getByLabel(newTemplate).click();\n await this.chooseModalBtn.click();\n }\n\n async isTemplateNameDisabled(templateName:string) {\n await expect(this.sidebarModal.getByLabel(templateName)).toBeDisabled();\n }\n\n // Culture and Hostnames\n async clickCultureAndHostnamesButton() {\n await this.cultureAndHostnamesBtn.click();\n }\n\n async selectCultureLanguageOption(option: string) {\n await this.cultureLanguageDropdownBox.click();\n await this.page.getByText(option).click();\n }\n\n async selectDomainLanguageOption(option: string, index: number = 0) {\n await this.domainLanguageDropdownBox.nth(index).click();\n await this.domainComboBox.nth(index).getByText(option).click();\n }\n\n async clickAddNewDomainButton() {\n await this.addNewDomainBtn.click();\n }\n\n async enterDomain(value: string, index: number = 0) {\n await this.domainTxt.nth(index).clear();\n await this.domainTxt.nth(index).fill(value);\n }\n\n async clickDeleteDomainButton() {\n await this.deleteDomainBtn.first().click();\n }\n\n async clickSaveModalButton() {\n await this.saveModalBtn.click();\n }\n\n async chooseDocumentType(documentTypeName: string) {\n await this.documentTypeNode.filter({hasText: documentTypeName}).click();\n }\n}\n"]}
@@ -2,29 +2,29 @@ import { ApiHelpers } from "./ApiHelpers";
2
2
  export declare class DataTypeApiHelper {
3
3
  api: ApiHelpers;
4
4
  constructor(api: ApiHelpers);
5
- ensureNameNotExistsAtRoot(name: string): Promise<void | import("playwright-core").APIResponse | null>;
6
5
  get(id: string): Promise<any>;
7
- getByNameAtRoot(name: string): Promise<any>;
8
- create(name: string, propertyEditorAlias: string, values: {
6
+ create(name: string, editorAlias: string, values: {
9
7
  alias: string;
10
8
  value: string;
11
- }[], parentId?: string, propertyEditorUiAlias?: string): Promise<string | undefined>;
9
+ }[], parentId?: string, editorUiAlias?: string, id?: string): Promise<string | undefined>;
12
10
  update(id: string, dataType: any): Promise<import("playwright-core").APIResponse>;
13
11
  delete(id: string): Promise<import("playwright-core").APIResponse>;
14
- deleteByNameAtRoot(name: string): Promise<import("playwright-core").APIResponse | null>;
12
+ getAllAtRoot(): Promise<import("playwright-core").APIResponse>;
13
+ doesExist(id: string): Promise<boolean>;
15
14
  getItems(ids: string[]): Promise<any>;
16
- getAllAtRoot(): Promise<any>;
17
- exists(id: string): Promise<boolean>;
18
- nameExistsAtRoot(name: string): Promise<boolean>;
15
+ getByName(name: string): Promise<any>;
16
+ ensureNameNotExists(name: string): Promise<import("playwright-core").APIResponse | null>;
17
+ doesNameExist(name: string): Promise<any>;
19
18
  moveToFolder(dataTypeId: string, folderId: string): Promise<import("playwright-core").APIResponse>;
20
19
  copyToFolder(dataTypeId: string, folderId: string): Promise<string | undefined>;
21
20
  getFolder(id: string): Promise<any>;
22
- folderExists(id: string): Promise<boolean>;
23
- getFolderByName(name: string): Promise<any>;
24
- createFolder(name: string, parentId?: string): Promise<string | undefined>;
25
- updateFolder(id: string, dataTypeFolder: any): Promise<import("playwright-core").APIResponse>;
21
+ createFolder(name: string, parentId?: string, id?: string): Promise<string | undefined>;
22
+ renameFolder(id: string, name: string): Promise<import("playwright-core").APIResponse>;
26
23
  deleteFolder(id: string): Promise<import("playwright-core").APIResponse>;
27
- deleteFolderByName(name: string): Promise<import("playwright-core").APIResponse | null>;
24
+ doesFolderExist(id: string): Promise<boolean>;
28
25
  getChildren(id: string): Promise<any>;
29
- recurseFolderChildren(id: string): Promise<void>;
26
+ private recurseDeleteChildren;
27
+ private recurseChildren;
28
+ save(dataType: any): Promise<string | undefined>;
29
+ createDateTypeDataType(name: string): Promise<string | undefined>;
30
30
  }
@@ -1,81 +1,47 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DataTypeApiHelper = void 0;
4
+ const json_models_builders_1 = require("@umbraco/json-models-builders");
4
5
  class DataTypeApiHelper {
5
6
  api;
6
7
  constructor(api) {
7
8
  this.api = api;
8
9
  }
9
- async ensureNameNotExistsAtRoot(name) {
10
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/data-type/root?skip=0&take=10000&foldersOnly=false');
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/data-type/' + sb.id);
16
- }
17
- else {
18
- if (sb.hasChildren == true) {
19
- return await this.recurseFolderChildren(sb.id);
20
- }
21
- else {
22
- return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/data-type/folder/' + sb.id);
23
- }
24
- }
25
- }
26
- }
27
- return null;
28
- }
29
10
  async get(id) {
30
11
  const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/data-type/' + id);
31
- const json = await response.json();
32
- if (json !== null) {
33
- return json;
34
- }
35
- return null;
36
- }
37
- async getByNameAtRoot(name) {
38
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/data-type/root?skip=0&take=10000&foldersOnly=false');
39
- const json = await response.json();
40
- for (const sb of json.items) {
41
- if (sb.name === name) {
42
- if (sb.id !== null) {
43
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/data-type/' + sb.id);
44
- return response.json();
45
- }
46
- }
47
- }
48
- return null;
12
+ return await response.json();
49
13
  }
50
- async create(name, propertyEditorAlias, values, parentId, propertyEditorUiAlias) {
14
+ async create(name, editorAlias, values, parentId, editorUiAlias, id) {
51
15
  const dataType = {
52
16
  "name": name,
53
- "propertyEditorAlias": propertyEditorAlias,
54
- "propertyEditorUiAlias": propertyEditorUiAlias,
17
+ "editorAlias": editorAlias,
18
+ "editorUiAlias": editorUiAlias,
55
19
  "values": values,
56
- "parentId": parentId
20
+ "id": id,
21
+ "parent": parentId ? { "id": parentId } : null
57
22
  };
58
23
  const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/data-type', dataType);
59
24
  // Returns the id of the created dataType
60
- return response.headers().location.split("/").pop();
25
+ return response.headers().location.split("v1/data-type/").pop();
61
26
  }
62
27
  async update(id, dataType) {
63
- return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/data-type/' + id, dataType);
28
+ const updateDataType = {
29
+ "name": dataType.name,
30
+ "editorAlias": dataType.editorAlias,
31
+ "editorUiAlias": dataType.editorUiAlias,
32
+ "values": dataType.values,
33
+ };
34
+ return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/data-type/' + id, updateDataType);
64
35
  }
65
36
  async delete(id) {
66
37
  return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/data-type/' + id);
67
38
  }
68
- async deleteByNameAtRoot(name) {
69
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/data-type/root?skip=0&take=10000&foldersOnly=false');
70
- const json = await response.json();
71
- for (const sb of json.items) {
72
- if (sb.name === name) {
73
- if (sb.id !== null) {
74
- return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/data-type/' + sb.id);
75
- }
76
- }
77
- }
78
- return null;
39
+ async getAllAtRoot() {
40
+ return await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/data-type/root?skip=0&take=10000&foldersOnly=false');
41
+ }
42
+ async doesExist(id) {
43
+ const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/data-type/' + id);
44
+ return response.status() === 200;
79
45
  }
80
46
  async getItems(ids) {
81
47
  let idArray = 'id=' + ids[0];
@@ -84,124 +50,139 @@ class DataTypeApiHelper {
84
50
  idArray += '&id=' + ids[i];
85
51
  }
86
52
  const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/data-type/item?' + idArray);
87
- const json = await response.json();
88
- if (json !== null) {
89
- return json;
90
- }
91
- return null;
53
+ return await response.json();
92
54
  }
93
- async getAllAtRoot() {
94
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/data-type/root?skip=0&take=10000&foldersOnly=false');
95
- const json = await response.json();
96
- if (json !== null) {
97
- return json;
55
+ async getByName(name) {
56
+ const rootDataTypes = await this.getAllAtRoot();
57
+ const jsonDataTypes = await rootDataTypes.json();
58
+ for (const dataType of jsonDataTypes.items) {
59
+ if (dataType.name === name) {
60
+ return this.get(dataType.id);
61
+ }
62
+ else if (dataType.isContainer || dataType.hasChildren) {
63
+ const result = await this.recurseChildren(name, dataType.id, false);
64
+ if (result) {
65
+ return result;
66
+ }
67
+ }
98
68
  }
99
- return null;
100
- }
101
- async exists(id) {
102
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/data-type/' + id);
103
- return response.status() === 200;
69
+ return false;
104
70
  }
105
- async nameExistsAtRoot(name) {
106
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/data-type/root?skip=0&take=10000&foldersOnly=false');
107
- const json = await response.json();
108
- for (const sb of json.items) {
109
- if (sb.name === name) {
110
- return true;
71
+ async ensureNameNotExists(name) {
72
+ const rootDataTypes = await this.getAllAtRoot();
73
+ const jsonDataTypes = await rootDataTypes.json();
74
+ for (const dataType of jsonDataTypes.items) {
75
+ if (dataType.name === name) {
76
+ if (dataType.isFolder) {
77
+ return await this.recurseDeleteChildren(dataType);
78
+ }
79
+ return await this.delete(dataType.id);
80
+ }
81
+ else if (dataType.hasChildren) {
82
+ await this.recurseChildren(name, dataType.id, true);
111
83
  }
112
84
  }
113
- return false;
85
+ return null;
86
+ }
87
+ async doesNameExist(name) {
88
+ return await this.getByName(name);
114
89
  }
115
90
  async moveToFolder(dataTypeId, folderId) {
116
91
  const folderIdBody = {
117
- "targetId": folderId
92
+ "target": { id: folderId }
118
93
  };
119
- return await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/data-type/' + dataTypeId + '/move', folderIdBody);
94
+ return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/data-type/' + dataTypeId + '/move', folderIdBody);
120
95
  }
121
96
  async copyToFolder(dataTypeId, folderId) {
122
97
  const folderIdBody = {
123
- "targetId": folderId
98
+ "target": { id: folderId }
124
99
  };
125
100
  const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/data-type/' + dataTypeId + '/copy', folderIdBody);
126
101
  // Returns the id of the copied dataType
127
- return response.headers().location.split("/").pop();
102
+ return response.headers().location.split("v1/data-type/").pop();
128
103
  }
129
104
  // FOLDER
130
105
  async getFolder(id) {
131
106
  const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/data-type/folder/' + id);
132
107
  return await response.json();
133
108
  }
134
- async folderExists(id) {
135
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/data-type/folder/' + id);
136
- return response.status() === 200;
137
- }
138
- async getFolderByName(name) {
139
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/data-type/root?skip=0&take=10000&foldersOnly=true');
140
- const json = await response.json();
141
- for (const sb of json.items) {
142
- if (sb.name === name) {
143
- if (sb.id !== null) {
144
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/data-type/folder/' + sb.id);
145
- return response.json();
146
- }
147
- }
148
- }
149
- return null;
150
- }
151
- async createFolder(name, parentId) {
109
+ async createFolder(name, parentId, id) {
152
110
  const folderData = {
153
111
  "name": name,
154
- "parentId": parentId
112
+ "id": id,
113
+ "parent": parentId ? { "id": parentId } : null
155
114
  };
156
115
  const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/data-type/folder', folderData);
157
116
  // Returns the id of the created dataTypeFolder
158
- return response.headers().location.split("/").pop();
117
+ return response.headers().location.split("v1/data-type/folder/").pop();
159
118
  }
160
- async updateFolder(id, dataTypeFolder) {
161
- return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/data-type/folder/' + id, dataTypeFolder);
119
+ async renameFolder(id, name) {
120
+ const folderData = {
121
+ "name": name,
122
+ };
123
+ return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/data-type/folder/' + id, folderData);
162
124
  }
163
125
  async deleteFolder(id) {
164
126
  return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/data-type/folder/' + id);
165
127
  }
166
- async deleteFolderByName(name) {
167
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/data-type/root?skip=0&take=10000&foldersOnly=true');
168
- const json = await response.json();
169
- for (const sb of json.items) {
170
- if (sb.name === name) {
171
- if (sb.id !== null) {
172
- return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/data-type/folder/' + sb.id);
173
- }
174
- }
175
- }
176
- return null;
128
+ async doesFolderExist(id) {
129
+ const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/data-type/folder/' + id);
130
+ return response.status() === 200;
177
131
  }
178
132
  async getChildren(id) {
179
133
  const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/data-type/children?parentId=' + id + '&skip=0&take=100&foldersOnly=false');
180
- const json = await response.json();
181
- if (json !== null) {
182
- return json;
183
- }
184
- return null;
134
+ const items = await response.json();
135
+ return items.items;
185
136
  }
186
- async recurseFolderChildren(id) {
187
- const parentDataType = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/data-type/children?parentId=' + id + '&skip=0&take=10000');
188
- const itemsJson = await parentDataType.json();
189
- for (const child of itemsJson.items) {
190
- if (child.path !== null) {
191
- if (child.isFolder == true) {
192
- if (child.hasChildren == true) {
193
- await this.recurseFolderChildren(child.path);
194
- }
195
- else {
196
- await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/data-type/folder/' + child.id);
137
+ async recurseDeleteChildren(dataFolder) {
138
+ if (!dataFolder.hasChildren) {
139
+ return await this.deleteFolder(dataFolder.id);
140
+ }
141
+ const items = await this.getChildren(dataFolder.id);
142
+ for (const child of items) {
143
+ if (child.hasChildren) {
144
+ await this.recurseDeleteChildren(child);
145
+ }
146
+ else if (child.isFolder) {
147
+ await this.deleteFolder(child.id);
148
+ }
149
+ else {
150
+ await this.delete(child.id);
151
+ }
152
+ }
153
+ return await this.deleteFolder(dataFolder.id);
154
+ }
155
+ async recurseChildren(name, id, toDelete) {
156
+ const items = await this.getChildren(id);
157
+ for (const child of items) {
158
+ if (child.name === name) {
159
+ if (!toDelete) {
160
+ if (child.isFolder) {
161
+ return await this.getFolder(child.id);
197
162
  }
163
+ return await this.get(child.id);
198
164
  }
199
- else {
200
- await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/data-type/' + child.id);
165
+ if (child.isFolder) {
166
+ return await this.recurseDeleteChildren(child);
201
167
  }
168
+ return await this.delete(child.id);
169
+ }
170
+ else if (child.hasChildren) {
171
+ return await this.recurseChildren(name, child.id, toDelete);
202
172
  }
203
173
  }
204
- await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/data-type/folder/' + id);
174
+ return false;
175
+ }
176
+ async save(dataType) {
177
+ const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/data-type', dataType);
178
+ return response.headers().location.split("v1/data-type/").pop();
179
+ }
180
+ async createDateTypeDataType(name) {
181
+ await this.ensureNameNotExists(name);
182
+ const dataType = new json_models_builders_1.DatePickerDataTypeBuilder()
183
+ .withName(name)
184
+ .build();
185
+ return await this.save(dataType);
205
186
  }
206
187
  }
207
188
  exports.DataTypeApiHelper = DataTypeApiHelper;