@umbraco/playwright-testhelpers 17.1.0-beta.5 → 17.1.0-beta.7

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 (147) hide show
  1. package/dist/lib/helpers/BaseApiHelper.d.ts +19 -0
  2. package/dist/lib/helpers/BaseApiHelper.js +87 -0
  3. package/dist/lib/helpers/BaseApiHelper.js.map +1 -0
  4. package/dist/lib/helpers/ConstantHelper.d.ts +0 -17
  5. package/dist/lib/helpers/ConstantHelper.js +0 -17
  6. package/dist/lib/helpers/ConstantHelper.js.map +1 -1
  7. package/dist/lib/helpers/ContentRenderUiHelper.js +3 -3
  8. package/dist/lib/helpers/ContentRenderUiHelper.js.map +1 -1
  9. package/dist/lib/helpers/ContentUiHelper.js +487 -353
  10. package/dist/lib/helpers/ContentUiHelper.js.map +1 -1
  11. package/dist/lib/helpers/CurrentUserProfileUiHelper.js +10 -4
  12. package/dist/lib/helpers/CurrentUserProfileUiHelper.js.map +1 -1
  13. package/dist/lib/helpers/DataTypeApiHelper.d.ts +9 -21
  14. package/dist/lib/helpers/DataTypeApiHelper.js +32 -125
  15. package/dist/lib/helpers/DataTypeApiHelper.js.map +1 -1
  16. package/dist/lib/helpers/DataTypeUiHelper.js +332 -193
  17. package/dist/lib/helpers/DataTypeUiHelper.js.map +1 -1
  18. package/dist/lib/helpers/DictionaryApiHelper.d.ts +8 -15
  19. package/dist/lib/helpers/DictionaryApiHelper.js +49 -77
  20. package/dist/lib/helpers/DictionaryApiHelper.js.map +1 -1
  21. package/dist/lib/helpers/DictionaryUiHelper.js +23 -17
  22. package/dist/lib/helpers/DictionaryUiHelper.js.map +1 -1
  23. package/dist/lib/helpers/DocumentBlueprintApiHelper.d.ts +7 -13
  24. package/dist/lib/helpers/DocumentBlueprintApiHelper.js +44 -69
  25. package/dist/lib/helpers/DocumentBlueprintApiHelper.js.map +1 -1
  26. package/dist/lib/helpers/DocumentBlueprintUiHelper.js +10 -8
  27. package/dist/lib/helpers/DocumentBlueprintUiHelper.js.map +1 -1
  28. package/dist/lib/helpers/DocumentTypeApiHelper.d.ts +4 -18
  29. package/dist/lib/helpers/DocumentTypeApiHelper.js +4 -134
  30. package/dist/lib/helpers/DocumentTypeApiHelper.js.map +1 -1
  31. package/dist/lib/helpers/DocumentTypeUiHelper.js +34 -22
  32. package/dist/lib/helpers/DocumentTypeUiHelper.js.map +1 -1
  33. package/dist/lib/helpers/ExamineManagementUiHelper.js +6 -5
  34. package/dist/lib/helpers/ExamineManagementUiHelper.js.map +1 -1
  35. package/dist/lib/helpers/FormsUiHelper.js +159 -119
  36. package/dist/lib/helpers/FormsUiHelper.js.map +1 -1
  37. package/dist/lib/helpers/HealthCheckUiHelper.js +7 -7
  38. package/dist/lib/helpers/HealthCheckUiHelper.js.map +1 -1
  39. package/dist/lib/helpers/LanguageApiHelper.d.ts +10 -12
  40. package/dist/lib/helpers/LanguageApiHelper.js +34 -35
  41. package/dist/lib/helpers/LanguageApiHelper.js.map +1 -1
  42. package/dist/lib/helpers/LanguageUiHelper.js +19 -16
  43. package/dist/lib/helpers/LanguageUiHelper.js.map +1 -1
  44. package/dist/lib/helpers/LogViewerUiHelper.js +31 -22
  45. package/dist/lib/helpers/LogViewerUiHelper.js.map +1 -1
  46. package/dist/lib/helpers/LoginUiHelper.js +7 -4
  47. package/dist/lib/helpers/LoginUiHelper.js.map +1 -1
  48. package/dist/lib/helpers/MediaTypeApiHelper.d.ts +4 -18
  49. package/dist/lib/helpers/MediaTypeApiHelper.js +4 -134
  50. package/dist/lib/helpers/MediaTypeApiHelper.js.map +1 -1
  51. package/dist/lib/helpers/MediaTypeUiHelper.js +17 -11
  52. package/dist/lib/helpers/MediaTypeUiHelper.js.map +1 -1
  53. package/dist/lib/helpers/MediaUiHelper.js +45 -36
  54. package/dist/lib/helpers/MediaUiHelper.js.map +1 -1
  55. package/dist/lib/helpers/MemberApiHelper.d.ts +4 -12
  56. package/dist/lib/helpers/MemberApiHelper.js +6 -54
  57. package/dist/lib/helpers/MemberApiHelper.js.map +1 -1
  58. package/dist/lib/helpers/MemberGroupApiHelper.d.ts +6 -11
  59. package/dist/lib/helpers/MemberGroupApiHelper.js +20 -35
  60. package/dist/lib/helpers/MemberGroupApiHelper.js.map +1 -1
  61. package/dist/lib/helpers/MemberGroupUiHelper.js +16 -13
  62. package/dist/lib/helpers/MemberGroupUiHelper.js.map +1 -1
  63. package/dist/lib/helpers/MemberTypeApiHelper.d.ts +5 -12
  64. package/dist/lib/helpers/MemberTypeApiHelper.js +16 -49
  65. package/dist/lib/helpers/MemberTypeApiHelper.js.map +1 -1
  66. package/dist/lib/helpers/MemberTypeUiHelper.js +3 -2
  67. package/dist/lib/helpers/MemberTypeUiHelper.js.map +1 -1
  68. package/dist/lib/helpers/MemberUiHelper.js +43 -25
  69. package/dist/lib/helpers/MemberUiHelper.js.map +1 -1
  70. package/dist/lib/helpers/ModelsBuilderUiHelper.js +3 -2
  71. package/dist/lib/helpers/ModelsBuilderUiHelper.js.map +1 -1
  72. package/dist/lib/helpers/PackageApiHelper.d.ts +5 -4
  73. package/dist/lib/helpers/PackageApiHelper.js +47 -75
  74. package/dist/lib/helpers/PackageApiHelper.js.map +1 -1
  75. package/dist/lib/helpers/PackageUiHelper.js +36 -30
  76. package/dist/lib/helpers/PackageUiHelper.js.map +1 -1
  77. package/dist/lib/helpers/PartialViewApiHelper.d.ts +5 -20
  78. package/dist/lib/helpers/PartialViewApiHelper.js +12 -146
  79. package/dist/lib/helpers/PartialViewApiHelper.js.map +1 -1
  80. package/dist/lib/helpers/PartialViewUiHelper.js +17 -14
  81. package/dist/lib/helpers/PartialViewUiHelper.js.map +1 -1
  82. package/dist/lib/helpers/PathBasedTreeApiHelper.d.ts +32 -0
  83. package/dist/lib/helpers/PathBasedTreeApiHelper.js +164 -0
  84. package/dist/lib/helpers/PathBasedTreeApiHelper.js.map +1 -0
  85. package/dist/lib/helpers/ProfilingUiHelper.js +5 -3
  86. package/dist/lib/helpers/ProfilingUiHelper.js.map +1 -1
  87. package/dist/lib/helpers/PublishedStatusUiHelper.js +8 -7
  88. package/dist/lib/helpers/PublishedStatusUiHelper.js.map +1 -1
  89. package/dist/lib/helpers/RedirectManagementUiHelper.js +12 -7
  90. package/dist/lib/helpers/RedirectManagementUiHelper.js.map +1 -1
  91. package/dist/lib/helpers/RelationTypeApiHelper.d.ts +7 -12
  92. package/dist/lib/helpers/RelationTypeApiHelper.js +28 -49
  93. package/dist/lib/helpers/RelationTypeApiHelper.js.map +1 -1
  94. package/dist/lib/helpers/RelationTypeUiHelper.js +16 -13
  95. package/dist/lib/helpers/RelationTypeUiHelper.js.map +1 -1
  96. package/dist/lib/helpers/ScriptApiHelper.d.ts +6 -22
  97. package/dist/lib/helpers/ScriptApiHelper.js +12 -165
  98. package/dist/lib/helpers/ScriptApiHelper.js.map +1 -1
  99. package/dist/lib/helpers/ScriptUiHelper.js +13 -9
  100. package/dist/lib/helpers/ScriptUiHelper.js.map +1 -1
  101. package/dist/lib/helpers/StylesheetApiHelper.d.ts +5 -20
  102. package/dist/lib/helpers/StylesheetApiHelper.js +13 -154
  103. package/dist/lib/helpers/StylesheetApiHelper.js.map +1 -1
  104. package/dist/lib/helpers/StylesheetUiHelper.js +14 -9
  105. package/dist/lib/helpers/StylesheetUiHelper.js.map +1 -1
  106. package/dist/lib/helpers/TelemetryDataUiHelper.js +3 -2
  107. package/dist/lib/helpers/TelemetryDataUiHelper.js.map +1 -1
  108. package/dist/lib/helpers/TemplateApiHelper.d.ts +8 -15
  109. package/dist/lib/helpers/TemplateApiHelper.js +51 -83
  110. package/dist/lib/helpers/TemplateApiHelper.js.map +1 -1
  111. package/dist/lib/helpers/TemplateUiHelper.js +25 -19
  112. package/dist/lib/helpers/TemplateUiHelper.js.map +1 -1
  113. package/dist/lib/helpers/TreeApiHelper.d.ts +15 -0
  114. package/dist/lib/helpers/TreeApiHelper.js +116 -0
  115. package/dist/lib/helpers/TreeApiHelper.js.map +1 -0
  116. package/dist/lib/helpers/UiBaseLocators.d.ts +228 -230
  117. package/dist/lib/helpers/UiBaseLocators.js +871 -832
  118. package/dist/lib/helpers/UiBaseLocators.js.map +1 -1
  119. package/dist/lib/helpers/UserGroupApiHelper.d.ts +3 -13
  120. package/dist/lib/helpers/UserGroupApiHelper.js +3 -69
  121. package/dist/lib/helpers/UserGroupApiHelper.js.map +1 -1
  122. package/dist/lib/helpers/UserGroupUiHelper.js +49 -32
  123. package/dist/lib/helpers/UserGroupUiHelper.js.map +1 -1
  124. package/dist/lib/helpers/UserUiHelper.js +46 -43
  125. package/dist/lib/helpers/UserUiHelper.js.map +1 -1
  126. package/dist/lib/helpers/VariantBasedApiHelper.d.ts +23 -0
  127. package/dist/lib/helpers/VariantBasedApiHelper.js +81 -0
  128. package/dist/lib/helpers/VariantBasedApiHelper.js.map +1 -0
  129. package/dist/lib/helpers/WebhookApiHelper.d.ts +1 -0
  130. package/dist/lib/helpers/WebhookApiHelper.js +10 -11
  131. package/dist/lib/helpers/WebhookApiHelper.js.map +1 -1
  132. package/dist/lib/helpers/WebhookUiHelper.js +27 -11
  133. package/dist/lib/helpers/WebhookUiHelper.js.map +1 -1
  134. package/dist/lib/helpers/WelcomeDashboardUiHelper.js +1 -1
  135. package/dist/lib/helpers/WelcomeDashboardUiHelper.js.map +1 -1
  136. package/dist/lib/helpers/differentAppSettingsHelpers/ExternalLoginUiHelpers.js +9 -4
  137. package/dist/lib/helpers/differentAppSettingsHelpers/ExternalLoginUiHelpers.js.map +1 -1
  138. package/dist/lib/helpers/differentAppSettingsHelpers/InstallUiHelper.js +10 -5
  139. package/dist/lib/helpers/differentAppSettingsHelpers/InstallUiHelper.js.map +1 -1
  140. package/dist/lib/helpers/index.d.ts +4 -1
  141. package/dist/lib/helpers/index.js +9 -3
  142. package/dist/lib/helpers/index.js.map +1 -1
  143. package/dist/tsconfig.tsbuildinfo +1 -1
  144. package/package.json +1 -1
  145. package/dist/lib/helpers/BasePage.d.ts +0 -449
  146. package/dist/lib/helpers/BasePage.js +0 -547
  147. package/dist/lib/helpers/BasePage.js.map +0 -1
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CurrentUserProfileUiHelper = void 0;
4
+ const test_1 = require("@playwright/test");
4
5
  const UiBaseLocators_1 = require("./UiBaseLocators");
5
6
  class CurrentUserProfileUiHelper extends UiBaseLocators_1.UiBaseLocators {
6
7
  changePasswordBtn;
@@ -9,12 +10,17 @@ class CurrentUserProfileUiHelper extends UiBaseLocators_1.UiBaseLocators {
9
10
  this.changePasswordBtn = page.getByLabel('Change password');
10
11
  }
11
12
  async clickChangePasswordButton() {
12
- await this.click(this.changePasswordBtn);
13
+ await (0, test_1.expect)(this.changePasswordBtn).toBeVisible();
14
+ await this.changePasswordBtn.click();
13
15
  }
14
16
  async changePassword(currentPassword, newPassword) {
15
- await this.enterText(this.currentPasswordTxt, currentPassword);
16
- await this.enterText(this.newPasswordTxt, newPassword);
17
- await this.enterText(this.confirmPasswordTxt, newPassword);
17
+ await (0, test_1.expect)(this.currentPasswordTxt).toBeVisible();
18
+ await this.currentPasswordTxt.clear();
19
+ await this.currentPasswordTxt.fill(currentPassword);
20
+ await this.newPasswordTxt.clear();
21
+ await this.newPasswordTxt.fill(newPassword);
22
+ await this.confirmPasswordTxt.clear();
23
+ await this.confirmPasswordTxt.fill(newPassword);
18
24
  await this.clickConfirmButton();
19
25
  }
20
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CurrentUserProfileUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/CurrentUserProfileUiHelper.ts"],"names":[],"mappings":";;;AACA,qDAAgD;AAEhD,MAAa,0BAA2B,SAAQ,+BAAc;IAC3C,iBAAiB,CAAU;IAE5C,YAAY,IAAU;QACpB,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,yBAAyB;QAC7B,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,eAAuB,EAAE,WAAmB;QAC/D,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC;QAC/D,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QACvD,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;QAC3D,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAClC,CAAC;CACF;AAlBD,gEAkBC","sourcesContent":["import {Locator, Page} from \"@playwright/test\"\nimport {UiBaseLocators} from \"./UiBaseLocators\";\n\nexport class CurrentUserProfileUiHelper extends UiBaseLocators {\n private readonly changePasswordBtn: Locator;\n\n constructor(page: Page) {\n super(page);\n this.changePasswordBtn = page.getByLabel('Change password');\n }\n\n async clickChangePasswordButton() {\n await this.click(this.changePasswordBtn);\n }\n\n async changePassword(currentPassword: string, newPassword: string) {\n await this.enterText(this.currentPasswordTxt, currentPassword);\n await this.enterText(this.newPasswordTxt, newPassword);\n await this.enterText(this.confirmPasswordTxt, newPassword);\n await this.clickConfirmButton();\n }\n}"]}
1
+ {"version":3,"file":"CurrentUserProfileUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/CurrentUserProfileUiHelper.ts"],"names":[],"mappings":";;;AAAA,2CAAsD;AACtD,qDAAgD;AAEhD,MAAa,0BAA2B,SAAQ,+BAAc;IAC3C,iBAAiB,CAAU;IAE5C,YAAY,IAAU;QACpB,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,yBAAyB;QAC7B,MAAM,IAAA,aAAM,EAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,WAAW,EAAE,CAAC;QACnD,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,eAAuB,EAAE,WAAmB;QAC/D,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,IAAI,CAAC,eAAe,CAAC,CAAC;QACpD,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5C,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QACtC,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChD,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAClC,CAAC;CACF;AAvBD,gEAuBC","sourcesContent":["import {expect, Locator, Page} from \"@playwright/test\"\nimport {UiBaseLocators} from \"./UiBaseLocators\";\n\nexport class CurrentUserProfileUiHelper extends UiBaseLocators {\n private readonly changePasswordBtn: Locator;\n\n constructor(page: Page) {\n super(page);\n this.changePasswordBtn = page.getByLabel('Change password');\n }\n\n async clickChangePasswordButton() {\n await expect(this.changePasswordBtn).toBeVisible();\n await this.changePasswordBtn.click();\n }\n\n async changePassword(currentPassword: string, newPassword: string) {\n await expect(this.currentPasswordTxt).toBeVisible();\n await this.currentPasswordTxt.clear();\n await this.currentPasswordTxt.fill(currentPassword);\n await this.newPasswordTxt.clear();\n await this.newPasswordTxt.fill(newPassword);\n await this.confirmPasswordTxt.clear();\n await this.confirmPasswordTxt.fill(newPassword);\n await this.clickConfirmButton();\n }\n}"]}
@@ -1,30 +1,18 @@
1
- import { ApiHelpers } from "./ApiHelpers";
2
- export declare class DataTypeApiHelper {
3
- api: ApiHelpers;
4
- constructor(api: ApiHelpers);
5
- get(id: string): Promise<any>;
6
- create(name: string, editorAlias: string, editorUiAlias: string, values: {
1
+ import { TreeApiHelper } from "./TreeApiHelper";
2
+ export declare class DataTypeApiHelper extends TreeApiHelper {
3
+ protected resourcePath: string;
4
+ protected treePath: string;
5
+ getByName(name: string): Promise<any>;
6
+ createDataType(name: string, editorAlias: string, editorUiAlias: string, values: {
7
7
  alias: string;
8
8
  value: string;
9
9
  }[], parentId?: string, id?: string): Promise<string | undefined>;
10
- update(id: string, dataType: any): Promise<import("playwright-core").APIResponse>;
11
- delete(id: string): Promise<import("playwright-core").APIResponse>;
12
- getAllAtRoot(): Promise<import("playwright-core").APIResponse>;
13
- doesExist(id: string): Promise<boolean>;
10
+ update(id: string, dataType: any): Promise<any>;
14
11
  getItems(ids: string[]): Promise<any>;
15
- getByName(name: string): Promise<any>;
16
- ensureNameNotExists(name: string): Promise<import("playwright-core").APIResponse | null>;
17
- doesNameExist(name: string): Promise<any>;
18
12
  moveToFolder(dataTypeId: string, folderId: string): Promise<import("playwright-core").APIResponse>;
19
13
  copyToFolder(dataTypeId: string, folderId: string): Promise<string | undefined>;
20
- getFolder(id: string): Promise<any>;
21
- createFolder(name: string, parentId?: string, id?: string): Promise<string | undefined>;
22
- renameFolder(id: string, name: string): Promise<import("playwright-core").APIResponse>;
23
- deleteFolder(id: string): Promise<import("playwright-core").APIResponse>;
14
+ createFolder(name: string, parentId?: string, id?: string): Promise<string>;
24
15
  doesFolderExist(id: string): Promise<boolean>;
25
- getChildren(id: string): Promise<any>;
26
- private recurseDeleteChildren;
27
- private recurseChildren;
28
16
  save(dataType: any): Promise<string | undefined>;
29
17
  createDefaultDateTimeDataType(name: string): Promise<string | undefined>;
30
18
  createCheckboxListDataType(name: string, options?: string[]): Promise<string | undefined>;
@@ -116,7 +104,7 @@ export declare class DataTypeApiHelper {
116
104
  createListViewContentDataType(name?: string): Promise<string | undefined>;
117
105
  createListViewContentDataTypeWithLayoutAndPageSize(name?: string, layoutAlias?: string, layoutName?: string, pageSize?: number): Promise<string | undefined>;
118
106
  createListViewContentDataTypeWithAllPermissions(name?: string): Promise<string | undefined>;
119
- updateListViewMediaDataType(alias: string, newValue: any): Promise<import("playwright-core").APIResponse>;
107
+ updateListViewMediaDataType(alias: string, newValue: any): Promise<any>;
120
108
  createDefaultTiptapDataType(name: string): Promise<string | undefined>;
121
109
  createTipTapDataTypeWithABlock(name: string, contentElementTypeKey: string): Promise<string | undefined>;
122
110
  createApprovedColorDataTypeWithOneItem(name: string, itemLabel: string, itemValue: string): Promise<string | undefined>;
@@ -1,17 +1,30 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DataTypeApiHelper = void 0;
4
+ const TreeApiHelper_1 = require("./TreeApiHelper");
4
5
  const json_models_builders_1 = require("@umbraco/json-models-builders");
5
- class DataTypeApiHelper {
6
- api;
7
- constructor(api) {
8
- this.api = api;
9
- }
10
- async get(id) {
11
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/data-type/' + id);
12
- return await response.json();
6
+ class DataTypeApiHelper extends TreeApiHelper_1.TreeApiHelper {
7
+ resourcePath = 'data-type';
8
+ treePath = 'tree/data-type';
9
+ // Override to handle isContainer check specific to DataType
10
+ async getByName(name) {
11
+ const rootItems = await this.getAllAtRoot();
12
+ const jsonItems = await rootItems.json();
13
+ for (const item of jsonItems.items) {
14
+ if (item.name === name) {
15
+ return item.isFolder ? this.getFolder(item.id) : this.get(item.id);
16
+ }
17
+ else if (item.isContainer || item.hasChildren) {
18
+ const result = await this.recurseChildren(name, item.id, false);
19
+ if (result) {
20
+ return result;
21
+ }
22
+ }
23
+ }
24
+ return false;
13
25
  }
14
- async create(name, editorAlias, editorUiAlias, values, parentId, id) {
26
+ // DataType-specific create method with different signature
27
+ async createDataType(name, editorAlias, editorUiAlias, values, parentId, id) {
15
28
  const dataType = {
16
29
  "name": name,
17
30
  "editorAlias": editorAlias,
@@ -20,8 +33,7 @@ class DataTypeApiHelper {
20
33
  "id": id,
21
34
  "parent": parentId ? { "id": parentId } : null
22
35
  };
23
- const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/data-type', dataType);
24
- // Returns the id of the created dataType
36
+ const response = await this.api.post(this.buildUrl(), dataType);
25
37
  return response.headers().location.split("v1/data-type/").pop();
26
38
  }
27
39
  async update(id, dataType) {
@@ -31,150 +43,45 @@ class DataTypeApiHelper {
31
43
  "editorUiAlias": dataType.editorUiAlias,
32
44
  "values": dataType.values,
33
45
  };
34
- return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/data-type/' + id, updateDataType);
35
- }
36
- async delete(id) {
37
- return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/data-type/' + id);
38
- }
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;
46
+ return await this.api.put(this.buildUrl('/' + id), updateDataType);
45
47
  }
46
48
  async getItems(ids) {
47
49
  let idArray = 'id=' + ids[0];
48
- let i;
49
- for (i = 1; i < ids.length; ++i) {
50
+ for (let i = 1; i < ids.length; ++i) {
50
51
  idArray += '&id=' + ids[i];
51
52
  }
52
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/data-type/item?' + idArray);
53
+ const response = await this.api.get(`${this.api.baseUrl}/umbraco/management/api/v1/${this.treePath}/item?${idArray}`);
53
54
  return await response.json();
54
55
  }
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
- }
68
- }
69
- return false;
70
- }
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);
83
- }
84
- }
85
- return null;
86
- }
87
- async doesNameExist(name) {
88
- return await this.getByName(name);
89
- }
90
56
  async moveToFolder(dataTypeId, folderId) {
91
57
  const folderIdBody = {
92
58
  "target": { id: folderId }
93
59
  };
94
- return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/data-type/' + dataTypeId + '/move', folderIdBody);
60
+ return await this.api.put(this.buildUrl('/' + dataTypeId + '/move'), folderIdBody);
95
61
  }
96
62
  async copyToFolder(dataTypeId, folderId) {
97
63
  const folderIdBody = {
98
64
  "target": { id: folderId }
99
65
  };
100
- const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/data-type/' + dataTypeId + '/copy', folderIdBody);
101
- // Returns the id of the copied dataType
66
+ const response = await this.api.post(this.buildUrl('/' + dataTypeId + '/copy'), folderIdBody);
102
67
  return response.headers().location.split("v1/data-type/").pop();
103
68
  }
104
- // FOLDER
105
- async getFolder(id) {
106
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/data-type/folder/' + id);
107
- return await response.json();
108
- }
69
+ // Override createFolder to support optional id parameter
109
70
  async createFolder(name, parentId, id) {
110
71
  const folderData = {
111
72
  "name": name,
112
73
  "id": id,
113
74
  "parent": parentId ? { "id": parentId } : null
114
75
  };
115
- const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/data-type/folder', folderData);
116
- // Returns the id of the created dataTypeFolder
76
+ const response = await this.api.post(this.buildUrl('/folder'), folderData);
117
77
  return response.headers().location.split("v1/data-type/folder/").pop();
118
78
  }
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);
124
- }
125
- async deleteFolder(id) {
126
- return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/data-type/folder/' + id);
127
- }
128
79
  async doesFolderExist(id) {
129
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/data-type/folder/' + id);
80
+ const response = await this.api.get(this.buildUrl('/folder/' + id));
130
81
  return response.status() === 200;
131
82
  }
132
- async getChildren(id) {
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');
134
- const items = await response.json();
135
- return items.items;
136
- }
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);
162
- }
163
- return await this.get(child.id);
164
- }
165
- if (child.isFolder) {
166
- return await this.recurseDeleteChildren(child);
167
- }
168
- return await this.delete(child.id);
169
- }
170
- else if (child.hasChildren) {
171
- return await this.recurseChildren(name, child.id, toDelete);
172
- }
173
- }
174
- return false;
175
- }
176
83
  async save(dataType) {
177
- const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/data-type', dataType);
84
+ const response = await this.api.post(this.buildUrl(), dataType);
178
85
  return response.headers().location.split("v1/data-type/").pop();
179
86
  }
180
87
  async createDefaultDateTimeDataType(name) {