@umbraco/playwright-testhelpers 17.0.15 → 17.0.16
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.
- package/dist/lib/helpers/ContentUiHelper.d.ts +6 -0
- package/dist/lib/helpers/ContentUiHelper.js +27 -0
- package/dist/lib/helpers/ContentUiHelper.js.map +1 -1
- package/dist/lib/helpers/DocumentTypeApiHelper.d.ts +20 -0
- package/dist/lib/helpers/DocumentTypeApiHelper.js +108 -0
- package/dist/lib/helpers/DocumentTypeApiHelper.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -47,4 +47,24 @@ export declare class DocumentTypeApiHelper {
|
|
|
47
47
|
createVariantDocumentTypeWithInvariantPropertyEditor(documentTypeName: string, dataTypeName: string, dataTypeId: string): Promise<string | undefined>;
|
|
48
48
|
createVariantDocumentTypeWithAllowedChildNodeAndInvariantPropertyEditor(documentTypeName: string, allowedChildNodeId: string, dataTypeName: string, dataTypeId: string, groupName?: string): Promise<string | undefined>;
|
|
49
49
|
getPropertyIdWithName(documentTypeId: string, propertyName: string): Promise<any>;
|
|
50
|
+
createElementTypeWithTwoPropertyEditors(elementTypeName: string, firstDataTypeName: string, firstDataTypeId: string, secondDataTypeName: string, secondDataTypeId: string, elementTypeVaryByCulture?: boolean, firstPropertyVaryByCulture?: boolean, secondPropertyVaryByCulture?: boolean): Promise<string | undefined>;
|
|
51
|
+
/**
|
|
52
|
+
* Creates a document type with variant and invariant block lists for testing multilingual scenarios.
|
|
53
|
+
*
|
|
54
|
+
* Structure created:
|
|
55
|
+
* - Document Type (Vary by culture)
|
|
56
|
+
* - Text 1 (Vary by culture)
|
|
57
|
+
* - Text 2 (Shared)
|
|
58
|
+
* - Block List 1 (Vary by culture) - contains Block 1 and Block 2
|
|
59
|
+
* - Block List 2 (Shared) - contains Block 1 and Block 2
|
|
60
|
+
*
|
|
61
|
+
* - Block 1 Element Type (Vary by culture)
|
|
62
|
+
* - Text 1 (Vary by culture)
|
|
63
|
+
* - Text 2 (Shared)
|
|
64
|
+
*
|
|
65
|
+
* - Block 2 Element Type (Shared/Invariant)
|
|
66
|
+
* - Text 1
|
|
67
|
+
* - Text 2
|
|
68
|
+
*/
|
|
69
|
+
createDocumentTypeWithVariantAndInvariantBlockLists(documentTypeName: string, firstDataTypeName: string, firstDataTypeId: string, secondDataTypeName: string, secondDataTypeId: string, blockList1DataTypeName: string, blockList2DataTypeName: string, block1ElementTypeName: string, block2ElementTypeName: string): Promise<string | undefined>;
|
|
50
70
|
}
|
|
@@ -740,6 +740,114 @@ class DocumentTypeApiHelper {
|
|
|
740
740
|
return null;
|
|
741
741
|
}
|
|
742
742
|
}
|
|
743
|
+
async createElementTypeWithTwoPropertyEditors(elementTypeName, firstDataTypeName, firstDataTypeId, secondDataTypeName, secondDataTypeId, elementTypeVaryByCulture = false, firstPropertyVaryByCulture = false, secondPropertyVaryByCulture = false) {
|
|
744
|
+
const crypto = require('crypto');
|
|
745
|
+
await this.ensureNameNotExists(elementTypeName);
|
|
746
|
+
const containerId = crypto.randomUUID();
|
|
747
|
+
const elementType = new json_models_builders_1.DocumentTypeBuilder()
|
|
748
|
+
.withName(elementTypeName)
|
|
749
|
+
.withAlias(AliasHelper_1.AliasHelper.toAlias(elementTypeName))
|
|
750
|
+
.withIsElement(true)
|
|
751
|
+
.withVariesByCulture(elementTypeVaryByCulture)
|
|
752
|
+
.withIcon("icon-plugin")
|
|
753
|
+
.addContainer()
|
|
754
|
+
.withName('Content')
|
|
755
|
+
.withId(containerId)
|
|
756
|
+
.withType("Group")
|
|
757
|
+
.done()
|
|
758
|
+
.addProperty()
|
|
759
|
+
.withContainerId(containerId)
|
|
760
|
+
.withAlias(AliasHelper_1.AliasHelper.toAlias(firstDataTypeName))
|
|
761
|
+
.withName(firstDataTypeName)
|
|
762
|
+
.withDataTypeId(firstDataTypeId)
|
|
763
|
+
.withVariesByCulture(firstPropertyVaryByCulture)
|
|
764
|
+
.done()
|
|
765
|
+
.addProperty()
|
|
766
|
+
.withContainerId(containerId)
|
|
767
|
+
.withAlias(AliasHelper_1.AliasHelper.toAlias(secondDataTypeName))
|
|
768
|
+
.withName(secondDataTypeName)
|
|
769
|
+
.withDataTypeId(secondDataTypeId)
|
|
770
|
+
.withVariesByCulture(secondPropertyVaryByCulture)
|
|
771
|
+
.done()
|
|
772
|
+
.build();
|
|
773
|
+
return await this.create(elementType);
|
|
774
|
+
}
|
|
775
|
+
/**
|
|
776
|
+
* Creates a document type with variant and invariant block lists for testing multilingual scenarios.
|
|
777
|
+
*
|
|
778
|
+
* Structure created:
|
|
779
|
+
* - Document Type (Vary by culture)
|
|
780
|
+
* - Text 1 (Vary by culture)
|
|
781
|
+
* - Text 2 (Shared)
|
|
782
|
+
* - Block List 1 (Vary by culture) - contains Block 1 and Block 2
|
|
783
|
+
* - Block List 2 (Shared) - contains Block 1 and Block 2
|
|
784
|
+
*
|
|
785
|
+
* - Block 1 Element Type (Vary by culture)
|
|
786
|
+
* - Text 1 (Vary by culture)
|
|
787
|
+
* - Text 2 (Shared)
|
|
788
|
+
*
|
|
789
|
+
* - Block 2 Element Type (Shared/Invariant)
|
|
790
|
+
* - Text 1
|
|
791
|
+
* - Text 2
|
|
792
|
+
*/
|
|
793
|
+
async createDocumentTypeWithVariantAndInvariantBlockLists(documentTypeName, firstDataTypeName, firstDataTypeId, secondDataTypeName, secondDataTypeId, blockList1DataTypeName, blockList2DataTypeName, block1ElementTypeName, block2ElementTypeName) {
|
|
794
|
+
const crypto = require('crypto');
|
|
795
|
+
await this.ensureNameNotExists(documentTypeName);
|
|
796
|
+
// Create Block 1 Element Type (Vary by culture) with first property (vary by culture) and second property (shared)
|
|
797
|
+
const block1ElementTypeId = await this.createElementTypeWithTwoPropertyEditors(block1ElementTypeName, firstDataTypeName, firstDataTypeId, secondDataTypeName, secondDataTypeId, true, true, false);
|
|
798
|
+
// Create Block 2 Element Type (Shared/Invariant) with first property and second property
|
|
799
|
+
const block2ElementTypeId = await this.createElementTypeWithTwoPropertyEditors(block2ElementTypeName, firstDataTypeName, firstDataTypeId, secondDataTypeName, secondDataTypeId, false, false, false);
|
|
800
|
+
// Create Block List 1 Data Type (will be used with vary by culture property)
|
|
801
|
+
const blockList1DataTypeId = await this.api.dataType.createBlockListDataTypeWithTwoBlocks(blockList1DataTypeName, block1ElementTypeId, block2ElementTypeId);
|
|
802
|
+
// Create Block List 2 Data Type (will be used with shared property)
|
|
803
|
+
const blockList2DataTypeId = await this.api.dataType.createBlockListDataTypeWithTwoBlocks(blockList2DataTypeName, block1ElementTypeId, block2ElementTypeId);
|
|
804
|
+
// Create Document Type (Vary by culture)
|
|
805
|
+
const containerId = crypto.randomUUID();
|
|
806
|
+
const documentType = new json_models_builders_1.DocumentTypeBuilder()
|
|
807
|
+
.withName(documentTypeName)
|
|
808
|
+
.withAlias(AliasHelper_1.AliasHelper.toAlias(documentTypeName))
|
|
809
|
+
.withAllowedAsRoot(true)
|
|
810
|
+
.withVariesByCulture(true)
|
|
811
|
+
.addContainer()
|
|
812
|
+
.withName('Content')
|
|
813
|
+
.withId(containerId)
|
|
814
|
+
.withType("Group")
|
|
815
|
+
.done()
|
|
816
|
+
.addProperty()
|
|
817
|
+
.withContainerId(containerId)
|
|
818
|
+
.withAlias(AliasHelper_1.AliasHelper.toAlias(firstDataTypeName))
|
|
819
|
+
.withName(firstDataTypeName)
|
|
820
|
+
.withDataTypeId(firstDataTypeId)
|
|
821
|
+
.withVariesByCulture(true)
|
|
822
|
+
.withSortOrder(0)
|
|
823
|
+
.done()
|
|
824
|
+
.addProperty()
|
|
825
|
+
.withContainerId(containerId)
|
|
826
|
+
.withAlias(AliasHelper_1.AliasHelper.toAlias(secondDataTypeName))
|
|
827
|
+
.withName(secondDataTypeName)
|
|
828
|
+
.withDataTypeId(secondDataTypeId)
|
|
829
|
+
.withVariesByCulture(false)
|
|
830
|
+
.withSortOrder(1)
|
|
831
|
+
.done()
|
|
832
|
+
.addProperty()
|
|
833
|
+
.withContainerId(containerId)
|
|
834
|
+
.withAlias(AliasHelper_1.AliasHelper.toAlias(blockList1DataTypeName))
|
|
835
|
+
.withName(blockList1DataTypeName)
|
|
836
|
+
.withDataTypeId(blockList1DataTypeId)
|
|
837
|
+
.withVariesByCulture(true)
|
|
838
|
+
.withSortOrder(2)
|
|
839
|
+
.done()
|
|
840
|
+
.addProperty()
|
|
841
|
+
.withContainerId(containerId)
|
|
842
|
+
.withAlias(AliasHelper_1.AliasHelper.toAlias(blockList2DataTypeName))
|
|
843
|
+
.withName(blockList2DataTypeName)
|
|
844
|
+
.withDataTypeId(blockList2DataTypeId)
|
|
845
|
+
.withVariesByCulture(false)
|
|
846
|
+
.withSortOrder(3)
|
|
847
|
+
.done()
|
|
848
|
+
.build();
|
|
849
|
+
return await this.create(documentType);
|
|
850
|
+
}
|
|
743
851
|
}
|
|
744
852
|
exports.DocumentTypeApiHelper = DocumentTypeApiHelper;
|
|
745
853
|
//# sourceMappingURL=DocumentTypeApiHelper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentTypeApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/DocumentTypeApiHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import {ApiHelpers} from \"./ApiHelpers\";\nimport {DocumentTypeBuilder} from \"@umbraco/json-models-builders\";\nimport {AliasHelper} from \"./AliasHelper\";\n\nexport class DocumentTypeApiHelper {\n api: ApiHelpers\n\n constructor(api: ApiHelpers) {\n this.api = api;\n }\n\n async ensureNameNotExists(name: string) {\n const rootDocumentTypes = await this.getAllAtRoot();\n const jsonDocumentTypes = await rootDocumentTypes.json();\n\n for (const documentType of jsonDocumentTypes.items) {\n if (documentType.name === name) {\n if (documentType.isFolder) {\n return await this.recurseDeleteChildren(documentType);\n }\n return await this.delete(documentType.id);\n } else if (documentType.hasChildren) {\n await this.recurseChildren(name, documentType.id, true);\n }\n }\n return null;\n }\n\n async getAllAtRoot() {\n return await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/document-type/root?skip=0&take=10000&foldersOnly=false');\n }\n\n private async recurseChildren(name: string, id: string, toDelete: boolean) {\n const items = await this.getChildren(id);\n\n for (const child of items) {\n if (child.name === name) {\n if (!toDelete) {\n if (child.isFolder) {\n return await this.getFolder(child.id);\n }\n return await this.get(child.id);\n }\n if (child.isFolder) {\n return await this.recurseDeleteChildren(child);\n }\n return await this.delete(child.id);\n } else if (child.hasChildren) {\n return await this.recurseChildren(name, child.id, toDelete);\n }\n }\n return false;\n }\n\n private async recurseDeleteChildren(documentTypeFolder) {\n if (!documentTypeFolder.hasChildren) {\n return await this.deleteFolder(documentTypeFolder.id);\n }\n const items = await this.getChildren(documentTypeFolder.id);\n\n for (const child of items) {\n if (child.hasChildren) {\n await this.recurseDeleteChildren(child);\n } else if (child.isFolder) {\n await this.deleteFolder(child.id);\n } else {\n await this.delete(child.id);\n }\n }\n return await this.deleteFolder(documentTypeFolder.id);\n }\n\n async getChildren(id: string) {\n const response = await this.api.get(`${this.api.baseUrl}/umbraco/management/api/v1/tree/document-type/children?parentId=${id}&skip=0&take=10000&foldersOnly=false`);\n const items = await response.json();\n return items.items;\n }\n\n async create(documentType) {\n if (documentType == null) {\n return;\n }\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/document-type', documentType);\n return response.headers().location.split(\"/\").pop();\n }\n\n async get(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/document-type/' + id);\n const json = await response.json();\n if (json !== null) {\n return json;\n }\n return null;\n }\n\n async getByName(name: string) {\n const rootDocumentTypes = await this.getAllAtRoot();\n const jsonDocumentTypes = await rootDocumentTypes.json();\n\n for (const documentType of jsonDocumentTypes.items) {\n if (documentType.name === name) {\n if (documentType.isFolder) {\n return this.getFolder(documentType.id);\n }\n return this.get(documentType.id);\n } else if (documentType.hasChildren) {\n const result = await this.recurseChildren(name, documentType.id, false);\n if (result) {\n return result;\n }\n }\n }\n return false;\n }\n\n async doesNameExist(name: string) {\n return await this.getByName(name);\n }\n\n async delete(id: string) {\n if (id == null) {\n return;\n }\n const response = await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/document-type/' + id);\n return response.status();\n }\n\n // FOLDER\n async getFolder(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/document-type/folder/' + id);\n return await response.json();\n }\n\n async deleteFolder(id: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/document-type/folder/' + id);\n }\n\n async createFolder(name: string, parentId?: string) {\n const folder = {\n name: name,\n parent: parentId ? {id: parentId} : null\n\n }\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/document-type/folder', folder);\n return response.headers().location.split(\"/\").pop();\n }\n\n async renameFolder(folderId: string, folderName: string) {\n const folder = {\n name: folderName\n }\n return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/document-type/folder/' + folderId, folder);\n }\n\n async createDefaultDocumentType(documentTypeName: string) {\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .build();\n return await this.create(documentType);\n }\n\n async createDocumentTypeWithPropertyEditor(documentTypeName: string, dataTypeName: string, dataTypeId: string, groupName: string = \"TestGroup\", documentTypeVaryByCulture: boolean = false, propertyVaryByCulture: boolean = false, isMandatory: boolean = false) {\n const crypto = require('crypto');\n const containerId = crypto.randomUUID();\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(true)\n .addContainer()\n .withName(groupName)\n .withId(containerId)\n .withType(\"Group\")\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(dataTypeName))\n .withName(dataTypeName)\n .withDataTypeId(dataTypeId)\n .withVariesByCulture(propertyVaryByCulture)\n .withMandatory(isMandatory)\n .done()\n .withVariesByCulture(documentTypeVaryByCulture)\n .build();\n return await this.create(documentType);\n }\n\n async createDocumentTypeWithPropertyEditorAndTwoGroups(documentTypeName: string, firstPropertyName: string, firstDataTypeId: string, firstGroupName: string = \"TestGroup\", secondPropertyName: string, secondDataTypeId: string, secondGroupName: string = \"SecondGroup\") {\n const crypto = require('crypto');\n const firstContainerId = crypto.randomUUID();\n const secondContainerId = crypto.randomUUID();\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(true)\n .addContainer()\n .withName(firstGroupName)\n .withId(firstContainerId)\n .withType(\"Group\")\n .done()\n .addProperty()\n .withContainerId(firstContainerId)\n .withAlias(AliasHelper.toAlias(firstPropertyName))\n .withName(firstPropertyName)\n .withDataTypeId(firstDataTypeId)\n .done()\n .addContainer()\n .withName(secondGroupName)\n .withId(secondContainerId)\n .withType(\"Group\")\n .done()\n .addProperty()\n .withContainerId(secondContainerId)\n .withAlias(AliasHelper.toAlias(secondPropertyName))\n .withName(secondPropertyName)\n .withDataTypeId(secondDataTypeId)\n .done()\n .build();\n return await this.create(documentType);\n }\n\n async createDocumentTypeWithPropertyEditorInTab(documentTypeName: string, dataTypeName: string, dataTypeId: string, tabName: string, groupName: string = \"TestGroup\", varyByCulture: boolean = false) {\n const crypto = require('crypto');\n const tabId = crypto.randomUUID();\n const groupId = crypto.randomUUID();\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .addContainer()\n .withName(tabName)\n .withId(tabId)\n .withType(\"Tab\")\n .done()\n .addContainer()\n .withName(groupName)\n .withId(groupId)\n .withType(\"Group\")\n .withParentId(tabId)\n .done()\n .addProperty()\n .withContainerId(groupId)\n .withAlias(AliasHelper.toAlias(dataTypeName))\n .withName(dataTypeName)\n .withDataTypeId(dataTypeId)\n .done()\n .withVariesByCulture(varyByCulture)\n .build();\n return await this.create(documentType);\n }\n\n async createDocumentTypeWithTwoPropertyEditors(documentTypeName: string, dataTypeNameOne: string, dataTypeIdOne: string, dataTypeNameTwo: string, dataTypeIdTwo: string, groupName: string = \"TestGroup\") {\n const crypto = require('crypto');\n const containerId = crypto.randomUUID();\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(true)\n .addContainer()\n .withName(groupName)\n .withId(containerId)\n .withType(\"Group\")\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(dataTypeNameOne))\n .withName(dataTypeNameOne)\n .withDataTypeId(dataTypeIdOne)\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(dataTypeNameTwo))\n .withName(dataTypeNameTwo)\n .withDataTypeId(dataTypeIdTwo)\n .done()\n .build();\n return await this.create(documentType);\n }\n\n async createDefaultDocumentTypeWithAllowAsRoot(documentTypeName: string) {\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(true)\n .build();\n return await this.create(documentType);\n }\n\n async createDocumentTypeWithAllowedChildNode(documentTypeName: string, allowedChildNodeId: string) {\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(true)\n .addAllowedDocumentType()\n .withId(allowedChildNodeId)\n .done()\n .build();\n return await this.create(documentType);\n }\n\n async createDocumentTypeWithAPropertyEditorAndAnAllowedChildNode(documentTypeName: string, dataTypeName: string, dataTypeId: string, allowedChildNodeId: string, groupName: string = \"TestGroup\") {\n await this.ensureNameNotExists(documentTypeName);\n const crypto = require('crypto');\n const containerId = crypto.randomUUID();\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(true)\n .addContainer()\n .withName(groupName)\n .withId(containerId)\n .withType(\"Group\")\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(dataTypeName))\n .withName(dataTypeName)\n .withDataTypeId(dataTypeId)\n .done()\n .addAllowedDocumentType()\n .withId(allowedChildNodeId)\n .done()\n .build();\n return await this.create(documentType);\n }\n\n\n async createDocumentTypeWithAllowedTemplate(documentTypeName: string, allowedTemplateId: string, isAllowedAsRoot:boolean = false) {\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(isAllowedAsRoot)\n .addAllowedTemplateId()\n .withId(allowedTemplateId)\n .done()\n .withDefaultTemplateId(allowedTemplateId)\n .build();\n return await this.create(documentType);\n }\n\n async createDocumentTypeWithTwoAllowedTemplates(documentTypeName: string, allowedTemplateOneId: string, allowedTemplateTwoId: string, isAllowedAsRoot: boolean = false, defaultTemplateId?: string) {\n await this.ensureNameNotExists(documentTypeName);\n const defaultTemplate = defaultTemplateId === undefined ? allowedTemplateOneId : defaultTemplateId;\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(isAllowedAsRoot)\n .addAllowedTemplateId()\n .withId(allowedTemplateOneId)\n .done()\n .addAllowedTemplateId()\n .withId(allowedTemplateTwoId)\n .done()\n .withDefaultTemplateId(defaultTemplate)\n .build();\n return await this.create(documentType);\n }\n \n async createDocumentTypeWithTwoGroups(documentTypeName: string,dataType: string, dataTypeId: string, groupNameOne: string, groupNameTwo: string) {\n const crypto = require('crypto');\n const groupOneId = crypto.randomUUID();\n const groupTwoId = crypto.randomUUID();\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .addContainer()\n .withName(groupNameOne)\n .withId(groupOneId)\n .withType(\"Group\")\n .withSortOrder(0)\n .done()\n .addContainer()\n .withName(groupNameTwo)\n .withId(groupTwoId)\n .withType(\"Group\")\n .withSortOrder(1)\n .done()\n .addProperty()\n .withContainerId(groupOneId)\n .withAlias(AliasHelper.toAlias(dataType + \"One\"))\n .withName(dataType + \"One\")\n .withDataTypeId(dataTypeId)\n .done()\n .addProperty()\n .withContainerId(groupTwoId)\n .withAlias(AliasHelper.toAlias(dataType + \"Two\"))\n .withName(dataType + \"Two\")\n .withDataTypeId(dataTypeId)\n .done()\n .build();\n return await this.create(documentType);\n }\n \n async createDocumentTypeWithAComposition(documentTypeName: string, compositionId: string) {\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .addComposition()\n .withDocumentTypeId(compositionId)\n .done()\n .build();\n return await this.create(documentType);\n }\n\n async createEmptyElementType(elementTypeName: string) {\n await this.ensureNameNotExists(elementTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(elementTypeName)\n .withAlias(AliasHelper.toAlias(elementTypeName))\n .withIsElement(true)\n .withIcon(\"icon-plugin\")\n .build();\n return await this.create(documentType);\n }\n \n async createDocumentTypeWithTwoTabs(documentTypeName: string, dataType: string, dataTypeId: string, tabNameOne: string, tabNameTwo: string) {\n const crypto = require('crypto');\n const tabOneId = crypto.randomUUID();\n const tabTwoId = crypto.randomUUID();\n const groupOneId = crypto.randomUUID();\n const groupTwoId = crypto.randomUUID();\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .addContainer()\n .withName(tabNameOne)\n .withId(tabOneId)\n .withType(\"Tab\")\n .withSortOrder(0)\n .done()\n .addContainer()\n .withName(tabNameTwo)\n .withId(tabTwoId)\n .withType(\"Tab\")\n .withSortOrder(1)\n .done()\n .addContainer()\n .withName(\"GroupTestOne\")\n .withId(groupOneId)\n .withType(\"Group\")\n .withParentId(tabOneId)\n .done()\n .addProperty()\n .withContainerId(groupOneId)\n .withAlias(AliasHelper.toAlias(dataType + \"One\"))\n .withName(dataType + \"One\")\n .withDataTypeId(dataTypeId)\n .done()\n .addContainer()\n .withName(\"GroupTestTwo\")\n .withId(groupTwoId)\n .withType(\"Group\")\n .withParentId(tabTwoId)\n .done()\n .addProperty()\n .withContainerId(groupTwoId)\n .withAlias(AliasHelper.toAlias(dataType + \"Two\"))\n .withName(dataType + \"Two\")\n .withDataTypeId(dataTypeId)\n .done()\n .build();\n return await this.create(documentType);\n }\n\n async createDefaultElementType(elementName: string, groupName: string = 'TestGroup', dataTypeName: string = 'Textstring', dataTypeId: string, isMandatory: boolean = false) {\n await this.ensureNameNotExists(elementName);\n \n const crypto = require('crypto');\n const containerId = crypto.randomUUID();\n \n const documentType = new DocumentTypeBuilder()\n .withName(elementName)\n .withAlias(AliasHelper.toAlias(elementName))\n .withIsElement(true)\n .addContainer()\n .withName(groupName)\n .withId(containerId)\n .withType(\"Group\")\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(dataTypeName))\n .withName(dataTypeName)\n .withDataTypeId(dataTypeId)\n .withMandatory(isMandatory)\n .done()\n .build();\n return await this.create(documentType);\n }\n\n async createDefaultElementTypeWithVaryByCulture(elementName: string, groupName: string = 'TestGroup', dataTypeName: string = 'Textstring', dataTypeId: string, elementTypeVaryByCulture: boolean, dataTypeVaryByCulture: boolean) {\n await this.ensureNameNotExists(elementName);\n\n const crypto = require('crypto');\n const containerId = crypto.randomUUID();\n\n const documentType = new DocumentTypeBuilder()\n .withName(elementName)\n .withAlias(AliasHelper.toAlias(elementName))\n .withIsElement(true)\n .withVariesByCulture(elementTypeVaryByCulture)\n .addContainer()\n .withName(groupName)\n .withId(containerId)\n .withType(\"Group\")\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(dataTypeName))\n .withName(dataTypeName)\n .withDataTypeId(dataTypeId)\n .withVariesByCulture(dataTypeVaryByCulture)\n .done()\n .build();\n return await this.create(documentType);\n }\n \n async createElementTypeWithRegexValidation(elementName: string, groupName: string = 'TestGroup', dataTypeName: string = 'Textstring', dataTypeId: string, regex: string) {\n await this.ensureNameNotExists(elementName);\n \n const crypto = require('crypto');\n const containerId = crypto.randomUUID();\n \n const documentType = new DocumentTypeBuilder()\n .withName(elementName)\n .withAlias(AliasHelper.toAlias(elementName))\n .withIsElement(true)\n .addContainer()\n .withName(groupName)\n .withId(containerId)\n .withType(\"Group\")\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(dataTypeName))\n .withName(dataTypeName)\n .withDataTypeId(dataTypeId)\n .withRegEx(regex)\n .done()\n .build();\n return await this.create(documentType);\n }\n \n async doesGroupContainCorrectPropertyEditor(documentTypeName: string, dataTypeName: string, dataTypeId: string, groupName: string) {\n const documentType = await this.getByName(documentTypeName);\n const group = documentType.containers.find(x => x.name === groupName);\n // Check if group is defined\n if (group) {\n // Check if the document type properties include the specified property, and it belongs to the group\n return documentType.properties.find(x => x.name === dataTypeName && x.dataType.id === dataTypeId && x.container.id === group.id);\n } else {\n // Group not found\n return false;\n }\n }\n\n async doesTabContainCorrectPropertyEditorInGroup(documentTypeName: string, dataTypeName: string, dataTypeId: string, tabName: string, groupName: string) {\n const documentType = await this.getByName(documentTypeName);\n const tab = documentType.containers.find(x => x.name === tabName);\n // Check if tab is defined\n if (tab) {\n const group = documentType.containers.find(x => x.name === groupName && x.parent.id === tab.id);\n // Check if group is defined\n if (group) {\n // Check if the document type properties include the specified property, and it belongs to the group\n return documentType.properties.find(x => x.name === dataTypeName && x.dataType.id === dataTypeId && x.container.id === group.id);\n } else {\n // Group not found\n return false;\n }\n } else {\n // Tab not found\n return false;\n }\n }\n \n async doesDocumentTypeGroupNameContainCorrectSortOrder(documentTypeName: string, groupName: string, sortOrder: number) {\n const documentType = await this.getByName(documentTypeName);\n const group = documentType.containers.find(x => x.name === groupName);\n // Check if group is defined\n if (group) {\n return group.sortOrder === sortOrder;\n } else {\n // Group not found\n return false;\n }\n }\n \n async doesDocumentTypeTabNameContainCorrectSortOrder(documentTypeName: string, tabName: string, sortOrder: number) {\n const documentType = await this.getByName(documentTypeName);\n const tab = documentType.containers.find(x => x.name === tabName);\n // Check if tab is defined\n if (tab) {\n return tab.sortOrder === sortOrder;\n } else {\n // Tab not found\n return false;\n }\n }\n \n async getContainerIdWithName(documentTypeName: string, containerName: string) {\n const documentType = await this.getByName(documentTypeName);\n const container = documentType.containers.find(x => x.name === containerName);\n if (container) {\n return container.id;\n } else {\n return null;\n }\n }\n\n async createDocumentTypeWithAllowedTwoChildNodes(documentTypeName: string, allowedChildNodeOneId: string, allowedChildNodeTwoId: string) {\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(true)\n .addAllowedDocumentType()\n .withId(allowedChildNodeOneId)\n .done()\n .addAllowedDocumentType()\n .withId(allowedChildNodeTwoId)\n .done()\n .build();\n return await this.create(documentType);\n }\n \n async createDocumentTypeWithAllowedChildNodeAndDataType(documentTypeName: string, allowedChildNodeId: string, dataTypeName: string, dataTypeId: string, groupName: string = \"TestGroup\") {\n const crypto = require('crypto');\n const containerId = crypto.randomUUID();\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(true)\n .addContainer()\n .withName(groupName)\n .withId(containerId)\n .withType(\"Group\")\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(dataTypeName))\n .withName(dataTypeName)\n .withDataTypeId(dataTypeId)\n .done()\n .addAllowedDocumentType()\n .withId(allowedChildNodeId)\n .done()\n .build();\n return await this.create(documentType);\n }\n\n async createDocumentTypeWithAllowedChildNodeAndCollectionId(documentTypeName: string, allowedChildNodeId: string, collectionId: string) {\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(true)\n .addAllowedDocumentType()\n .withId(allowedChildNodeId)\n .done()\n .withCollectionId(collectionId)\n .build();\n return await this.create(documentType);\n }\n\n async createDocumentTypeWithCollectionId(documentTypeName: string, collectionId: string) {\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(true)\n .withCollectionId(collectionId)\n .build();\n return await this.create(documentType);\n }\n\n async createDocumentTypeWithAllowVaryByCulture(documentTypeName: string) {\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(true)\n .withVariesByCulture(true)\n .build();\n return await this.create(documentType);\n }\n\n async createDocumentTypeWithPropertyEditorAndAllowedTemplate(documentTypeName: string, dataTypeId: string, propertyName: string, templateId: string) {\n const crypto = require('crypto');\n const containerId = crypto.randomUUID();\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(true)\n .addContainer()\n .withName('TestGroup')\n .withId(containerId)\n .withType('Group')\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(propertyName))\n .withName(propertyName)\n .withDataTypeId(dataTypeId)\n .done()\n .addAllowedTemplateId()\n .withId(templateId)\n .done()\n .withDefaultTemplateId(templateId)\n .build();\n \n return await this.create(documentType);\n }\n\n async createVariantDocumentTypeWithInvariantPropertyEditor(documentTypeName: string, dataTypeName: string, dataTypeId: string) {\n const crypto = require('crypto');\n const containerId = crypto.randomUUID();\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(true)\n .addContainer()\n .withName('TestGroup')\n .withId(containerId)\n .withType(\"Group\")\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(dataTypeName))\n .withName(dataTypeName)\n .withDataTypeId(dataTypeId)\n .withVariesByCulture(false)\n .done()\n .withVariesByCulture(true)\n .build();\n\n return await this.create(documentType);\n }\n\n async createVariantDocumentTypeWithAllowedChildNodeAndInvariantPropertyEditor(documentTypeName: string, allowedChildNodeId: string, dataTypeName: string, dataTypeId: string, groupName: string = \"TestGroup\") {\n const crypto = require('crypto');\n const containerId = crypto.randomUUID();\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(true)\n .addContainer()\n .withName(groupName)\n .withId(containerId)\n .withType(\"Group\")\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(dataTypeName))\n .withName(dataTypeName)\n .withDataTypeId(dataTypeId)\n .withVariesByCulture(false)\n .done()\n .addAllowedDocumentType()\n .withId(allowedChildNodeId)\n .done()\n .withVariesByCulture(true)\n .build();\n \n return await this.create(documentType);\n }\n\n async getPropertyIdWithName(documentTypeId: string, propertyName: string) {\n const documentTypeData = await this.get(documentTypeId);\n const property = documentTypeData.properties.find(x => x.name === propertyName);\n if (property) {\n return property.id;\n } else {\n return null;\n }\n }\n}"]}
|
|
1
|
+
{"version":3,"file":"DocumentTypeApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/DocumentTypeApiHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import {ApiHelpers} from \"./ApiHelpers\";\nimport {DocumentTypeBuilder} from \"@umbraco/json-models-builders\";\nimport {AliasHelper} from \"./AliasHelper\";\n\nexport class DocumentTypeApiHelper {\n api: ApiHelpers\n\n constructor(api: ApiHelpers) {\n this.api = api;\n }\n\n async ensureNameNotExists(name: string) {\n const rootDocumentTypes = await this.getAllAtRoot();\n const jsonDocumentTypes = await rootDocumentTypes.json();\n\n for (const documentType of jsonDocumentTypes.items) {\n if (documentType.name === name) {\n if (documentType.isFolder) {\n return await this.recurseDeleteChildren(documentType);\n }\n return await this.delete(documentType.id);\n } else if (documentType.hasChildren) {\n await this.recurseChildren(name, documentType.id, true);\n }\n }\n return null;\n }\n\n async getAllAtRoot() {\n return await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/document-type/root?skip=0&take=10000&foldersOnly=false');\n }\n\n private async recurseChildren(name: string, id: string, toDelete: boolean) {\n const items = await this.getChildren(id);\n\n for (const child of items) {\n if (child.name === name) {\n if (!toDelete) {\n if (child.isFolder) {\n return await this.getFolder(child.id);\n }\n return await this.get(child.id);\n }\n if (child.isFolder) {\n return await this.recurseDeleteChildren(child);\n }\n return await this.delete(child.id);\n } else if (child.hasChildren) {\n return await this.recurseChildren(name, child.id, toDelete);\n }\n }\n return false;\n }\n\n private async recurseDeleteChildren(documentTypeFolder) {\n if (!documentTypeFolder.hasChildren) {\n return await this.deleteFolder(documentTypeFolder.id);\n }\n const items = await this.getChildren(documentTypeFolder.id);\n\n for (const child of items) {\n if (child.hasChildren) {\n await this.recurseDeleteChildren(child);\n } else if (child.isFolder) {\n await this.deleteFolder(child.id);\n } else {\n await this.delete(child.id);\n }\n }\n return await this.deleteFolder(documentTypeFolder.id);\n }\n\n async getChildren(id: string) {\n const response = await this.api.get(`${this.api.baseUrl}/umbraco/management/api/v1/tree/document-type/children?parentId=${id}&skip=0&take=10000&foldersOnly=false`);\n const items = await response.json();\n return items.items;\n }\n\n async create(documentType) {\n if (documentType == null) {\n return;\n }\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/document-type', documentType);\n return response.headers().location.split(\"/\").pop();\n }\n\n async get(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/document-type/' + id);\n const json = await response.json();\n if (json !== null) {\n return json;\n }\n return null;\n }\n\n async getByName(name: string) {\n const rootDocumentTypes = await this.getAllAtRoot();\n const jsonDocumentTypes = await rootDocumentTypes.json();\n\n for (const documentType of jsonDocumentTypes.items) {\n if (documentType.name === name) {\n if (documentType.isFolder) {\n return this.getFolder(documentType.id);\n }\n return this.get(documentType.id);\n } else if (documentType.hasChildren) {\n const result = await this.recurseChildren(name, documentType.id, false);\n if (result) {\n return result;\n }\n }\n }\n return false;\n }\n\n async doesNameExist(name: string) {\n return await this.getByName(name);\n }\n\n async delete(id: string) {\n if (id == null) {\n return;\n }\n const response = await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/document-type/' + id);\n return response.status();\n }\n\n // FOLDER\n async getFolder(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/document-type/folder/' + id);\n return await response.json();\n }\n\n async deleteFolder(id: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/document-type/folder/' + id);\n }\n\n async createFolder(name: string, parentId?: string) {\n const folder = {\n name: name,\n parent: parentId ? {id: parentId} : null\n\n }\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/document-type/folder', folder);\n return response.headers().location.split(\"/\").pop();\n }\n\n async renameFolder(folderId: string, folderName: string) {\n const folder = {\n name: folderName\n }\n return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/document-type/folder/' + folderId, folder);\n }\n\n async createDefaultDocumentType(documentTypeName: string) {\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .build();\n return await this.create(documentType);\n }\n\n async createDocumentTypeWithPropertyEditor(documentTypeName: string, dataTypeName: string, dataTypeId: string, groupName: string = \"TestGroup\", documentTypeVaryByCulture: boolean = false, propertyVaryByCulture: boolean = false, isMandatory: boolean = false) {\n const crypto = require('crypto');\n const containerId = crypto.randomUUID();\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(true)\n .addContainer()\n .withName(groupName)\n .withId(containerId)\n .withType(\"Group\")\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(dataTypeName))\n .withName(dataTypeName)\n .withDataTypeId(dataTypeId)\n .withVariesByCulture(propertyVaryByCulture)\n .withMandatory(isMandatory)\n .done()\n .withVariesByCulture(documentTypeVaryByCulture)\n .build();\n return await this.create(documentType);\n }\n\n async createDocumentTypeWithPropertyEditorAndTwoGroups(documentTypeName: string, firstPropertyName: string, firstDataTypeId: string, firstGroupName: string = \"TestGroup\", secondPropertyName: string, secondDataTypeId: string, secondGroupName: string = \"SecondGroup\") {\n const crypto = require('crypto');\n const firstContainerId = crypto.randomUUID();\n const secondContainerId = crypto.randomUUID();\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(true)\n .addContainer()\n .withName(firstGroupName)\n .withId(firstContainerId)\n .withType(\"Group\")\n .done()\n .addProperty()\n .withContainerId(firstContainerId)\n .withAlias(AliasHelper.toAlias(firstPropertyName))\n .withName(firstPropertyName)\n .withDataTypeId(firstDataTypeId)\n .done()\n .addContainer()\n .withName(secondGroupName)\n .withId(secondContainerId)\n .withType(\"Group\")\n .done()\n .addProperty()\n .withContainerId(secondContainerId)\n .withAlias(AliasHelper.toAlias(secondPropertyName))\n .withName(secondPropertyName)\n .withDataTypeId(secondDataTypeId)\n .done()\n .build();\n return await this.create(documentType);\n }\n\n async createDocumentTypeWithPropertyEditorInTab(documentTypeName: string, dataTypeName: string, dataTypeId: string, tabName: string, groupName: string = \"TestGroup\", varyByCulture: boolean = false) {\n const crypto = require('crypto');\n const tabId = crypto.randomUUID();\n const groupId = crypto.randomUUID();\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .addContainer()\n .withName(tabName)\n .withId(tabId)\n .withType(\"Tab\")\n .done()\n .addContainer()\n .withName(groupName)\n .withId(groupId)\n .withType(\"Group\")\n .withParentId(tabId)\n .done()\n .addProperty()\n .withContainerId(groupId)\n .withAlias(AliasHelper.toAlias(dataTypeName))\n .withName(dataTypeName)\n .withDataTypeId(dataTypeId)\n .done()\n .withVariesByCulture(varyByCulture)\n .build();\n return await this.create(documentType);\n }\n\n async createDocumentTypeWithTwoPropertyEditors(documentTypeName: string, dataTypeNameOne: string, dataTypeIdOne: string, dataTypeNameTwo: string, dataTypeIdTwo: string, groupName: string = \"TestGroup\") {\n const crypto = require('crypto');\n const containerId = crypto.randomUUID();\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(true)\n .addContainer()\n .withName(groupName)\n .withId(containerId)\n .withType(\"Group\")\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(dataTypeNameOne))\n .withName(dataTypeNameOne)\n .withDataTypeId(dataTypeIdOne)\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(dataTypeNameTwo))\n .withName(dataTypeNameTwo)\n .withDataTypeId(dataTypeIdTwo)\n .done()\n .build();\n return await this.create(documentType);\n }\n\n async createDefaultDocumentTypeWithAllowAsRoot(documentTypeName: string) {\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(true)\n .build();\n return await this.create(documentType);\n }\n\n async createDocumentTypeWithAllowedChildNode(documentTypeName: string, allowedChildNodeId: string) {\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(true)\n .addAllowedDocumentType()\n .withId(allowedChildNodeId)\n .done()\n .build();\n return await this.create(documentType);\n }\n\n async createDocumentTypeWithAPropertyEditorAndAnAllowedChildNode(documentTypeName: string, dataTypeName: string, dataTypeId: string, allowedChildNodeId: string, groupName: string = \"TestGroup\") {\n await this.ensureNameNotExists(documentTypeName);\n const crypto = require('crypto');\n const containerId = crypto.randomUUID();\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(true)\n .addContainer()\n .withName(groupName)\n .withId(containerId)\n .withType(\"Group\")\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(dataTypeName))\n .withName(dataTypeName)\n .withDataTypeId(dataTypeId)\n .done()\n .addAllowedDocumentType()\n .withId(allowedChildNodeId)\n .done()\n .build();\n return await this.create(documentType);\n }\n\n\n async createDocumentTypeWithAllowedTemplate(documentTypeName: string, allowedTemplateId: string, isAllowedAsRoot:boolean = false) {\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(isAllowedAsRoot)\n .addAllowedTemplateId()\n .withId(allowedTemplateId)\n .done()\n .withDefaultTemplateId(allowedTemplateId)\n .build();\n return await this.create(documentType);\n }\n\n async createDocumentTypeWithTwoAllowedTemplates(documentTypeName: string, allowedTemplateOneId: string, allowedTemplateTwoId: string, isAllowedAsRoot: boolean = false, defaultTemplateId?: string) {\n await this.ensureNameNotExists(documentTypeName);\n const defaultTemplate = defaultTemplateId === undefined ? allowedTemplateOneId : defaultTemplateId;\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(isAllowedAsRoot)\n .addAllowedTemplateId()\n .withId(allowedTemplateOneId)\n .done()\n .addAllowedTemplateId()\n .withId(allowedTemplateTwoId)\n .done()\n .withDefaultTemplateId(defaultTemplate)\n .build();\n return await this.create(documentType);\n }\n \n async createDocumentTypeWithTwoGroups(documentTypeName: string,dataType: string, dataTypeId: string, groupNameOne: string, groupNameTwo: string) {\n const crypto = require('crypto');\n const groupOneId = crypto.randomUUID();\n const groupTwoId = crypto.randomUUID();\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .addContainer()\n .withName(groupNameOne)\n .withId(groupOneId)\n .withType(\"Group\")\n .withSortOrder(0)\n .done()\n .addContainer()\n .withName(groupNameTwo)\n .withId(groupTwoId)\n .withType(\"Group\")\n .withSortOrder(1)\n .done()\n .addProperty()\n .withContainerId(groupOneId)\n .withAlias(AliasHelper.toAlias(dataType + \"One\"))\n .withName(dataType + \"One\")\n .withDataTypeId(dataTypeId)\n .done()\n .addProperty()\n .withContainerId(groupTwoId)\n .withAlias(AliasHelper.toAlias(dataType + \"Two\"))\n .withName(dataType + \"Two\")\n .withDataTypeId(dataTypeId)\n .done()\n .build();\n return await this.create(documentType);\n }\n \n async createDocumentTypeWithAComposition(documentTypeName: string, compositionId: string) {\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .addComposition()\n .withDocumentTypeId(compositionId)\n .done()\n .build();\n return await this.create(documentType);\n }\n\n async createEmptyElementType(elementTypeName: string) {\n await this.ensureNameNotExists(elementTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(elementTypeName)\n .withAlias(AliasHelper.toAlias(elementTypeName))\n .withIsElement(true)\n .withIcon(\"icon-plugin\")\n .build();\n return await this.create(documentType);\n }\n \n async createDocumentTypeWithTwoTabs(documentTypeName: string, dataType: string, dataTypeId: string, tabNameOne: string, tabNameTwo: string) {\n const crypto = require('crypto');\n const tabOneId = crypto.randomUUID();\n const tabTwoId = crypto.randomUUID();\n const groupOneId = crypto.randomUUID();\n const groupTwoId = crypto.randomUUID();\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .addContainer()\n .withName(tabNameOne)\n .withId(tabOneId)\n .withType(\"Tab\")\n .withSortOrder(0)\n .done()\n .addContainer()\n .withName(tabNameTwo)\n .withId(tabTwoId)\n .withType(\"Tab\")\n .withSortOrder(1)\n .done()\n .addContainer()\n .withName(\"GroupTestOne\")\n .withId(groupOneId)\n .withType(\"Group\")\n .withParentId(tabOneId)\n .done()\n .addProperty()\n .withContainerId(groupOneId)\n .withAlias(AliasHelper.toAlias(dataType + \"One\"))\n .withName(dataType + \"One\")\n .withDataTypeId(dataTypeId)\n .done()\n .addContainer()\n .withName(\"GroupTestTwo\")\n .withId(groupTwoId)\n .withType(\"Group\")\n .withParentId(tabTwoId)\n .done()\n .addProperty()\n .withContainerId(groupTwoId)\n .withAlias(AliasHelper.toAlias(dataType + \"Two\"))\n .withName(dataType + \"Two\")\n .withDataTypeId(dataTypeId)\n .done()\n .build();\n return await this.create(documentType);\n }\n\n async createDefaultElementType(elementName: string, groupName: string = 'TestGroup', dataTypeName: string = 'Textstring', dataTypeId: string, isMandatory: boolean = false) {\n await this.ensureNameNotExists(elementName);\n \n const crypto = require('crypto');\n const containerId = crypto.randomUUID();\n \n const documentType = new DocumentTypeBuilder()\n .withName(elementName)\n .withAlias(AliasHelper.toAlias(elementName))\n .withIsElement(true)\n .addContainer()\n .withName(groupName)\n .withId(containerId)\n .withType(\"Group\")\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(dataTypeName))\n .withName(dataTypeName)\n .withDataTypeId(dataTypeId)\n .withMandatory(isMandatory)\n .done()\n .build();\n return await this.create(documentType);\n }\n\n async createDefaultElementTypeWithVaryByCulture(elementName: string, groupName: string = 'TestGroup', dataTypeName: string = 'Textstring', dataTypeId: string, elementTypeVaryByCulture: boolean, dataTypeVaryByCulture: boolean) {\n await this.ensureNameNotExists(elementName);\n\n const crypto = require('crypto');\n const containerId = crypto.randomUUID();\n\n const documentType = new DocumentTypeBuilder()\n .withName(elementName)\n .withAlias(AliasHelper.toAlias(elementName))\n .withIsElement(true)\n .withVariesByCulture(elementTypeVaryByCulture)\n .addContainer()\n .withName(groupName)\n .withId(containerId)\n .withType(\"Group\")\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(dataTypeName))\n .withName(dataTypeName)\n .withDataTypeId(dataTypeId)\n .withVariesByCulture(dataTypeVaryByCulture)\n .done()\n .build();\n return await this.create(documentType);\n }\n \n async createElementTypeWithRegexValidation(elementName: string, groupName: string = 'TestGroup', dataTypeName: string = 'Textstring', dataTypeId: string, regex: string) {\n await this.ensureNameNotExists(elementName);\n \n const crypto = require('crypto');\n const containerId = crypto.randomUUID();\n \n const documentType = new DocumentTypeBuilder()\n .withName(elementName)\n .withAlias(AliasHelper.toAlias(elementName))\n .withIsElement(true)\n .addContainer()\n .withName(groupName)\n .withId(containerId)\n .withType(\"Group\")\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(dataTypeName))\n .withName(dataTypeName)\n .withDataTypeId(dataTypeId)\n .withRegEx(regex)\n .done()\n .build();\n return await this.create(documentType);\n }\n \n async doesGroupContainCorrectPropertyEditor(documentTypeName: string, dataTypeName: string, dataTypeId: string, groupName: string) {\n const documentType = await this.getByName(documentTypeName);\n const group = documentType.containers.find(x => x.name === groupName);\n // Check if group is defined\n if (group) {\n // Check if the document type properties include the specified property, and it belongs to the group\n return documentType.properties.find(x => x.name === dataTypeName && x.dataType.id === dataTypeId && x.container.id === group.id);\n } else {\n // Group not found\n return false;\n }\n }\n\n async doesTabContainCorrectPropertyEditorInGroup(documentTypeName: string, dataTypeName: string, dataTypeId: string, tabName: string, groupName: string) {\n const documentType = await this.getByName(documentTypeName);\n const tab = documentType.containers.find(x => x.name === tabName);\n // Check if tab is defined\n if (tab) {\n const group = documentType.containers.find(x => x.name === groupName && x.parent.id === tab.id);\n // Check if group is defined\n if (group) {\n // Check if the document type properties include the specified property, and it belongs to the group\n return documentType.properties.find(x => x.name === dataTypeName && x.dataType.id === dataTypeId && x.container.id === group.id);\n } else {\n // Group not found\n return false;\n }\n } else {\n // Tab not found\n return false;\n }\n }\n \n async doesDocumentTypeGroupNameContainCorrectSortOrder(documentTypeName: string, groupName: string, sortOrder: number) {\n const documentType = await this.getByName(documentTypeName);\n const group = documentType.containers.find(x => x.name === groupName);\n // Check if group is defined\n if (group) {\n return group.sortOrder === sortOrder;\n } else {\n // Group not found\n return false;\n }\n }\n \n async doesDocumentTypeTabNameContainCorrectSortOrder(documentTypeName: string, tabName: string, sortOrder: number) {\n const documentType = await this.getByName(documentTypeName);\n const tab = documentType.containers.find(x => x.name === tabName);\n // Check if tab is defined\n if (tab) {\n return tab.sortOrder === sortOrder;\n } else {\n // Tab not found\n return false;\n }\n }\n \n async getContainerIdWithName(documentTypeName: string, containerName: string) {\n const documentType = await this.getByName(documentTypeName);\n const container = documentType.containers.find(x => x.name === containerName);\n if (container) {\n return container.id;\n } else {\n return null;\n }\n }\n\n async createDocumentTypeWithAllowedTwoChildNodes(documentTypeName: string, allowedChildNodeOneId: string, allowedChildNodeTwoId: string) {\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(true)\n .addAllowedDocumentType()\n .withId(allowedChildNodeOneId)\n .done()\n .addAllowedDocumentType()\n .withId(allowedChildNodeTwoId)\n .done()\n .build();\n return await this.create(documentType);\n }\n \n async createDocumentTypeWithAllowedChildNodeAndDataType(documentTypeName: string, allowedChildNodeId: string, dataTypeName: string, dataTypeId: string, groupName: string = \"TestGroup\") {\n const crypto = require('crypto');\n const containerId = crypto.randomUUID();\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(true)\n .addContainer()\n .withName(groupName)\n .withId(containerId)\n .withType(\"Group\")\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(dataTypeName))\n .withName(dataTypeName)\n .withDataTypeId(dataTypeId)\n .done()\n .addAllowedDocumentType()\n .withId(allowedChildNodeId)\n .done()\n .build();\n return await this.create(documentType);\n }\n\n async createDocumentTypeWithAllowedChildNodeAndCollectionId(documentTypeName: string, allowedChildNodeId: string, collectionId: string) {\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(true)\n .addAllowedDocumentType()\n .withId(allowedChildNodeId)\n .done()\n .withCollectionId(collectionId)\n .build();\n return await this.create(documentType);\n }\n\n async createDocumentTypeWithCollectionId(documentTypeName: string, collectionId: string) {\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(true)\n .withCollectionId(collectionId)\n .build();\n return await this.create(documentType);\n }\n\n async createDocumentTypeWithAllowVaryByCulture(documentTypeName: string) {\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(true)\n .withVariesByCulture(true)\n .build();\n return await this.create(documentType);\n }\n\n async createDocumentTypeWithPropertyEditorAndAllowedTemplate(documentTypeName: string, dataTypeId: string, propertyName: string, templateId: string) {\n const crypto = require('crypto');\n const containerId = crypto.randomUUID();\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(true)\n .addContainer()\n .withName('TestGroup')\n .withId(containerId)\n .withType('Group')\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(propertyName))\n .withName(propertyName)\n .withDataTypeId(dataTypeId)\n .done()\n .addAllowedTemplateId()\n .withId(templateId)\n .done()\n .withDefaultTemplateId(templateId)\n .build();\n \n return await this.create(documentType);\n }\n\n async createVariantDocumentTypeWithInvariantPropertyEditor(documentTypeName: string, dataTypeName: string, dataTypeId: string) {\n const crypto = require('crypto');\n const containerId = crypto.randomUUID();\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(true)\n .addContainer()\n .withName('TestGroup')\n .withId(containerId)\n .withType(\"Group\")\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(dataTypeName))\n .withName(dataTypeName)\n .withDataTypeId(dataTypeId)\n .withVariesByCulture(false)\n .done()\n .withVariesByCulture(true)\n .build();\n\n return await this.create(documentType);\n }\n\n async createVariantDocumentTypeWithAllowedChildNodeAndInvariantPropertyEditor(documentTypeName: string, allowedChildNodeId: string, dataTypeName: string, dataTypeId: string, groupName: string = \"TestGroup\") {\n const crypto = require('crypto');\n const containerId = crypto.randomUUID();\n await this.ensureNameNotExists(documentTypeName);\n\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(true)\n .addContainer()\n .withName(groupName)\n .withId(containerId)\n .withType(\"Group\")\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(dataTypeName))\n .withName(dataTypeName)\n .withDataTypeId(dataTypeId)\n .withVariesByCulture(false)\n .done()\n .addAllowedDocumentType()\n .withId(allowedChildNodeId)\n .done()\n .withVariesByCulture(true)\n .build();\n \n return await this.create(documentType);\n }\n\n async getPropertyIdWithName(documentTypeId: string, propertyName: string) {\n const documentTypeData = await this.get(documentTypeId);\n const property = documentTypeData.properties.find(x => x.name === propertyName);\n if (property) {\n return property.id;\n } else {\n return null;\n }\n }\n\n async createElementTypeWithTwoPropertyEditors(elementTypeName: string, firstDataTypeName: string, firstDataTypeId: string, secondDataTypeName: string, secondDataTypeId: string, elementTypeVaryByCulture: boolean = false, firstPropertyVaryByCulture: boolean = false, secondPropertyVaryByCulture: boolean = false) {\n const crypto = require('crypto');\n await this.ensureNameNotExists(elementTypeName);\n\n const containerId = crypto.randomUUID();\n const elementType = new DocumentTypeBuilder()\n .withName(elementTypeName)\n .withAlias(AliasHelper.toAlias(elementTypeName))\n .withIsElement(true)\n .withVariesByCulture(elementTypeVaryByCulture)\n .withIcon(\"icon-plugin\")\n .addContainer()\n .withName('Content')\n .withId(containerId)\n .withType(\"Group\")\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(firstDataTypeName))\n .withName(firstDataTypeName)\n .withDataTypeId(firstDataTypeId)\n .withVariesByCulture(firstPropertyVaryByCulture)\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(secondDataTypeName))\n .withName(secondDataTypeName)\n .withDataTypeId(secondDataTypeId)\n .withVariesByCulture(secondPropertyVaryByCulture)\n .done()\n .build();\n\n return await this.create(elementType);\n }\n\n /**\n * Creates a document type with variant and invariant block lists for testing multilingual scenarios.\n *\n * Structure created:\n * - Document Type (Vary by culture)\n * - Text 1 (Vary by culture)\n * - Text 2 (Shared)\n * - Block List 1 (Vary by culture) - contains Block 1 and Block 2\n * - Block List 2 (Shared) - contains Block 1 and Block 2\n *\n * - Block 1 Element Type (Vary by culture)\n * - Text 1 (Vary by culture)\n * - Text 2 (Shared)\n *\n * - Block 2 Element Type (Shared/Invariant)\n * - Text 1\n * - Text 2\n */\n async createDocumentTypeWithVariantAndInvariantBlockLists(documentTypeName: string, firstDataTypeName: string, firstDataTypeId: string, secondDataTypeName: string, secondDataTypeId: string, blockList1DataTypeName: string, blockList2DataTypeName: string, block1ElementTypeName: string, block2ElementTypeName: string) {\n const crypto = require('crypto');\n await this.ensureNameNotExists(documentTypeName);\n\n // Create Block 1 Element Type (Vary by culture) with first property (vary by culture) and second property (shared)\n const block1ElementTypeId = await this.createElementTypeWithTwoPropertyEditors(block1ElementTypeName, firstDataTypeName, firstDataTypeId, secondDataTypeName, secondDataTypeId, true, true, false) as string;\n\n // Create Block 2 Element Type (Shared/Invariant) with first property and second property\n const block2ElementTypeId = await this.createElementTypeWithTwoPropertyEditors(block2ElementTypeName, firstDataTypeName, firstDataTypeId, secondDataTypeName, secondDataTypeId, false, false, false) as string;\n\n // Create Block List 1 Data Type (will be used with vary by culture property)\n const blockList1DataTypeId = await this.api.dataType.createBlockListDataTypeWithTwoBlocks(blockList1DataTypeName, block1ElementTypeId, block2ElementTypeId) as string;\n\n // Create Block List 2 Data Type (will be used with shared property)\n const blockList2DataTypeId = await this.api.dataType.createBlockListDataTypeWithTwoBlocks(blockList2DataTypeName, block1ElementTypeId, block2ElementTypeId) as string;\n\n // Create Document Type (Vary by culture)\n const containerId = crypto.randomUUID();\n const documentType = new DocumentTypeBuilder()\n .withName(documentTypeName)\n .withAlias(AliasHelper.toAlias(documentTypeName))\n .withAllowedAsRoot(true)\n .withVariesByCulture(true)\n .addContainer()\n .withName('Content')\n .withId(containerId)\n .withType(\"Group\")\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(firstDataTypeName))\n .withName(firstDataTypeName)\n .withDataTypeId(firstDataTypeId)\n .withVariesByCulture(true)\n .withSortOrder(0)\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(secondDataTypeName))\n .withName(secondDataTypeName)\n .withDataTypeId(secondDataTypeId)\n .withVariesByCulture(false)\n .withSortOrder(1)\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(blockList1DataTypeName))\n .withName(blockList1DataTypeName)\n .withDataTypeId(blockList1DataTypeId)\n .withVariesByCulture(true)\n .withSortOrder(2)\n .done()\n .addProperty()\n .withContainerId(containerId)\n .withAlias(AliasHelper.toAlias(blockList2DataTypeName))\n .withName(blockList2DataTypeName)\n .withDataTypeId(blockList2DataTypeId)\n .withVariesByCulture(false)\n .withSortOrder(3)\n .done()\n .build();\n\n return await this.create(documentType);\n }\n}"]}
|