mcdev 7.0.3 → 7.1.0
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/.github/ISSUE_TEMPLATE/bug.yml +2 -0
- package/.github/PULL_REQUEST_TEMPLATE/pr_template_release.md +1 -0
- package/.github/workflows/code-test.yml +48 -0
- package/.husky/post-checkout +1 -1
- package/.husky/post-merge +7 -1
- package/.husky/pre-commit +3 -1
- package/@types/lib/Builder.d.ts +13 -13
- package/@types/lib/Builder.d.ts.map +1 -1
- package/@types/lib/Deployer.d.ts +19 -16
- package/@types/lib/Deployer.d.ts.map +1 -1
- package/@types/lib/Retriever.d.ts +15 -15
- package/@types/lib/Retriever.d.ts.map +1 -1
- package/@types/lib/cli.d.ts +1 -1
- package/@types/lib/cli.d.ts.map +1 -1
- package/@types/lib/index.d.ts +102 -51
- package/@types/lib/index.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Asset.d.ts +71 -59
- package/@types/lib/metadataTypes/Asset.d.ts.map +1 -1
- package/@types/lib/metadataTypes/AttributeGroup.d.ts +6 -8
- package/@types/lib/metadataTypes/AttributeGroup.d.ts.map +1 -1
- package/@types/lib/metadataTypes/AttributeSet.d.ts +10 -21
- package/@types/lib/metadataTypes/AttributeSet.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Automation.d.ts +47 -49
- package/@types/lib/metadataTypes/Automation.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Campaign.d.ts +12 -18
- package/@types/lib/metadataTypes/Campaign.d.ts.map +1 -1
- package/@types/lib/metadataTypes/ContentArea.d.ts +13 -31
- package/@types/lib/metadataTypes/ContentArea.d.ts.map +1 -1
- package/@types/lib/metadataTypes/DataExtension.d.ts +28 -33
- package/@types/lib/metadataTypes/DataExtension.d.ts.map +1 -1
- package/@types/lib/metadataTypes/DataExtensionField.d.ts +15 -22
- package/@types/lib/metadataTypes/DataExtensionField.d.ts.map +1 -1
- package/@types/lib/metadataTypes/DataExtensionTemplate.d.ts +12 -11
- package/@types/lib/metadataTypes/DataExtensionTemplate.d.ts.map +1 -1
- package/@types/lib/metadataTypes/DataExtract.d.ts +13 -28
- package/@types/lib/metadataTypes/DataExtract.d.ts.map +1 -1
- package/@types/lib/metadataTypes/DataExtractType.d.ts +11 -10
- package/@types/lib/metadataTypes/DataExtractType.d.ts.map +1 -1
- package/@types/lib/metadataTypes/DeliveryProfile.d.ts +11 -10
- package/@types/lib/metadataTypes/DeliveryProfile.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Discovery.d.ts +11 -10
- package/@types/lib/metadataTypes/Discovery.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Email.d.ts +14 -34
- package/@types/lib/metadataTypes/Email.d.ts.map +1 -1
- package/@types/lib/metadataTypes/EmailSend.d.ts +18 -10
- package/@types/lib/metadataTypes/EmailSend.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Event.d.ts +22 -16
- package/@types/lib/metadataTypes/Event.d.ts.map +1 -1
- package/@types/lib/metadataTypes/FileLocation.d.ts +11 -10
- package/@types/lib/metadataTypes/FileLocation.d.ts.map +1 -1
- package/@types/lib/metadataTypes/FileTransfer.d.ts +12 -18
- package/@types/lib/metadataTypes/FileTransfer.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Filter.d.ts +11 -10
- package/@types/lib/metadataTypes/Filter.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Folder.d.ts +49 -35
- package/@types/lib/metadataTypes/Folder.d.ts.map +1 -1
- package/@types/lib/metadataTypes/ImportFile.d.ts +16 -15
- package/@types/lib/metadataTypes/ImportFile.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Journey.d.ts +55 -35
- package/@types/lib/metadataTypes/Journey.d.ts.map +1 -1
- package/@types/lib/metadataTypes/List.d.ts +13 -12
- package/@types/lib/metadataTypes/List.d.ts.map +1 -1
- package/@types/lib/metadataTypes/MetadataType.d.ts +73 -26
- package/@types/lib/metadataTypes/MetadataType.d.ts.map +1 -1
- package/@types/lib/metadataTypes/MobileCode.d.ts +12 -20
- package/@types/lib/metadataTypes/MobileCode.d.ts.map +1 -1
- package/@types/lib/metadataTypes/MobileKeyword.d.ts +23 -14
- package/@types/lib/metadataTypes/MobileKeyword.d.ts.map +1 -1
- package/@types/lib/metadataTypes/MobileMessage.d.ts +18 -42
- package/@types/lib/metadataTypes/MobileMessage.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Query.d.ts +15 -12
- package/@types/lib/metadataTypes/Query.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Role.d.ts +12 -11
- package/@types/lib/metadataTypes/Role.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Script.d.ts +18 -25
- package/@types/lib/metadataTypes/Script.d.ts.map +1 -1
- package/@types/lib/metadataTypes/SendClassification.d.ts +13 -10
- package/@types/lib/metadataTypes/SendClassification.d.ts.map +1 -1
- package/@types/lib/metadataTypes/SenderProfile.d.ts +12 -25
- package/@types/lib/metadataTypes/SenderProfile.d.ts.map +1 -1
- package/@types/lib/metadataTypes/TransactionalEmail.d.ts +18 -12
- package/@types/lib/metadataTypes/TransactionalEmail.d.ts.map +1 -1
- package/@types/lib/metadataTypes/TransactionalMessage.d.ts +12 -32
- package/@types/lib/metadataTypes/TransactionalMessage.d.ts.map +1 -1
- package/@types/lib/metadataTypes/TransactionalPush.d.ts +15 -21
- package/@types/lib/metadataTypes/TransactionalPush.d.ts.map +1 -1
- package/@types/lib/metadataTypes/TransactionalSMS.d.ts +16 -18
- package/@types/lib/metadataTypes/TransactionalSMS.d.ts.map +1 -1
- package/@types/lib/metadataTypes/TriggeredSend.d.ts +19 -24
- package/@types/lib/metadataTypes/TriggeredSend.d.ts.map +1 -1
- package/@types/lib/metadataTypes/User.d.ts +23 -40
- package/@types/lib/metadataTypes/User.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Verification.d.ts +16 -13
- package/@types/lib/metadataTypes/Verification.d.ts.map +1 -1
- package/@types/lib/metadataTypes/definitions/Asset.definition.d.ts +24 -14
- package/@types/lib/metadataTypes/definitions/AttributeGroup.definition.d.ts +3 -0
- package/@types/lib/metadataTypes/definitions/AttributeSet.definition.d.ts +5 -0
- package/@types/lib/metadataTypes/definitions/Automation.definition.d.ts +16 -0
- package/@types/lib/metadataTypes/definitions/Campaign.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/ContentArea.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/DataExtension.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/DataExtensionField.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/DataExtensionTemplate.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/DataExtract.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/DataExtractType.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/DeliveryProfile.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/Discovery.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/Email.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/EmailSend.definition.d.ts +8 -0
- package/@types/lib/metadataTypes/definitions/Event.definition.d.ts +10 -1
- package/@types/lib/metadataTypes/definitions/FileLocation.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/FileTransfer.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/Filter.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/Folder.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/ImportFile.definition.d.ts +5 -0
- package/@types/lib/metadataTypes/definitions/Journey.definition.d.ts +13 -0
- package/@types/lib/metadataTypes/definitions/List.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/MobileCode.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/MobileKeyword.definition.d.ts +9 -0
- package/@types/lib/metadataTypes/definitions/MobileMessage.definition.d.ts +4 -0
- package/@types/lib/metadataTypes/definitions/Query.definition.d.ts +3 -0
- package/@types/lib/metadataTypes/definitions/Role.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/Script.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/SendClassification.definition.d.ts +3 -0
- package/@types/lib/metadataTypes/definitions/SenderProfile.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/TransactionalEmail.definition.d.ts +6 -0
- package/@types/lib/metadataTypes/definitions/TransactionalMessage.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/TransactionalPush.definition.d.ts +3 -0
- package/@types/lib/metadataTypes/definitions/TransactionalSMS.definition.d.ts +4 -0
- package/@types/lib/metadataTypes/definitions/TriggeredSend.definition.d.ts +6 -0
- package/@types/lib/metadataTypes/definitions/User.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/Verification.definition.d.ts +3 -0
- package/@types/lib/util/auth.d.ts +19 -18
- package/@types/lib/util/auth.d.ts.map +1 -1
- package/@types/lib/util/businessUnit.d.ts +17 -17
- package/@types/lib/util/businessUnit.d.ts.map +1 -1
- package/@types/lib/util/cache.d.ts +34 -32
- package/@types/lib/util/cache.d.ts.map +1 -1
- package/@types/lib/util/cli.d.ts +30 -33
- package/@types/lib/util/cli.d.ts.map +1 -1
- package/@types/lib/util/config.d.ts +20 -20
- package/@types/lib/util/config.d.ts.map +1 -1
- package/@types/lib/util/devops.d.ts +21 -21
- package/@types/lib/util/devops.d.ts.map +1 -1
- package/@types/lib/util/file.d.ts +179 -18
- package/@types/lib/util/file.d.ts.map +1 -1
- package/@types/lib/util/init.config.d.ts +19 -19
- package/@types/lib/util/init.config.d.ts.map +1 -1
- package/@types/lib/util/init.d.ts +20 -20
- package/@types/lib/util/init.d.ts.map +1 -1
- package/@types/lib/util/init.git.d.ts +2 -2
- package/@types/lib/util/init.git.d.ts.map +1 -1
- package/@types/lib/util/init.npm.d.ts +2 -2
- package/@types/lib/util/init.npm.d.ts.map +1 -1
- package/@types/lib/util/replaceContentBlockReference.d.ts +55 -32
- package/@types/lib/util/replaceContentBlockReference.d.ts.map +1 -1
- package/@types/lib/util/util.d.ts +64 -39
- package/@types/lib/util/util.d.ts.map +1 -1
- package/@types/types/mcdev.d.d.ts +160 -52
- package/@types/types/mcdev.d.d.ts.map +1 -1
- package/boilerplate/files/.vscode/settings.json +1 -0
- package/boilerplate/forcedUpdates.json +4 -0
- package/boilerplate/gitignore-template +0 -1
- package/eslint.config.js +0 -1
- package/lib/Builder.js +13 -8
- package/lib/Deployer.js +13 -8
- package/lib/Retriever.js +4 -1
- package/lib/cli.js +384 -288
- package/lib/index.js +620 -241
- package/lib/metadataTypes/Asset.js +455 -209
- package/lib/metadataTypes/Automation.js +34 -0
- package/lib/metadataTypes/DataExtension.js +36 -31
- package/lib/metadataTypes/DataExtensionField.js +2 -3
- package/lib/metadataTypes/Event.js +227 -37
- package/lib/metadataTypes/Folder.js +64 -49
- package/lib/metadataTypes/Journey.js +340 -58
- package/lib/metadataTypes/MetadataType.js +272 -61
- package/lib/metadataTypes/MobileKeyword.js +12 -1
- package/lib/metadataTypes/Role.js +9 -7
- package/lib/metadataTypes/Script.js +4 -3
- package/lib/metadataTypes/SenderProfile.js +18 -5
- package/lib/metadataTypes/TransactionalEmail.js +2 -2
- package/lib/metadataTypes/TriggeredSend.js +21 -5
- package/lib/metadataTypes/User.js +31 -27
- package/lib/metadataTypes/definitions/Asset.definition.js +10 -2
- package/lib/metadataTypes/definitions/AttributeGroup.definition.js +1 -0
- package/lib/metadataTypes/definitions/AttributeSet.definition.js +11 -0
- package/lib/metadataTypes/definitions/Automation.definition.js +9 -0
- package/lib/metadataTypes/definitions/Campaign.definition.js +1 -0
- package/lib/metadataTypes/definitions/ContentArea.definition.js +1 -0
- package/lib/metadataTypes/definitions/DataExtension.definition.js +1 -0
- package/lib/metadataTypes/definitions/DataExtensionField.definition.js +1 -0
- package/lib/metadataTypes/definitions/DataExtensionTemplate.definition.js +1 -0
- package/lib/metadataTypes/definitions/DataExtract.definition.js +2 -1
- package/lib/metadataTypes/definitions/DataExtractType.definition.js +1 -0
- package/lib/metadataTypes/definitions/DeliveryProfile.definition.js +1 -0
- package/lib/metadataTypes/definitions/Discovery.definition.js +1 -0
- package/lib/metadataTypes/definitions/Email.definition.js +1 -0
- package/lib/metadataTypes/definitions/EmailSend.definition.js +8 -0
- package/lib/metadataTypes/definitions/Event.definition.js +9 -8
- package/lib/metadataTypes/definitions/FileLocation.definition.js +1 -0
- package/lib/metadataTypes/definitions/FileTransfer.definition.js +4 -0
- package/lib/metadataTypes/definitions/Filter.definition.js +1 -0
- package/lib/metadataTypes/definitions/Folder.definition.js +10 -8
- package/lib/metadataTypes/definitions/ImportFile.definition.js +8 -1
- package/lib/metadataTypes/definitions/Journey.definition.js +28 -0
- package/lib/metadataTypes/definitions/List.definition.js +1 -0
- package/lib/metadataTypes/definitions/MobileCode.definition.js +1 -0
- package/lib/metadataTypes/definitions/MobileKeyword.definition.js +7 -0
- package/lib/metadataTypes/definitions/MobileMessage.definition.js +9 -0
- package/lib/metadataTypes/definitions/Query.definition.js +3 -0
- package/lib/metadataTypes/definitions/Role.definition.js +1 -0
- package/lib/metadataTypes/definitions/Script.definition.js +1 -0
- package/lib/metadataTypes/definitions/SendClassification.definition.js +4 -0
- package/lib/metadataTypes/definitions/SenderProfile.definition.js +1 -0
- package/lib/metadataTypes/definitions/TransactionalEmail.definition.js +7 -0
- package/lib/metadataTypes/definitions/TransactionalMessage.definition.js +1 -0
- package/lib/metadataTypes/definitions/TransactionalPush.definition.js +3 -0
- package/lib/metadataTypes/definitions/TransactionalSMS.definition.js +4 -0
- package/lib/metadataTypes/definitions/TriggeredSend.definition.js +10 -3
- package/lib/metadataTypes/definitions/User.definition.js +3 -0
- package/lib/metadataTypes/definitions/Verification.definition.js +1 -0
- package/lib/util/auth.js +0 -1
- package/lib/util/cache.js +35 -0
- package/lib/util/cli.js +96 -140
- package/lib/util/config.js +11 -19
- package/lib/util/devops.js +42 -43
- package/lib/util/file.js +7 -10
- package/lib/util/init.config.js +6 -10
- package/lib/util/init.git.js +43 -57
- package/lib/util/init.js +35 -59
- package/lib/util/replaceContentBlockReference.js +110 -61
- package/lib/util/util.js +90 -4
- package/package.json +22 -19
- package/test/general.test.js +1144 -172
- package/test/mockRoot/.mcdevrc.json +1 -1
- package/test/mockRoot/deploy/testInstance/testBU/event/testExisting_event.event-meta.json +201 -0
- package/test/mockRoot/deploy/testInstance/testBU/event/testNew_event_withExistingDE.event-meta.json +233 -0
- package/test/mockRoot/deploy/testInstance/testBU/event/testNew_event_withSchema.event-meta.json +194 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileKeyword/4912312345678.TESTNEW_KEYWORD.mobileKeyword-meta.json +1 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileKeyword/4912312345678.TESTNEW_KEYWORD_BLOCKED.mobileKeyword-meta.json +1 -0
- package/test/resourceFactory.js +43 -11
- package/test/resources/1111111/dataFolder/retrieve-ContentTypeINshared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml +364 -0
- package/test/resources/9999999/asset/{block-1157-retrieve-expected.html → build-asset_htmlblock-expected.html} +1 -1
- package/test/resources/9999999/asset/build-asset_htmlblock-expected.json +29 -0
- package/test/resources/9999999/asset/build-templatebasedemail-expected.json +65 -0
- package/test/resources/9999999/asset/resolveId-1295064-noPath-expected.json +3 -3
- package/test/resources/9999999/asset/resolveId-1295064-withPath-expected.json +3 -3
- package/test/resources/9999999/asset/retrieve-templatebasedemail-expected.json +65 -0
- package/test/resources/9999999/asset/template-emailTemplate-expected.json +20 -0
- package/test/resources/9999999/asset/template-templatebasedemail-expected.json +65 -0
- package/test/resources/9999999/asset/template-testExisting_asset_htmlblock-expected.json +29 -0
- package/test/resources/9999999/asset/testExisting_asset_htmlblock-retrieve-expected.html +23 -0
- package/test/resources/9999999/asset/{block-1157-retrieve-expected.json → testExisting_asset_htmlblock-retrieve-expected.json} +3 -3
- package/test/resources/9999999/asset/testExisting_asset_message-html-rcb-key-expected.html +6 -6
- package/test/resources/9999999/asset/testExisting_asset_message-preheader-rcb-id-expected.amp +1 -1
- package/test/resources/9999999/asset/testExisting_asset_message-preheader-rcb-key-expected.amp +4 -4
- package/test/resources/9999999/asset/testExisting_asset_message-preheader-rcb-name-expected.amp +1 -1
- package/test/resources/9999999/asset/testExisting_asset_message-text-rcb-key-expected.amp +4 -4
- package/test/resources/9999999/asset/v1/content/assets/1295064/get-response.json +4 -4
- package/test/resources/9999999/asset/v1/content/assets/1295065/get-response.json +60 -0
- package/test/resources/9999999/asset/v1/content/assets/1295066/get-response.json +60 -0
- package/test/resources/9999999/asset/v1/content/assets/5289/get-response.json +75 -0
- package/test/resources/9999999/asset/v1/content/assets/808714/get-response.json +3 -3
- package/test/resources/9999999/asset/v1/content/assets/950143/get-response.json +97 -0
- package/test/resources/9999999/asset/v1/content/assets/get-response-customerKey=testExisting_asset.json +1 -1
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN195,196,197,198,199,200,201,202,203,210,211,212,213,3.json +78 -2
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN205,206,230,232,1,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,14,193,194,15,195,196,197,198,199,200,201,202,203,210,211,212,213,3,207,208,209,5,214,4,215,216.json +370 -0
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN205,206,230,232,1,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,14,193,194,15,195,196,197,198,199,200,201,202,203,210,211,212,213,3,215,216,217,218,219,220,221,222.json +243 -0
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN205,206,230,232,1,207,208,209,5.json +229 -0
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN205,206,230,232,1.json +98 -1
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN217,218,219,220,221,222,223,224,225,226,227,228.json +7 -0
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN223,224,225,226,227,228,214,4.json +35 -0
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN223,224,225,226,227,228.json +7 -0
- package/test/resources/9999999/asset/v1/content/assets/query/{post-response-customerKey=mcdev-issue-1157.json → post-response-customerKey=testExisting_asset_htmlblock.json} +2 -2
- package/test/resources/9999999/automation/v1/queries/get-response-Name=testExisting_query.json +24 -0
- package/test/resources/9999999/automation/v1/scripts/get-response-name=testExisting_script.json +17 -0
- package/test/resources/9999999/automation/v1/scripts/get-response.json +2 -2
- package/test/resources/9999999/dataExtension/retrieve-CustomerKey=testNew_event_withSchema-response.xml +50 -0
- package/test/resources/9999999/dataExtension/retrieve-createdViaEvent-response.xml +50 -0
- package/test/resources/9999999/dataExtension/retrieve-response.xml +48 -0
- package/test/resources/9999999/dataExtension/retrieve_event_withSchema-expected.json +219 -0
- package/test/resources/9999999/dataExtension/update-afterCreatedViaEvent-response.xml +55 -0
- package/test/resources/9999999/dataExtension/update-callout-afterCreatedViaEvent-expected.xml +1 -0
- package/test/resources/9999999/dataExtensionField/retrieve-DataExtension.CustomerKey=testNew_event_withSchema-response.xml +461 -0
- package/test/resources/9999999/dataExtensionField/retrieve-DataExtension.CustomerKeyINtestExisting_dataExtension,testNew_dataExtension-response.xml +133 -0
- package/test/resources/9999999/dataExtensionField/retrieve-response.xml +870 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentType=asset-shared-QAA-response.xml +70 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentType=asset-shared-response.xml +70 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentType=journey-response.xml +48 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINasset,asset-sha,automatio,dataexten,hidden,journey,list,mysubs,publicati,queryacti,salesforc,shared_da,shared_da,shared_sa,ssjsactiv,synchroni,triggered,triggered,useriniti-response.xml +519 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINasset,asset-sha,dataexten,salesforc,shared_da,shared_da,shared_sa,synchroni,automatio,useriniti,journey,mysubs,list,publicati,queryacti,ssjsactiv,triggered,triggered-response.xml +519 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINasset,asset-shared,journey-response.xml +92 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINasset,asset-shared,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-QAA-response.xml +115 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINasset,asset-shared,ssjsactivity-response.xml +92 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINasset,asset-shared-QAA-response.xml +70 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINasset-shared,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-QAA-response.xml +431 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINautomations,queryactivity-response.xml +70 -0
- package/test/resources/9999999/dataFolder/{retrieve-response.xml → retrieve-ContentTypeINdataextension,hidden,queryactivity,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml} +32 -119
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINdataextension,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-QAA-response.xml +117 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINhidden,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml +46 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINshared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-QAA-response.xml +251 -0
- package/test/resources/9999999/dataFolder/retrieve-response-.xml +519 -0
- package/test/resources/9999999/event/build-expected.json +227 -0
- package/test/resources/9999999/event/get-expected.json +234 -0
- package/test/resources/9999999/event/post_withExistingDE-callout-expected.json +20 -0
- package/test/resources/9999999/event/post_withExistingDE-expected.json +23 -0
- package/test/resources/9999999/event/post_withSchema-callout-expected.json +199 -0
- package/test/resources/9999999/event/post_withSchema-expected.json +234 -0
- package/test/resources/9999999/event/put-callout-expected.json +204 -0
- package/test/resources/9999999/event/put-expected.json +233 -0
- package/test/resources/9999999/event/template-expected.json +227 -0
- package/test/resources/9999999/interaction/v1/eventDefinitions/get-response.json +252 -2
- package/test/resources/9999999/interaction/v1/eventDefinitions/key_testExisting_event/delete-response.txt +0 -0
- package/test/resources/9999999/interaction/v1/eventDefinitions/key_testExisting_event/put-response.json +242 -0
- package/test/resources/9999999/interaction/v1/eventDefinitions/post_withExistingDE-response.json +28 -0
- package/test/resources/9999999/interaction/v1/eventDefinitions/post_withSchema-response.json +243 -0
- package/test/resources/9999999/interaction/v1/interactions/0175b971-71a3-4d8e-98ac-48121f3fbf4f/delete-response.txt +1 -0
- package/test/resources/9999999/interaction/v1/interactions/3c3f4112-9b43-43ca-8a89-aa0375b2c1a2/get-response.json +4 -4
- package/test/resources/9999999/interaction/v1/interactions/key_testExisting_journey_Quicksend/get-response.json +4 -4
- package/test/resources/9999999/interaction/v1/interactions/publishAsync/3c3f4112-9b43-43ca-8a89-aa0375b2c1a2/post-response.json +4 -0
- package/test/resources/9999999/interaction/v1/interactions/publishStatus/45f06c0a-3ed2-48b2-a6a8-b5119253f01c/get-response-failed.json +34 -0
- package/test/resources/9999999/interaction/v1/interactions/publishStatus/45f06c0a-3ed2-48b2-a6a8-b5119253f01c/get-response-success.json +5 -0
- package/test/resources/9999999/interaction/v1/interactions/publishStatus/45f06c0a-3ed2-48b2-a6a8-b5119253f01c/get-response-successWarnings.json +36 -0
- package/test/resources/9999999/journey/build-expected.json +5 -5
- package/test/resources/9999999/journey/get-multistep-expected.json +1 -1
- package/test/resources/9999999/journey/get-quicksend-expected.json +5 -5
- package/test/resources/9999999/journey/get-quicksend-rcb-id-expected.json +1 -1
- package/test/resources/9999999/journey/get-quicksend-rcb-key-expected.json +7 -7
- package/test/resources/9999999/journey/get-quicksend-rcb-name-expected.json +1 -1
- package/test/resources/9999999/journey/post-expected.json +1 -1
- package/test/resources/9999999/journey/publish-callout-expected.json +1 -0
- package/test/resources/9999999/journey/put-expected.json +1 -1
- package/test/resources/9999999/journey/template-expected.json +5 -5
- package/test/resources/9999999/mobileKeyword/build-expected.json +1 -0
- package/test/resources/9999999/mobileKeyword/get-expected.json +1 -0
- package/test/resources/9999999/mobileKeyword/post-create-expected.json +1 -0
- package/test/resources/9999999/mobileKeyword/template-expected.json +1 -0
- package/test/resources/{1111111/accountUser/retrieve-CustomerKey=testExisting_userANDActiveFlag=trueANDEmailisNullORNamelikeapp userANDMustChangePassword=false-response.xml → 9999999/queryDefinition/retrieve-CustomerKey=badANDStatus=Active-response.xml} +10 -11
- package/test/resources/9999999/script/get_ampincluded-rcb-key-expected.html +2 -2
- package/test/resources/9999999/script/get_ampscript-expected.html +1 -0
- package/test/resources/9999999/script/get_ampscript-rcb-id-expected.html +1 -0
- package/test/resources/9999999/script/get_ampscript-rcb-key-expected.html +3 -2
- package/test/resources/9999999/script/get_ampscript-rcb-name-expected.html +3 -0
- package/test/resources/9999999/script/get_mixed-expected.html +2 -2
- package/test/resources/9999999/script/get_mixed-rcb-key-expected.html +2 -2
- package/test/resources/9999999/senderProfile/get-rcb-key-expected.json +4 -4
- package/test/resources/9999999/senderProfile/retrieve-response.xml +1 -1
- package/test/resources/9999999/triggeredSend/get-rcb-key-expected.json +4 -4
- package/test/resources/9999999/triggeredSendDefinition/retrieve-TriggeredSendStatusINNew,Active,Inactive,Moved,Canceled-response.xml +1 -1
- package/test/type.asset.test.js +189 -42
- package/test/type.automation.test.js +135 -59
- package/test/type.dataExtension.test.js +4 -4
- package/test/type.dataExtract.test.js +4 -4
- package/test/type.emailSend.test.js +3 -3
- package/test/type.event.test.js +286 -7
- package/test/type.journey.test.js +335 -9
- package/test/type.query.test.js +33 -29
- package/test/type.script.test.js +61 -11
- package/test/type.senderProfile.test.js +36 -3
- package/test/type.transactionalEmail.test.js +3 -3
- package/test/type.triggeredSend.test.js +75 -6
- package/test/type.user.test.js +1 -1
- package/test/utils.js +31 -9
- package/tsconfig.json +6 -1
- package/{jsconfig.json → tsconfig.npmScripts.json} +1 -1
- package/tsconfig.precommit.json +26 -0
- package/types/mcdev.d.js +39 -14
- /package/test/resources/1111111/accountUser/{retrieve-ActiveFlag=falseANDCustomerKey=testExisting_userANDEmaillike@-response.xml → retrieve-ActiveFlag=falseANDCustomerKey=testExisting_userANDEmaillike@-QAA-response.xml} +0 -0
- /package/test/resources/1111111/accountUser/{retrieve-ActiveFlag=falseANDEmaillike@-response.xml → retrieve-ActiveFlag=falseANDEmaillike@-QAA-response.xml} +0 -0
- /package/test/resources/1111111/accountUser/{retrieve-ActiveFlag=trueANDCustomerKey=testExisting_userANDEmaillike@-response.xml → retrieve-ActiveFlag=trueANDCustomerKey=testExisting_userANDEmaillike@-QAA-response.xml} +0 -0
- /package/test/resources/1111111/accountUser/{retrieve-ActiveFlag=trueANDEmailisNullORNamelikeapp userANDMustChangePassword=false-response.xml → retrieve-ActiveFlag=trueANDEmailisNullORNamelikeapp userANDMustChangePassword=false-QAA-response.xml} +0 -0
- /package/test/resources/1111111/accountUser/{retrieve-ActiveFlag=trueANDEmaillike@-response.xml → retrieve-ActiveFlag=trueANDEmaillike@-QAA-response.xml} +0 -0
- /package/test/resources/1111111/businessUnit/{retrieve-ID=1111111-response.xml → retrieve-ID=1111111-QAA-response.xml} +0 -0
- /package/test/resources/1111111/dataFolder/{retrieve-ContentType=synchronizeddataextensionORContentType=shared_salesforcedataextensionORContentType=shared_dataextensionORContentType=shared_dataORContentType=salesforcedataextensionORContentType=dataextensionORContentType=hidden-response.xml → retrieve-ContentTypeINdataextension,hidden,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml} +0 -0
- /package/test/resources/1111111/dataFolder/{retrieve-response.xml → retrieve-response-.xml} +0 -0
- /package/test/resources/9999999/dataFolder/{retrieve-ContentType=asset-sharedORContentType=asset-response.xml → retrieve-ContentTypeINasset,asset-shared-response.xml} +0 -0
- /package/test/resources/9999999/dataFolder/{retrieve-ContentType=contextual_suppression_listORContentType=publicationORContentType=suppression_listORContentType=mysubsORContentType=list-response.xml → retrieve-ContentTypeINcontextual_suppression_list,list,mysubs,publication,suppression_list-response.xml} +0 -0
- /package/test/resources/9999999/dataFolder/{retrieve-ContentType=synchronizeddataextensionORContentType=shared_salesforcedataextensionORContentType=shared_dataextensionORContentType=shared_dataORContentType=salesforcedataextensionORContentType=dataextensionORContentType=hidden-response.xml → retrieve-ContentTypeINdataextension,hidden,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml} +0 -0
- /package/test/resources/9999999/dataFolder/{retrieve-ContentType=triggered_send_journeybuilderORContentType=triggered_sendORContentType=hidden-response.xml → retrieve-ContentTypeINhidden,triggered_send,triggered_send_journeybuilder-response.xml} +0 -0
package/test/general.test.js
CHANGED
|
@@ -61,7 +61,7 @@ describe('GENERAL', () => {
|
|
|
61
61
|
|
|
62
62
|
assert.equal(
|
|
63
63
|
testUtils.getAPIHistoryLength(),
|
|
64
|
-
|
|
64
|
+
36,
|
|
65
65
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
66
66
|
);
|
|
67
67
|
return;
|
|
@@ -110,7 +110,7 @@ describe('GENERAL', () => {
|
|
|
110
110
|
|
|
111
111
|
assert.equal(
|
|
112
112
|
testUtils.getAPIHistoryLength(),
|
|
113
|
-
|
|
113
|
+
36,
|
|
114
114
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
115
115
|
);
|
|
116
116
|
return;
|
|
@@ -159,7 +159,7 @@ describe('GENERAL', () => {
|
|
|
159
159
|
|
|
160
160
|
assert.equal(
|
|
161
161
|
testUtils.getAPIHistoryLength(),
|
|
162
|
-
|
|
162
|
+
36,
|
|
163
163
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
164
164
|
);
|
|
165
165
|
return;
|
|
@@ -181,7 +181,11 @@ describe('GENERAL', () => {
|
|
|
181
181
|
// retrieve result
|
|
182
182
|
assert.deepEqual(
|
|
183
183
|
replace['testInstance/testBU'].asset,
|
|
184
|
-
[
|
|
184
|
+
[
|
|
185
|
+
'testExisting_asset_htmlblock',
|
|
186
|
+
'testExisting_htmlblock1',
|
|
187
|
+
'testExisting_asset_message',
|
|
188
|
+
],
|
|
185
189
|
'should have found the right assets that need updating'
|
|
186
190
|
);
|
|
187
191
|
assert.deepEqual(
|
|
@@ -191,7 +195,11 @@ describe('GENERAL', () => {
|
|
|
191
195
|
);
|
|
192
196
|
assert.deepEqual(
|
|
193
197
|
replace['testInstance/testBU'].script,
|
|
194
|
-
[
|
|
198
|
+
[
|
|
199
|
+
'testExisting_script_ampscript',
|
|
200
|
+
'testExisting_script_ampincluded',
|
|
201
|
+
'testExisting_script_mixed',
|
|
202
|
+
],
|
|
195
203
|
'should have found the right scripts that need updating'
|
|
196
204
|
);
|
|
197
205
|
assert.deepEqual(
|
|
@@ -222,7 +230,7 @@ describe('GENERAL', () => {
|
|
|
222
230
|
|
|
223
231
|
assert.equal(
|
|
224
232
|
testUtils.getAPIHistoryLength(),
|
|
225
|
-
|
|
233
|
+
83,
|
|
226
234
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
227
235
|
);
|
|
228
236
|
return;
|
|
@@ -283,7 +291,7 @@ describe('GENERAL', () => {
|
|
|
283
291
|
|
|
284
292
|
assert.equal(
|
|
285
293
|
testUtils.getAPIHistoryLength(),
|
|
286
|
-
|
|
294
|
+
83,
|
|
287
295
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
288
296
|
);
|
|
289
297
|
return;
|
|
@@ -303,7 +311,11 @@ describe('GENERAL', () => {
|
|
|
303
311
|
// retrieve result
|
|
304
312
|
assert.deepEqual(
|
|
305
313
|
replace['testInstance/testBU'].asset,
|
|
306
|
-
[
|
|
314
|
+
[
|
|
315
|
+
'testExisting_asset_htmlblock',
|
|
316
|
+
'testExisting_htmlblock1',
|
|
317
|
+
'testExisting_asset_message',
|
|
318
|
+
],
|
|
307
319
|
'should have found the right assets that need updating'
|
|
308
320
|
);
|
|
309
321
|
assert.deepEqual(
|
|
@@ -344,7 +356,7 @@ describe('GENERAL', () => {
|
|
|
344
356
|
|
|
345
357
|
assert.equal(
|
|
346
358
|
testUtils.getAPIHistoryLength(),
|
|
347
|
-
|
|
359
|
+
83,
|
|
348
360
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
349
361
|
);
|
|
350
362
|
return;
|
|
@@ -376,7 +388,7 @@ describe('GENERAL', () => {
|
|
|
376
388
|
);
|
|
377
389
|
assert.equal(
|
|
378
390
|
testUtils.getAPIHistoryLength(),
|
|
379
|
-
|
|
391
|
+
3,
|
|
380
392
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
381
393
|
);
|
|
382
394
|
});
|
|
@@ -461,8 +473,8 @@ describe('GENERAL', () => {
|
|
|
461
473
|
);
|
|
462
474
|
assert.equal(
|
|
463
475
|
Object.keys(result[buName]['dataExtension']).length,
|
|
464
|
-
|
|
465
|
-
'retrieve should have returned
|
|
476
|
+
7,
|
|
477
|
+
'retrieve should have returned 7 dataExtension'
|
|
466
478
|
);
|
|
467
479
|
assert.equal(
|
|
468
480
|
Object.keys(result[buName]['dataExtract']).length,
|
|
@@ -510,7 +522,7 @@ describe('GENERAL', () => {
|
|
|
510
522
|
assert.equal(deployedTypes[0], 'dataExtract', 'deploy should have returned 1 type');
|
|
511
523
|
assert.equal(
|
|
512
524
|
testUtils.getAPIHistoryLength(),
|
|
513
|
-
|
|
525
|
+
5,
|
|
514
526
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
515
527
|
);
|
|
516
528
|
});
|
|
@@ -619,14 +631,79 @@ describe('GENERAL', () => {
|
|
|
619
631
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
620
632
|
);
|
|
621
633
|
});
|
|
634
|
+
|
|
635
|
+
it('deploy multiple type with keys and --noUpdate', async () => {
|
|
636
|
+
handler.setOptions({ noUpdate: true });
|
|
637
|
+
|
|
638
|
+
const argvMetadata = [
|
|
639
|
+
'dataExtension',
|
|
640
|
+
'dataExtract:wrong-key',
|
|
641
|
+
'senderProfile:testExisting_senderProfile',
|
|
642
|
+
'query:testExisting_query',
|
|
643
|
+
'query:key:wrong-key2',
|
|
644
|
+
];
|
|
645
|
+
const typeKeyCombo = handler.metadataToTypeKey(argvMetadata);
|
|
646
|
+
assert.notEqual(
|
|
647
|
+
typeof typeKeyCombo,
|
|
648
|
+
'undefined',
|
|
649
|
+
'typeKeyCombo should not be undefined'
|
|
650
|
+
);
|
|
651
|
+
const buName = 'testInstance/testBU';
|
|
652
|
+
const result = await handler.deploy(buName, typeKeyCombo);
|
|
653
|
+
// THEN
|
|
654
|
+
assert.equal(process.exitCode, 0, 'deploy should not have thrown an error');
|
|
655
|
+
|
|
656
|
+
const deployedTypes = Object.keys(result[buName]);
|
|
657
|
+
assert.equal(deployedTypes.length, 3, 'deploy should have returned 3 types');
|
|
658
|
+
assert.equal(
|
|
659
|
+
deployedTypes.includes('dataExtension'),
|
|
660
|
+
true,
|
|
661
|
+
'deploy should have returned dataExtension'
|
|
662
|
+
);
|
|
663
|
+
assert.equal(
|
|
664
|
+
deployedTypes.includes('dataExtract'),
|
|
665
|
+
false,
|
|
666
|
+
'deploy should have returned dataExtract'
|
|
667
|
+
);
|
|
668
|
+
assert.equal(
|
|
669
|
+
deployedTypes.includes('senderProfile'),
|
|
670
|
+
true,
|
|
671
|
+
'deploy should have returned senderProfile'
|
|
672
|
+
);
|
|
673
|
+
assert.equal(
|
|
674
|
+
deployedTypes.includes('query'),
|
|
675
|
+
true,
|
|
676
|
+
'deploy should have returned query'
|
|
677
|
+
);
|
|
678
|
+
assert.equal(
|
|
679
|
+
Object.keys(result[buName]['dataExtension']).length,
|
|
680
|
+
1,
|
|
681
|
+
'deploy should have returned 1 dataExtension'
|
|
682
|
+
);
|
|
683
|
+
assert.equal(
|
|
684
|
+
Object.keys(result[buName]['senderProfile']).length,
|
|
685
|
+
0,
|
|
686
|
+
'deploy should have returned 0 senderProfile'
|
|
687
|
+
);
|
|
688
|
+
assert.equal(
|
|
689
|
+
Object.keys(result[buName]['query']).length,
|
|
690
|
+
0,
|
|
691
|
+
'deploy should have returned 0 query'
|
|
692
|
+
);
|
|
693
|
+
assert.equal(
|
|
694
|
+
testUtils.getAPIHistoryLength(),
|
|
695
|
+
12,
|
|
696
|
+
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
697
|
+
);
|
|
698
|
+
});
|
|
622
699
|
});
|
|
623
700
|
|
|
624
701
|
describe('template --metadata ~~~', () => {
|
|
625
|
-
it('buildDefinition
|
|
702
|
+
it('buildTemplate + buildDefinition for multiple types with keys', async () => {
|
|
626
703
|
// download first before we test buildTemplate
|
|
627
704
|
await handler.retrieve('testInstance/testBU', ['automation', 'query']);
|
|
628
705
|
|
|
629
|
-
const expectedApiCallsRetrieve =
|
|
706
|
+
const expectedApiCallsRetrieve = 24;
|
|
630
707
|
assert.equal(
|
|
631
708
|
testUtils.getAPIHistoryLength(),
|
|
632
709
|
expectedApiCallsRetrieve,
|
|
@@ -730,16 +807,8 @@ describe('GENERAL', () => {
|
|
|
730
807
|
);
|
|
731
808
|
});
|
|
732
809
|
|
|
733
|
-
it('
|
|
734
|
-
|
|
735
|
-
await handler.retrieve('testInstance/testBU', ['automation', 'query']);
|
|
736
|
-
|
|
737
|
-
const expectedApiCallsRetrieve = 25;
|
|
738
|
-
assert.equal(
|
|
739
|
-
testUtils.getAPIHistoryLength(),
|
|
740
|
-
expectedApiCallsRetrieve,
|
|
741
|
-
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
742
|
-
);
|
|
810
|
+
it('buildTemplate + buildDefinition for multiple types with keys and --retrieve', async () => {
|
|
811
|
+
const expectedApiCallsRetrieve = 27;
|
|
743
812
|
|
|
744
813
|
// preparation
|
|
745
814
|
const argvMetadata = [
|
|
@@ -755,25 +824,33 @@ describe('GENERAL', () => {
|
|
|
755
824
|
);
|
|
756
825
|
const buName = 'testInstance/testBU';
|
|
757
826
|
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
827
|
+
handler.setOptions({ retrieve: true });
|
|
828
|
+
|
|
829
|
+
// *** buildTemplate ***
|
|
830
|
+
const templateResult = await handler.buildTemplate(
|
|
761
831
|
buName,
|
|
762
832
|
typeKeyCombo,
|
|
763
|
-
|
|
764
|
-
'
|
|
833
|
+
undefined,
|
|
834
|
+
'testSourceMarket'
|
|
765
835
|
);
|
|
766
|
-
assert.equal(process.exitCode, 0, '
|
|
767
|
-
|
|
768
|
-
// *** buildTemplate ***
|
|
769
|
-
|
|
836
|
+
assert.equal(process.exitCode, 0, 'buildTemplate should not have thrown an error');
|
|
770
837
|
// check automation
|
|
838
|
+
assert.equal(
|
|
839
|
+
templateResult.automation ? Object.keys(templateResult.automation).length : 0,
|
|
840
|
+
1,
|
|
841
|
+
'only one automation expected'
|
|
842
|
+
);
|
|
771
843
|
assert.deepEqual(
|
|
772
844
|
await testUtils.getActualTemplateJson('testExisting_automation', 'automation'),
|
|
773
845
|
await testUtils.getExpectedJson('9999999', 'automation', 'template'),
|
|
774
846
|
'returned template was not equal expected'
|
|
775
847
|
);
|
|
776
848
|
// check query
|
|
849
|
+
assert.equal(
|
|
850
|
+
templateResult.query ? Object.keys(templateResult.query).length : 0,
|
|
851
|
+
1,
|
|
852
|
+
'only one query expected'
|
|
853
|
+
);
|
|
777
854
|
assert.deepEqual(
|
|
778
855
|
await testUtils.getActualTemplateJson('testExisting_query', 'query'),
|
|
779
856
|
await testUtils.getExpectedJson('9999999', 'query', 'template'),
|
|
@@ -784,6 +861,17 @@ describe('GENERAL', () => {
|
|
|
784
861
|
).to.equal(await testUtils.getExpectedFile('9999999', 'query', 'template', 'sql'));
|
|
785
862
|
|
|
786
863
|
// *** buildDefinition ***
|
|
864
|
+
const definitionResult = await handler.buildDefinition(
|
|
865
|
+
buName,
|
|
866
|
+
typeKeyCombo,
|
|
867
|
+
undefined,
|
|
868
|
+
'testTargetMarket'
|
|
869
|
+
);
|
|
870
|
+
assert.equal(
|
|
871
|
+
process.exitCode,
|
|
872
|
+
0,
|
|
873
|
+
'buildDefinition should not have thrown an error'
|
|
874
|
+
);
|
|
787
875
|
|
|
788
876
|
// check automation
|
|
789
877
|
assert.equal(
|
|
@@ -815,17 +903,17 @@ describe('GENERAL', () => {
|
|
|
815
903
|
).to.equal(await testUtils.getExpectedFile('9999999', 'query', 'build', 'sql'));
|
|
816
904
|
|
|
817
905
|
assert.equal(
|
|
818
|
-
testUtils.getAPIHistoryLength()
|
|
819
|
-
|
|
906
|
+
testUtils.getAPIHistoryLength(),
|
|
907
|
+
expectedApiCallsRetrieve,
|
|
820
908
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
821
909
|
);
|
|
822
910
|
});
|
|
823
911
|
|
|
824
|
-
it('
|
|
912
|
+
it('buildTemplate + buildDefinition for multiple types with keys and --dependencies', async () => {
|
|
825
913
|
// download first before we test buildTemplate
|
|
826
|
-
await handler.retrieve('testInstance/testBU'
|
|
914
|
+
await handler.retrieve('testInstance/testBU');
|
|
827
915
|
|
|
828
|
-
const expectedApiCallsRetrieve =
|
|
916
|
+
const expectedApiCallsRetrieve = 74;
|
|
829
917
|
assert.equal(
|
|
830
918
|
testUtils.getAPIHistoryLength(),
|
|
831
919
|
expectedApiCallsRetrieve,
|
|
@@ -846,26 +934,54 @@ describe('GENERAL', () => {
|
|
|
846
934
|
);
|
|
847
935
|
const buName = 'testInstance/testBU';
|
|
848
936
|
|
|
849
|
-
//
|
|
850
|
-
|
|
937
|
+
// set skipInteraction to true to skip re-retrieving question
|
|
938
|
+
handler.setOptions({ dependencies: true, skipInteraction: true });
|
|
939
|
+
|
|
940
|
+
// *** buildTemplate ***
|
|
941
|
+
const templateResult = await handler.buildTemplate(
|
|
851
942
|
buName,
|
|
852
|
-
'ignored',
|
|
853
943
|
typeKeyCombo,
|
|
854
|
-
|
|
855
|
-
'
|
|
856
|
-
true
|
|
944
|
+
undefined,
|
|
945
|
+
'testSourceMarket'
|
|
857
946
|
);
|
|
858
|
-
assert.equal(process.exitCode, 0, '
|
|
947
|
+
assert.equal(process.exitCode, 0, 'buildTemplate should not have thrown an error');
|
|
859
948
|
|
|
860
|
-
//
|
|
949
|
+
// check type list
|
|
950
|
+
assert.deepEqual(
|
|
951
|
+
Object.keys(templateResult),
|
|
952
|
+
[
|
|
953
|
+
'automation',
|
|
954
|
+
'query',
|
|
955
|
+
'dataExtract',
|
|
956
|
+
'emailSend',
|
|
957
|
+
'dataExtension',
|
|
958
|
+
'sendClassification',
|
|
959
|
+
'senderProfile',
|
|
960
|
+
'fileTransfer',
|
|
961
|
+
'importFile',
|
|
962
|
+
'script',
|
|
963
|
+
'verification',
|
|
964
|
+
],
|
|
965
|
+
'did not create deployment packages for all relevant types'
|
|
966
|
+
);
|
|
861
967
|
|
|
862
968
|
// check automation
|
|
969
|
+
assert.equal(
|
|
970
|
+
templateResult.automation ? Object.keys(templateResult.automation).length : 0,
|
|
971
|
+
1,
|
|
972
|
+
'only one automation expected'
|
|
973
|
+
);
|
|
863
974
|
assert.deepEqual(
|
|
864
975
|
await testUtils.getActualTemplateJson('testExisting_automation', 'automation'),
|
|
865
976
|
await testUtils.getExpectedJson('9999999', 'automation', 'template'),
|
|
866
977
|
'returned template was not equal expected'
|
|
867
978
|
);
|
|
868
979
|
// check query
|
|
980
|
+
assert.equal(
|
|
981
|
+
templateResult.query ? Object.keys(templateResult.query).length : 0,
|
|
982
|
+
1,
|
|
983
|
+
'only one query expected'
|
|
984
|
+
);
|
|
869
985
|
assert.deepEqual(
|
|
870
986
|
await testUtils.getActualTemplateJson('testExisting_query', 'query'),
|
|
871
987
|
await testUtils.getExpectedJson('9999999', 'query', 'template'),
|
|
@@ -875,33 +991,23 @@ describe('GENERAL', () => {
|
|
|
875
991
|
await testUtils.getActualTemplateFile('testExisting_query', 'query', 'sql')
|
|
876
992
|
).to.equal(await testUtils.getExpectedFile('9999999', 'query', 'template', 'sql'));
|
|
877
993
|
|
|
878
|
-
// ***
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
definitionResult.automation?.['testInstance/testBU']?.testSourceMarket
|
|
885
|
-
).length
|
|
886
|
-
: 0,
|
|
887
|
-
1,
|
|
888
|
-
'only one automation expected'
|
|
994
|
+
// *** buildDefinition ***
|
|
995
|
+
const definitionResult = await handler.buildDefinition(
|
|
996
|
+
buName,
|
|
997
|
+
typeKeyCombo,
|
|
998
|
+
undefined,
|
|
999
|
+
'testTargetMarket'
|
|
889
1000
|
);
|
|
890
1001
|
assert.equal(
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
).length
|
|
895
|
-
: 0,
|
|
896
|
-
1,
|
|
897
|
-
'only one automation expected'
|
|
1002
|
+
process.exitCode,
|
|
1003
|
+
0,
|
|
1004
|
+
'buildDefinition should not have thrown an error'
|
|
898
1005
|
);
|
|
1006
|
+
|
|
1007
|
+
// check automation
|
|
899
1008
|
assert.equal(
|
|
900
|
-
definitionResult.automation
|
|
901
|
-
? Object.keys(
|
|
902
|
-
definitionResult.automation?.['testInstance/_ParentBU_']
|
|
903
|
-
?.testTargetMarket
|
|
904
|
-
).length
|
|
1009
|
+
definitionResult.automation
|
|
1010
|
+
? Object.keys(definitionResult.automation).length
|
|
905
1011
|
: 0,
|
|
906
1012
|
1,
|
|
907
1013
|
'only one automation expected'
|
|
@@ -912,50 +1018,9 @@ describe('GENERAL', () => {
|
|
|
912
1018
|
'returned deployment file was not equal expected'
|
|
913
1019
|
);
|
|
914
1020
|
|
|
915
|
-
// check if files were also created for other BU-market combos
|
|
916
|
-
// testBU: testSourceMarket
|
|
917
|
-
expect(
|
|
918
|
-
await testUtils.getActualDeployFile(
|
|
919
|
-
'testExisting_automation',
|
|
920
|
-
'automation',
|
|
921
|
-
'json'
|
|
922
|
-
)
|
|
923
|
-
).to.exist;
|
|
924
|
-
// _ParentBU_: testTargetMarket
|
|
925
|
-
expect(
|
|
926
|
-
await testUtils.getActualDeployFile(
|
|
927
|
-
'testTemplated_automation',
|
|
928
|
-
'automation',
|
|
929
|
-
'json',
|
|
930
|
-
'_ParentBU_'
|
|
931
|
-
)
|
|
932
|
-
).to.exist;
|
|
933
|
-
|
|
934
1021
|
// check query
|
|
935
1022
|
assert.equal(
|
|
936
|
-
definitionResult.query
|
|
937
|
-
? Object.keys(
|
|
938
|
-
definitionResult.query?.['testInstance/testBU']?.testSourceMarket
|
|
939
|
-
).length
|
|
940
|
-
: 0,
|
|
941
|
-
1,
|
|
942
|
-
'only one query expected'
|
|
943
|
-
);
|
|
944
|
-
assert.equal(
|
|
945
|
-
definitionResult.query?.['testInstance/testBU']?.testTargetMarket
|
|
946
|
-
? Object.keys(
|
|
947
|
-
definitionResult.query?.['testInstance/testBU']?.testTargetMarket
|
|
948
|
-
).length
|
|
949
|
-
: 0,
|
|
950
|
-
1,
|
|
951
|
-
'only one query expected'
|
|
952
|
-
);
|
|
953
|
-
assert.equal(
|
|
954
|
-
definitionResult.query?.['testInstance/_ParentBU_']?.testTargetMarket
|
|
955
|
-
? Object.keys(
|
|
956
|
-
definitionResult.query?.['testInstance/_ParentBU_']?.testTargetMarket
|
|
957
|
-
).length
|
|
958
|
-
: 0,
|
|
1023
|
+
definitionResult.query ? Object.keys(definitionResult.query).length : 0,
|
|
959
1024
|
1,
|
|
960
1025
|
'only one query expected'
|
|
961
1026
|
);
|
|
@@ -968,46 +1033,822 @@ describe('GENERAL', () => {
|
|
|
968
1033
|
await testUtils.getActualDeployFile('testTemplated_query', 'query', 'sql')
|
|
969
1034
|
).to.equal(await testUtils.getExpectedFile('9999999', 'query', 'build', 'sql'));
|
|
970
1035
|
|
|
971
|
-
// check if files were also created for other BU-market combos
|
|
972
|
-
// testBU: testSourceMarket
|
|
973
|
-
expect(await testUtils.getActualDeployFile('testExisting_query', 'query', 'json'))
|
|
974
|
-
.to.exist;
|
|
975
|
-
expect(await testUtils.getActualDeployFile('testExisting_query', 'query', 'sql')).to
|
|
976
|
-
.exist;
|
|
977
|
-
// _ParentBU_: testTargetMarket
|
|
978
|
-
expect(
|
|
979
|
-
await testUtils.getActualDeployFile(
|
|
980
|
-
'testTemplated_query',
|
|
981
|
-
'query',
|
|
982
|
-
'json',
|
|
983
|
-
'_ParentBU_'
|
|
984
|
-
)
|
|
985
|
-
).to.exist;
|
|
986
|
-
expect(
|
|
987
|
-
await testUtils.getActualDeployFile(
|
|
988
|
-
'testTemplated_query',
|
|
989
|
-
'query',
|
|
990
|
-
'sql',
|
|
991
|
-
'_ParentBU_'
|
|
992
|
-
)
|
|
993
|
-
).to.exist;
|
|
994
|
-
|
|
995
1036
|
assert.equal(
|
|
996
1037
|
testUtils.getAPIHistoryLength() - expectedApiCallsRetrieve,
|
|
997
|
-
|
|
1038
|
+
4,
|
|
998
1039
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
999
1040
|
);
|
|
1000
1041
|
});
|
|
1001
1042
|
|
|
1002
|
-
it('buildTemplate +
|
|
1003
|
-
|
|
1004
|
-
await handler.retrieve('testInstance/testBU', ['automation', 'query']);
|
|
1043
|
+
it('buildTemplate + buildDefinition for multiple types with keys and --dependencies and --retrieve', async () => {
|
|
1044
|
+
const expectedApiCallsRetrieve = 78;
|
|
1005
1045
|
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
'
|
|
1046
|
+
// preparation
|
|
1047
|
+
const argvMetadata = [
|
|
1048
|
+
'automation:testExisting_automation',
|
|
1049
|
+
'query:testExisting_query',
|
|
1050
|
+
'query:bad',
|
|
1051
|
+
];
|
|
1052
|
+
const typeKeyCombo = handler.metadataToTypeKey(argvMetadata);
|
|
1053
|
+
assert.notEqual(
|
|
1054
|
+
typeof typeKeyCombo,
|
|
1055
|
+
'undefined',
|
|
1056
|
+
'typeKeyCombo should not be undefined'
|
|
1057
|
+
);
|
|
1058
|
+
const buName = 'testInstance/testBU';
|
|
1059
|
+
|
|
1060
|
+
handler.setOptions({ dependencies: true, retrieve: true });
|
|
1061
|
+
|
|
1062
|
+
// *** buildTemplate ***
|
|
1063
|
+
const templateResult = await handler.buildTemplate(
|
|
1064
|
+
buName,
|
|
1065
|
+
typeKeyCombo,
|
|
1066
|
+
undefined,
|
|
1067
|
+
'testSourceMarket'
|
|
1068
|
+
);
|
|
1069
|
+
assert.equal(process.exitCode, 0, 'buildTemplate should not have thrown an error');
|
|
1070
|
+
|
|
1071
|
+
// check type list
|
|
1072
|
+
assert.deepEqual(
|
|
1073
|
+
Object.keys(templateResult),
|
|
1074
|
+
[
|
|
1075
|
+
'automation',
|
|
1076
|
+
'query',
|
|
1077
|
+
'dataExtract',
|
|
1078
|
+
'emailSend',
|
|
1079
|
+
'dataExtension',
|
|
1080
|
+
'sendClassification',
|
|
1081
|
+
'senderProfile',
|
|
1082
|
+
'fileTransfer',
|
|
1083
|
+
'importFile',
|
|
1084
|
+
'script',
|
|
1085
|
+
'verification',
|
|
1086
|
+
],
|
|
1087
|
+
'did not create deployment packages for all relevant types'
|
|
1088
|
+
);
|
|
1089
|
+
|
|
1090
|
+
// check automation
|
|
1091
|
+
assert.equal(
|
|
1092
|
+
templateResult.automation ? Object.keys(templateResult.automation).length : 0,
|
|
1093
|
+
1,
|
|
1094
|
+
'only one automation expected'
|
|
1095
|
+
);
|
|
1096
|
+
assert.deepEqual(
|
|
1097
|
+
await testUtils.getActualTemplateJson('testExisting_automation', 'automation'),
|
|
1098
|
+
await testUtils.getExpectedJson('9999999', 'automation', 'template'),
|
|
1099
|
+
'returned template was not equal expected'
|
|
1100
|
+
);
|
|
1101
|
+
// check query
|
|
1102
|
+
assert.equal(
|
|
1103
|
+
templateResult.query ? Object.keys(templateResult.query).length : 0,
|
|
1104
|
+
1,
|
|
1105
|
+
'only one query expected'
|
|
1106
|
+
);
|
|
1107
|
+
assert.deepEqual(
|
|
1108
|
+
await testUtils.getActualTemplateJson('testExisting_query', 'query'),
|
|
1109
|
+
await testUtils.getExpectedJson('9999999', 'query', 'template'),
|
|
1110
|
+
'returned template JSON of retrieveAsTemplate was not equal expected'
|
|
1111
|
+
);
|
|
1112
|
+
expect(
|
|
1113
|
+
await testUtils.getActualTemplateFile('testExisting_query', 'query', 'sql')
|
|
1114
|
+
).to.equal(await testUtils.getExpectedFile('9999999', 'query', 'template', 'sql'));
|
|
1115
|
+
|
|
1116
|
+
// *** buildDefinition ***
|
|
1117
|
+
const definitionResult = await handler.buildDefinition(
|
|
1118
|
+
buName,
|
|
1119
|
+
typeKeyCombo,
|
|
1120
|
+
undefined,
|
|
1121
|
+
'testTargetMarket'
|
|
1122
|
+
);
|
|
1123
|
+
assert.equal(
|
|
1124
|
+
process.exitCode,
|
|
1125
|
+
0,
|
|
1126
|
+
'buildDefinition should not have thrown an error'
|
|
1127
|
+
);
|
|
1128
|
+
|
|
1129
|
+
// check automation
|
|
1130
|
+
assert.equal(
|
|
1131
|
+
definitionResult.automation
|
|
1132
|
+
? Object.keys(definitionResult.automation).length
|
|
1133
|
+
: 0,
|
|
1134
|
+
1,
|
|
1135
|
+
'only one automation expected'
|
|
1136
|
+
);
|
|
1137
|
+
assert.deepEqual(
|
|
1138
|
+
await testUtils.getActualDeployJson('testTemplated_automation', 'automation'),
|
|
1139
|
+
await testUtils.getExpectedJson('9999999', 'automation', 'build'),
|
|
1140
|
+
'returned deployment file was not equal expected'
|
|
1141
|
+
);
|
|
1142
|
+
|
|
1143
|
+
// check query
|
|
1144
|
+
assert.equal(
|
|
1145
|
+
definitionResult.query ? Object.keys(definitionResult.query).length : 0,
|
|
1146
|
+
1,
|
|
1147
|
+
'only one query expected'
|
|
1148
|
+
);
|
|
1149
|
+
assert.deepEqual(
|
|
1150
|
+
await testUtils.getActualDeployJson('testTemplated_query', 'query'),
|
|
1151
|
+
await testUtils.getExpectedJson('9999999', 'query', 'build'),
|
|
1152
|
+
'returned deployment JSON was not equal expected'
|
|
1153
|
+
);
|
|
1154
|
+
expect(
|
|
1155
|
+
await testUtils.getActualDeployFile('testTemplated_query', 'query', 'sql')
|
|
1156
|
+
).to.equal(await testUtils.getExpectedFile('9999999', 'query', 'build', 'sql'));
|
|
1157
|
+
|
|
1158
|
+
assert.equal(
|
|
1159
|
+
testUtils.getAPIHistoryLength(),
|
|
1160
|
+
expectedApiCallsRetrieve,
|
|
1161
|
+
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
1162
|
+
);
|
|
1163
|
+
});
|
|
1164
|
+
|
|
1165
|
+
it('buildTemplate + buildDefinitionBulk multiple type with keys', async () => {
|
|
1166
|
+
// download first before we test buildTemplate
|
|
1167
|
+
await handler.retrieve('testInstance/testBU', ['automation', 'query']);
|
|
1168
|
+
|
|
1169
|
+
const expectedApiCallsRetrieve = 24;
|
|
1170
|
+
assert.equal(
|
|
1171
|
+
testUtils.getAPIHistoryLength(),
|
|
1172
|
+
expectedApiCallsRetrieve,
|
|
1173
|
+
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
1174
|
+
);
|
|
1175
|
+
|
|
1176
|
+
// preparation
|
|
1177
|
+
const argvMetadata = [
|
|
1178
|
+
'automation:testExisting_automation',
|
|
1179
|
+
'query:testExisting_query',
|
|
1180
|
+
'query:bad',
|
|
1181
|
+
];
|
|
1182
|
+
const typeKeyCombo = handler.metadataToTypeKey(argvMetadata);
|
|
1183
|
+
assert.notEqual(
|
|
1184
|
+
typeof typeKeyCombo,
|
|
1185
|
+
'undefined',
|
|
1186
|
+
'typeKeyCombo should not be undefined'
|
|
1187
|
+
);
|
|
1188
|
+
const buName = 'testInstance/testBU';
|
|
1189
|
+
|
|
1190
|
+
// *** buildTemplate ***
|
|
1191
|
+
const templateResult = await handler.buildTemplate(
|
|
1192
|
+
buName,
|
|
1193
|
+
typeKeyCombo,
|
|
1194
|
+
undefined,
|
|
1195
|
+
'testSourceMarket'
|
|
1196
|
+
);
|
|
1197
|
+
assert.equal(process.exitCode, 0, 'buildTemplate should not have thrown an error');
|
|
1198
|
+
// check automation
|
|
1199
|
+
assert.equal(
|
|
1200
|
+
templateResult.automation ? Object.keys(templateResult.automation).length : 0,
|
|
1201
|
+
1,
|
|
1202
|
+
'only one automation expected'
|
|
1203
|
+
);
|
|
1204
|
+
assert.deepEqual(
|
|
1205
|
+
await testUtils.getActualTemplateJson('testExisting_automation', 'automation'),
|
|
1206
|
+
await testUtils.getExpectedJson('9999999', 'automation', 'template'),
|
|
1207
|
+
'returned template was not equal expected'
|
|
1208
|
+
);
|
|
1209
|
+
// check query
|
|
1210
|
+
assert.equal(
|
|
1211
|
+
templateResult.query ? Object.keys(templateResult.query).length : 0,
|
|
1212
|
+
1,
|
|
1213
|
+
'only one query expected'
|
|
1214
|
+
);
|
|
1215
|
+
assert.deepEqual(
|
|
1216
|
+
await testUtils.getActualTemplateJson('testExisting_query', 'query'),
|
|
1217
|
+
await testUtils.getExpectedJson('9999999', 'query', 'template'),
|
|
1218
|
+
'returned template JSON of retrieveAsTemplate was not equal expected'
|
|
1219
|
+
);
|
|
1220
|
+
expect(
|
|
1221
|
+
await testUtils.getActualTemplateFile('testExisting_query', 'query', 'sql')
|
|
1222
|
+
).to.equal(await testUtils.getExpectedFile('9999999', 'query', 'template', 'sql'));
|
|
1223
|
+
|
|
1224
|
+
// *** buildDefinitionBulk chained ***
|
|
1225
|
+
const definitionResult = await handler.buildDefinitionBulk(
|
|
1226
|
+
'deployment-target',
|
|
1227
|
+
typeKeyCombo
|
|
1228
|
+
);
|
|
1229
|
+
assert.equal(
|
|
1230
|
+
process.exitCode,
|
|
1231
|
+
0,
|
|
1232
|
+
'buildDefinitionBulk should not have thrown an error'
|
|
1233
|
+
);
|
|
1234
|
+
|
|
1235
|
+
// check automation
|
|
1236
|
+
assert.equal(
|
|
1237
|
+
definitionResult.automation?.['testInstance/testBU']?.testSourceMarket
|
|
1238
|
+
? Object.keys(
|
|
1239
|
+
definitionResult.automation?.['testInstance/testBU']?.testSourceMarket
|
|
1240
|
+
).length
|
|
1241
|
+
: 0,
|
|
1242
|
+
1,
|
|
1243
|
+
'only one automation expected'
|
|
1244
|
+
);
|
|
1245
|
+
assert.equal(
|
|
1246
|
+
definitionResult.automation?.['testInstance/testBU']?.testTargetMarket
|
|
1247
|
+
? Object.keys(
|
|
1248
|
+
definitionResult.automation?.['testInstance/testBU']?.testTargetMarket
|
|
1249
|
+
).length
|
|
1250
|
+
: 0,
|
|
1251
|
+
1,
|
|
1252
|
+
'only one automation expected'
|
|
1253
|
+
);
|
|
1254
|
+
assert.equal(
|
|
1255
|
+
definitionResult.automation?.['testInstance/_ParentBU_']?.testTargetMarket
|
|
1256
|
+
? Object.keys(
|
|
1257
|
+
definitionResult.automation?.['testInstance/_ParentBU_']
|
|
1258
|
+
?.testTargetMarket
|
|
1259
|
+
).length
|
|
1260
|
+
: 0,
|
|
1261
|
+
1,
|
|
1262
|
+
'only one automation expected'
|
|
1263
|
+
);
|
|
1264
|
+
assert.deepEqual(
|
|
1265
|
+
await testUtils.getActualDeployJson('testTemplated_automation', 'automation'),
|
|
1266
|
+
await testUtils.getExpectedJson('9999999', 'automation', 'build'),
|
|
1267
|
+
'returned deployment file was not equal expected'
|
|
1268
|
+
);
|
|
1269
|
+
|
|
1270
|
+
// check if files were also created for other BU-market combos
|
|
1271
|
+
// testBU: testSourceMarket
|
|
1272
|
+
expect(
|
|
1273
|
+
await testUtils.getActualDeployFile(
|
|
1274
|
+
'testExisting_automation',
|
|
1275
|
+
'automation',
|
|
1276
|
+
'json'
|
|
1277
|
+
)
|
|
1278
|
+
).to.exist;
|
|
1279
|
+
// _ParentBU_: testTargetMarket
|
|
1280
|
+
expect(
|
|
1281
|
+
await testUtils.getActualDeployFile(
|
|
1282
|
+
'testTemplated_automation',
|
|
1283
|
+
'automation',
|
|
1284
|
+
'json',
|
|
1285
|
+
'_ParentBU_'
|
|
1286
|
+
)
|
|
1287
|
+
).to.exist;
|
|
1288
|
+
|
|
1289
|
+
// check query
|
|
1290
|
+
assert.equal(
|
|
1291
|
+
definitionResult.query?.['testInstance/testBU']?.testSourceMarket
|
|
1292
|
+
? Object.keys(
|
|
1293
|
+
definitionResult.query?.['testInstance/testBU']?.testSourceMarket
|
|
1294
|
+
).length
|
|
1295
|
+
: 0,
|
|
1296
|
+
1,
|
|
1297
|
+
'only one query expected'
|
|
1298
|
+
);
|
|
1299
|
+
assert.equal(
|
|
1300
|
+
definitionResult.query?.['testInstance/testBU']?.testTargetMarket
|
|
1301
|
+
? Object.keys(
|
|
1302
|
+
definitionResult.query?.['testInstance/testBU']?.testTargetMarket
|
|
1303
|
+
).length
|
|
1304
|
+
: 0,
|
|
1305
|
+
1,
|
|
1306
|
+
'only one query expected'
|
|
1307
|
+
);
|
|
1308
|
+
assert.equal(
|
|
1309
|
+
definitionResult.query?.['testInstance/_ParentBU_']?.testTargetMarket
|
|
1310
|
+
? Object.keys(
|
|
1311
|
+
definitionResult.query?.['testInstance/_ParentBU_']?.testTargetMarket
|
|
1312
|
+
).length
|
|
1313
|
+
: 0,
|
|
1314
|
+
1,
|
|
1315
|
+
'only one query expected'
|
|
1316
|
+
);
|
|
1317
|
+
assert.deepEqual(
|
|
1318
|
+
await testUtils.getActualDeployJson('testTemplated_query', 'query'),
|
|
1319
|
+
await testUtils.getExpectedJson('9999999', 'query', 'build'),
|
|
1320
|
+
'returned deployment JSON was not equal expected'
|
|
1321
|
+
);
|
|
1322
|
+
expect(
|
|
1323
|
+
await testUtils.getActualDeployFile('testTemplated_query', 'query', 'sql')
|
|
1324
|
+
).to.equal(await testUtils.getExpectedFile('9999999', 'query', 'build', 'sql'));
|
|
1325
|
+
|
|
1326
|
+
// check if files were also created for other BU-market combos
|
|
1327
|
+
// testBU: testSourceMarket
|
|
1328
|
+
expect(await testUtils.getActualDeployFile('testExisting_query', 'query', 'json'))
|
|
1329
|
+
.to.exist;
|
|
1330
|
+
expect(await testUtils.getActualDeployFile('testExisting_query', 'query', 'sql')).to
|
|
1331
|
+
.exist;
|
|
1332
|
+
// _ParentBU_: testTargetMarket
|
|
1333
|
+
expect(
|
|
1334
|
+
await testUtils.getActualDeployFile(
|
|
1335
|
+
'testTemplated_query',
|
|
1336
|
+
'query',
|
|
1337
|
+
'json',
|
|
1338
|
+
'_ParentBU_'
|
|
1339
|
+
)
|
|
1340
|
+
).to.exist;
|
|
1341
|
+
expect(
|
|
1342
|
+
await testUtils.getActualDeployFile(
|
|
1343
|
+
'testTemplated_query',
|
|
1344
|
+
'query',
|
|
1345
|
+
'sql',
|
|
1346
|
+
'_ParentBU_'
|
|
1347
|
+
)
|
|
1348
|
+
).to.exist;
|
|
1349
|
+
|
|
1350
|
+
assert.equal(
|
|
1351
|
+
testUtils.getAPIHistoryLength() - expectedApiCallsRetrieve,
|
|
1352
|
+
0,
|
|
1353
|
+
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
1354
|
+
);
|
|
1355
|
+
});
|
|
1356
|
+
|
|
1357
|
+
it('build multiple type with keys', async () => {
|
|
1358
|
+
// download first before we test buildTemplate
|
|
1359
|
+
await handler.retrieve('testInstance/testBU', ['automation', 'query']);
|
|
1360
|
+
|
|
1361
|
+
const expectedApiCallsRetrieve = 24;
|
|
1362
|
+
assert.equal(
|
|
1363
|
+
testUtils.getAPIHistoryLength(),
|
|
1364
|
+
expectedApiCallsRetrieve,
|
|
1365
|
+
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
1366
|
+
);
|
|
1367
|
+
|
|
1368
|
+
// preparation
|
|
1369
|
+
const argvMetadata = [
|
|
1370
|
+
'automation:testExisting_automation',
|
|
1371
|
+
'query:testExisting_query',
|
|
1372
|
+
'query:bad',
|
|
1373
|
+
];
|
|
1374
|
+
const typeKeyCombo = handler.metadataToTypeKey(argvMetadata);
|
|
1375
|
+
assert.notEqual(
|
|
1376
|
+
typeof typeKeyCombo,
|
|
1377
|
+
'undefined',
|
|
1378
|
+
'typeKeyCombo should not be undefined'
|
|
1379
|
+
);
|
|
1380
|
+
const buName = 'testInstance/testBU';
|
|
1381
|
+
|
|
1382
|
+
// *** build: buildTemplate and buildDefinition chained ***
|
|
1383
|
+
const definitionResult = await handler.build(
|
|
1384
|
+
buName,
|
|
1385
|
+
buName,
|
|
1386
|
+
typeKeyCombo,
|
|
1387
|
+
'testSourceMarket',
|
|
1388
|
+
'testTargetMarket'
|
|
1389
|
+
);
|
|
1390
|
+
assert.equal(process.exitCode, 0, 'build should not have thrown an error');
|
|
1391
|
+
|
|
1392
|
+
// *** buildTemplate ***
|
|
1393
|
+
|
|
1394
|
+
// check automation
|
|
1395
|
+
assert.deepEqual(
|
|
1396
|
+
await testUtils.getActualTemplateJson('testExisting_automation', 'automation'),
|
|
1397
|
+
await testUtils.getExpectedJson('9999999', 'automation', 'template'),
|
|
1398
|
+
'returned template was not equal expected'
|
|
1399
|
+
);
|
|
1400
|
+
// check query
|
|
1401
|
+
assert.deepEqual(
|
|
1402
|
+
await testUtils.getActualTemplateJson('testExisting_query', 'query'),
|
|
1403
|
+
await testUtils.getExpectedJson('9999999', 'query', 'template'),
|
|
1404
|
+
'returned template JSON of retrieveAsTemplate was not equal expected'
|
|
1405
|
+
);
|
|
1406
|
+
expect(
|
|
1407
|
+
await testUtils.getActualTemplateFile('testExisting_query', 'query', 'sql')
|
|
1408
|
+
).to.equal(await testUtils.getExpectedFile('9999999', 'query', 'template', 'sql'));
|
|
1409
|
+
|
|
1410
|
+
// *** buildDefinition ***
|
|
1411
|
+
|
|
1412
|
+
// check automation
|
|
1413
|
+
assert.equal(
|
|
1414
|
+
definitionResult.automation
|
|
1415
|
+
? Object.keys(definitionResult.automation).length
|
|
1416
|
+
: 0,
|
|
1417
|
+
1,
|
|
1418
|
+
'only one automation expected'
|
|
1419
|
+
);
|
|
1420
|
+
assert.deepEqual(
|
|
1421
|
+
await testUtils.getActualDeployJson('testTemplated_automation', 'automation'),
|
|
1422
|
+
await testUtils.getExpectedJson('9999999', 'automation', 'build'),
|
|
1423
|
+
'returned deployment file was not equal expected'
|
|
1424
|
+
);
|
|
1425
|
+
|
|
1426
|
+
// check query
|
|
1427
|
+
assert.equal(
|
|
1428
|
+
definitionResult.query ? Object.keys(definitionResult.query).length : 0,
|
|
1429
|
+
1,
|
|
1430
|
+
'only one query expected'
|
|
1431
|
+
);
|
|
1432
|
+
assert.deepEqual(
|
|
1433
|
+
await testUtils.getActualDeployJson('testTemplated_query', 'query'),
|
|
1434
|
+
await testUtils.getExpectedJson('9999999', 'query', 'build'),
|
|
1435
|
+
'returned deployment JSON was not equal expected'
|
|
1436
|
+
);
|
|
1437
|
+
expect(
|
|
1438
|
+
await testUtils.getActualDeployFile('testTemplated_query', 'query', 'sql')
|
|
1439
|
+
).to.equal(await testUtils.getExpectedFile('9999999', 'query', 'build', 'sql'));
|
|
1440
|
+
|
|
1441
|
+
assert.equal(
|
|
1442
|
+
testUtils.getAPIHistoryLength() - expectedApiCallsRetrieve,
|
|
1443
|
+
0,
|
|
1444
|
+
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
1445
|
+
);
|
|
1446
|
+
});
|
|
1447
|
+
|
|
1448
|
+
it('build multiple type with keys and --dependencies', async () => {
|
|
1449
|
+
// download everything before we test buildTemplate
|
|
1450
|
+
await handler.retrieve('testInstance/testBU');
|
|
1451
|
+
|
|
1452
|
+
const expectedApiCallsRetrieve = 74;
|
|
1453
|
+
assert.equal(
|
|
1454
|
+
testUtils.getAPIHistoryLength(),
|
|
1455
|
+
expectedApiCallsRetrieve,
|
|
1456
|
+
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
1457
|
+
);
|
|
1458
|
+
|
|
1459
|
+
// preparation
|
|
1460
|
+
const argvMetadata = [
|
|
1461
|
+
'automation:testExisting_automation',
|
|
1462
|
+
'query:testExisting_query',
|
|
1463
|
+
'query:bad',
|
|
1464
|
+
];
|
|
1465
|
+
const typeKeyCombo = handler.metadataToTypeKey(argvMetadata);
|
|
1466
|
+
assert.notEqual(
|
|
1467
|
+
typeof typeKeyCombo,
|
|
1468
|
+
'undefined',
|
|
1469
|
+
'typeKeyCombo should not be undefined'
|
|
1470
|
+
);
|
|
1471
|
+
const buName = 'testInstance/testBU';
|
|
1472
|
+
|
|
1473
|
+
// set skipInteraction to true to skip re-retrieving question
|
|
1474
|
+
handler.setOptions({ dependencies: true, skipInteraction: true });
|
|
1475
|
+
|
|
1476
|
+
// *** build: buildTemplate and buildDefinition chained ***
|
|
1477
|
+
const definitionResult = await handler.build(
|
|
1478
|
+
buName,
|
|
1479
|
+
buName,
|
|
1480
|
+
typeKeyCombo,
|
|
1481
|
+
'testSourceMarket',
|
|
1482
|
+
'testTargetMarket'
|
|
1483
|
+
);
|
|
1484
|
+
assert.equal(process.exitCode, 0, 'build should not have thrown an error');
|
|
1485
|
+
|
|
1486
|
+
// *** buildTemplate ***
|
|
1487
|
+
|
|
1488
|
+
// check automation
|
|
1489
|
+
assert.deepEqual(
|
|
1490
|
+
await testUtils.getActualTemplateJson('testExisting_automation', 'automation'),
|
|
1491
|
+
await testUtils.getExpectedJson('9999999', 'automation', 'template'),
|
|
1492
|
+
'returned template was not equal expected'
|
|
1493
|
+
);
|
|
1494
|
+
// check query
|
|
1495
|
+
assert.deepEqual(
|
|
1496
|
+
await testUtils.getActualTemplateJson('testExisting_query', 'query'),
|
|
1497
|
+
await testUtils.getExpectedJson('9999999', 'query', 'template'),
|
|
1498
|
+
'returned template JSON of retrieveAsTemplate was not equal expected'
|
|
1499
|
+
);
|
|
1500
|
+
expect(
|
|
1501
|
+
await testUtils.getActualTemplateFile('testExisting_query', 'query', 'sql')
|
|
1502
|
+
).to.equal(await testUtils.getExpectedFile('9999999', 'query', 'template', 'sql'));
|
|
1503
|
+
|
|
1504
|
+
// *** buildDefinition ***
|
|
1505
|
+
|
|
1506
|
+
// check type list
|
|
1507
|
+
assert.deepEqual(
|
|
1508
|
+
Object.keys(definitionResult),
|
|
1509
|
+
[
|
|
1510
|
+
'automation',
|
|
1511
|
+
'query',
|
|
1512
|
+
'dataExtract',
|
|
1513
|
+
'emailSend',
|
|
1514
|
+
'dataExtension',
|
|
1515
|
+
'sendClassification',
|
|
1516
|
+
'senderProfile',
|
|
1517
|
+
'fileTransfer',
|
|
1518
|
+
'importFile',
|
|
1519
|
+
'script',
|
|
1520
|
+
'verification',
|
|
1521
|
+
],
|
|
1522
|
+
'did not create deployment packages for all relevant types'
|
|
1523
|
+
);
|
|
1524
|
+
|
|
1525
|
+
// check automation
|
|
1526
|
+
assert.equal(
|
|
1527
|
+
definitionResult.automation
|
|
1528
|
+
? Object.keys(definitionResult.automation).length
|
|
1529
|
+
: 0,
|
|
1530
|
+
1,
|
|
1531
|
+
'only one automation expected'
|
|
1532
|
+
);
|
|
1533
|
+
assert.deepEqual(
|
|
1534
|
+
await testUtils.getActualDeployJson('testTemplated_automation', 'automation'),
|
|
1535
|
+
await testUtils.getExpectedJson('9999999', 'automation', 'build'),
|
|
1536
|
+
'returned deployment file was not equal expected'
|
|
1537
|
+
);
|
|
1538
|
+
|
|
1539
|
+
// check query
|
|
1540
|
+
assert.equal(
|
|
1541
|
+
definitionResult.query ? Object.keys(definitionResult.query).length : 0,
|
|
1542
|
+
1,
|
|
1543
|
+
'only one query expected'
|
|
1544
|
+
);
|
|
1545
|
+
assert.deepEqual(
|
|
1546
|
+
await testUtils.getActualDeployJson('testTemplated_query', 'query'),
|
|
1547
|
+
await testUtils.getExpectedJson('9999999', 'query', 'build'),
|
|
1548
|
+
'returned deployment JSON was not equal expected'
|
|
1549
|
+
);
|
|
1550
|
+
expect(
|
|
1551
|
+
await testUtils.getActualDeployFile('testTemplated_query', 'query', 'sql')
|
|
1552
|
+
).to.equal(await testUtils.getExpectedFile('9999999', 'query', 'build', 'sql'));
|
|
1553
|
+
|
|
1554
|
+
assert.equal(
|
|
1555
|
+
testUtils.getAPIHistoryLength() - expectedApiCallsRetrieve,
|
|
1556
|
+
4,
|
|
1557
|
+
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
1558
|
+
);
|
|
1559
|
+
});
|
|
1560
|
+
|
|
1561
|
+
it('build multiple type with keys and --dependencies and --retrieve', async () => {
|
|
1562
|
+
const expectedApiCallsRetrieve = 78;
|
|
1563
|
+
|
|
1564
|
+
// preparation
|
|
1565
|
+
const argvMetadata = [
|
|
1566
|
+
'automation:testExisting_automation',
|
|
1567
|
+
'query:testExisting_query',
|
|
1568
|
+
'query:bad',
|
|
1569
|
+
];
|
|
1570
|
+
const typeKeyCombo = handler.metadataToTypeKey(argvMetadata);
|
|
1571
|
+
assert.notEqual(
|
|
1572
|
+
typeof typeKeyCombo,
|
|
1573
|
+
'undefined',
|
|
1574
|
+
'typeKeyCombo should not be undefined'
|
|
1575
|
+
);
|
|
1576
|
+
const buName = 'testInstance/testBU';
|
|
1577
|
+
|
|
1578
|
+
handler.setOptions({ dependencies: true, retrieve: true });
|
|
1579
|
+
|
|
1580
|
+
// *** build: buildTemplate and buildDefinition chained ***
|
|
1581
|
+
const definitionResult = await handler.build(
|
|
1582
|
+
buName,
|
|
1583
|
+
buName,
|
|
1584
|
+
typeKeyCombo,
|
|
1585
|
+
'testSourceMarket',
|
|
1586
|
+
'testTargetMarket'
|
|
1587
|
+
);
|
|
1588
|
+
assert.equal(process.exitCode, 0, 'build should not have thrown an error');
|
|
1589
|
+
|
|
1590
|
+
// *** buildTemplate ***
|
|
1591
|
+
|
|
1592
|
+
// check automation
|
|
1593
|
+
assert.deepEqual(
|
|
1594
|
+
await testUtils.getActualTemplateJson('testExisting_automation', 'automation'),
|
|
1595
|
+
await testUtils.getExpectedJson('9999999', 'automation', 'template'),
|
|
1596
|
+
'returned template was not equal expected'
|
|
1597
|
+
);
|
|
1598
|
+
// check query
|
|
1599
|
+
assert.deepEqual(
|
|
1600
|
+
await testUtils.getActualTemplateJson('testExisting_query', 'query'),
|
|
1601
|
+
await testUtils.getExpectedJson('9999999', 'query', 'template'),
|
|
1602
|
+
'returned template JSON of retrieveAsTemplate was not equal expected'
|
|
1603
|
+
);
|
|
1604
|
+
expect(
|
|
1605
|
+
await testUtils.getActualTemplateFile('testExisting_query', 'query', 'sql')
|
|
1606
|
+
).to.equal(await testUtils.getExpectedFile('9999999', 'query', 'template', 'sql'));
|
|
1607
|
+
|
|
1608
|
+
// *** buildDefinition ***
|
|
1609
|
+
|
|
1610
|
+
// check type list
|
|
1611
|
+
assert.deepEqual(
|
|
1612
|
+
Object.keys(definitionResult),
|
|
1613
|
+
[
|
|
1614
|
+
'automation',
|
|
1615
|
+
'query',
|
|
1616
|
+
'dataExtract',
|
|
1617
|
+
'emailSend',
|
|
1618
|
+
'dataExtension',
|
|
1619
|
+
'sendClassification',
|
|
1620
|
+
'senderProfile',
|
|
1621
|
+
'fileTransfer',
|
|
1622
|
+
'importFile',
|
|
1623
|
+
'script',
|
|
1624
|
+
'verification',
|
|
1625
|
+
],
|
|
1626
|
+
'did not create deployment packages for all relevant types'
|
|
1627
|
+
);
|
|
1628
|
+
|
|
1629
|
+
// check automation
|
|
1630
|
+
assert.equal(
|
|
1631
|
+
definitionResult.automation
|
|
1632
|
+
? Object.keys(definitionResult.automation).length
|
|
1633
|
+
: 0,
|
|
1634
|
+
1,
|
|
1635
|
+
'only one automation expected'
|
|
1636
|
+
);
|
|
1637
|
+
assert.deepEqual(
|
|
1638
|
+
await testUtils.getActualDeployJson('testTemplated_automation', 'automation'),
|
|
1639
|
+
await testUtils.getExpectedJson('9999999', 'automation', 'build'),
|
|
1640
|
+
'returned deployment file was not equal expected'
|
|
1641
|
+
);
|
|
1642
|
+
|
|
1643
|
+
// check query
|
|
1644
|
+
assert.equal(
|
|
1645
|
+
definitionResult.query ? Object.keys(definitionResult.query).length : 0,
|
|
1646
|
+
1,
|
|
1647
|
+
'only one query expected'
|
|
1648
|
+
);
|
|
1649
|
+
assert.deepEqual(
|
|
1650
|
+
await testUtils.getActualDeployJson('testTemplated_query', 'query'),
|
|
1651
|
+
await testUtils.getExpectedJson('9999999', 'query', 'build'),
|
|
1652
|
+
'returned deployment JSON was not equal expected'
|
|
1653
|
+
);
|
|
1654
|
+
expect(
|
|
1655
|
+
await testUtils.getActualDeployFile('testTemplated_query', 'query', 'sql')
|
|
1656
|
+
).to.equal(await testUtils.getExpectedFile('9999999', 'query', 'build', 'sql'));
|
|
1657
|
+
|
|
1658
|
+
assert.equal(
|
|
1659
|
+
testUtils.getAPIHistoryLength(),
|
|
1660
|
+
expectedApiCallsRetrieve,
|
|
1661
|
+
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
1662
|
+
);
|
|
1663
|
+
});
|
|
1664
|
+
|
|
1665
|
+
it('build multiple type with keys and --bulk', async () => {
|
|
1666
|
+
// download first before we test buildTemplate
|
|
1667
|
+
await handler.retrieve('testInstance/testBU', ['automation', 'query']);
|
|
1668
|
+
|
|
1669
|
+
const expectedApiCallsRetrieve = 24;
|
|
1670
|
+
assert.equal(
|
|
1671
|
+
testUtils.getAPIHistoryLength(),
|
|
1672
|
+
expectedApiCallsRetrieve,
|
|
1673
|
+
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
1674
|
+
);
|
|
1675
|
+
|
|
1676
|
+
// preparation
|
|
1677
|
+
const argvMetadata = [
|
|
1678
|
+
'automation:testExisting_automation',
|
|
1679
|
+
'query:testExisting_query',
|
|
1680
|
+
'query:bad',
|
|
1681
|
+
];
|
|
1682
|
+
const typeKeyCombo = handler.metadataToTypeKey(argvMetadata);
|
|
1683
|
+
assert.notEqual(
|
|
1684
|
+
typeof typeKeyCombo,
|
|
1685
|
+
'undefined',
|
|
1686
|
+
'typeKeyCombo should not be undefined'
|
|
1687
|
+
);
|
|
1688
|
+
const buName = 'testInstance/testBU';
|
|
1689
|
+
|
|
1690
|
+
// *** build: buildTemplate and buildDefinition chained ***
|
|
1691
|
+
const definitionResult = await handler.build(
|
|
1692
|
+
buName,
|
|
1693
|
+
'ignored',
|
|
1694
|
+
typeKeyCombo,
|
|
1695
|
+
'testSourceMarket',
|
|
1696
|
+
'deployment-target',
|
|
1697
|
+
true
|
|
1698
|
+
);
|
|
1699
|
+
assert.equal(process.exitCode, 0, 'build should not have thrown an error');
|
|
1700
|
+
|
|
1701
|
+
// *** buildTemplate ***
|
|
1702
|
+
|
|
1703
|
+
// check automation
|
|
1704
|
+
assert.deepEqual(
|
|
1705
|
+
await testUtils.getActualTemplateJson('testExisting_automation', 'automation'),
|
|
1706
|
+
await testUtils.getExpectedJson('9999999', 'automation', 'template'),
|
|
1707
|
+
'returned template was not equal expected'
|
|
1708
|
+
);
|
|
1709
|
+
// check query
|
|
1710
|
+
assert.deepEqual(
|
|
1711
|
+
await testUtils.getActualTemplateJson('testExisting_query', 'query'),
|
|
1712
|
+
await testUtils.getExpectedJson('9999999', 'query', 'template'),
|
|
1713
|
+
'returned template JSON of retrieveAsTemplate was not equal expected'
|
|
1714
|
+
);
|
|
1715
|
+
expect(
|
|
1716
|
+
await testUtils.getActualTemplateFile('testExisting_query', 'query', 'sql')
|
|
1717
|
+
).to.equal(await testUtils.getExpectedFile('9999999', 'query', 'template', 'sql'));
|
|
1718
|
+
|
|
1719
|
+
// *** buildDefinitionBulk ***
|
|
1720
|
+
|
|
1721
|
+
// check automation
|
|
1722
|
+
assert.equal(
|
|
1723
|
+
definitionResult.automation?.['testInstance/testBU']?.testSourceMarket
|
|
1724
|
+
? Object.keys(
|
|
1725
|
+
definitionResult.automation?.['testInstance/testBU']?.testSourceMarket
|
|
1726
|
+
).length
|
|
1727
|
+
: 0,
|
|
1728
|
+
1,
|
|
1729
|
+
'only one automation expected'
|
|
1730
|
+
);
|
|
1731
|
+
assert.equal(
|
|
1732
|
+
definitionResult.automation?.['testInstance/testBU']?.testTargetMarket
|
|
1733
|
+
? Object.keys(
|
|
1734
|
+
definitionResult.automation?.['testInstance/testBU']?.testTargetMarket
|
|
1735
|
+
).length
|
|
1736
|
+
: 0,
|
|
1737
|
+
1,
|
|
1738
|
+
'only one automation expected'
|
|
1739
|
+
);
|
|
1740
|
+
assert.equal(
|
|
1741
|
+
definitionResult.automation?.['testInstance/_ParentBU_']?.testTargetMarket
|
|
1742
|
+
? Object.keys(
|
|
1743
|
+
definitionResult.automation?.['testInstance/_ParentBU_']
|
|
1744
|
+
?.testTargetMarket
|
|
1745
|
+
).length
|
|
1746
|
+
: 0,
|
|
1747
|
+
1,
|
|
1748
|
+
'only one automation expected'
|
|
1749
|
+
);
|
|
1750
|
+
assert.deepEqual(
|
|
1751
|
+
await testUtils.getActualDeployJson('testTemplated_automation', 'automation'),
|
|
1752
|
+
await testUtils.getExpectedJson('9999999', 'automation', 'build'),
|
|
1753
|
+
'returned deployment file was not equal expected'
|
|
1754
|
+
);
|
|
1755
|
+
|
|
1756
|
+
// check if files were also created for other BU-market combos
|
|
1757
|
+
// testBU: testSourceMarket
|
|
1758
|
+
expect(
|
|
1759
|
+
await testUtils.getActualDeployFile(
|
|
1760
|
+
'testExisting_automation',
|
|
1761
|
+
'automation',
|
|
1762
|
+
'json'
|
|
1763
|
+
)
|
|
1764
|
+
).to.exist;
|
|
1765
|
+
// _ParentBU_: testTargetMarket
|
|
1766
|
+
expect(
|
|
1767
|
+
await testUtils.getActualDeployFile(
|
|
1768
|
+
'testTemplated_automation',
|
|
1769
|
+
'automation',
|
|
1770
|
+
'json',
|
|
1771
|
+
'_ParentBU_'
|
|
1772
|
+
)
|
|
1773
|
+
).to.exist;
|
|
1774
|
+
|
|
1775
|
+
// check query
|
|
1776
|
+
assert.equal(
|
|
1777
|
+
definitionResult.query?.['testInstance/testBU']?.testSourceMarket
|
|
1778
|
+
? Object.keys(
|
|
1779
|
+
definitionResult.query?.['testInstance/testBU']?.testSourceMarket
|
|
1780
|
+
).length
|
|
1781
|
+
: 0,
|
|
1782
|
+
1,
|
|
1783
|
+
'only one query expected'
|
|
1784
|
+
);
|
|
1785
|
+
assert.equal(
|
|
1786
|
+
definitionResult.query?.['testInstance/testBU']?.testTargetMarket
|
|
1787
|
+
? Object.keys(
|
|
1788
|
+
definitionResult.query?.['testInstance/testBU']?.testTargetMarket
|
|
1789
|
+
).length
|
|
1790
|
+
: 0,
|
|
1791
|
+
1,
|
|
1792
|
+
'only one query expected'
|
|
1793
|
+
);
|
|
1794
|
+
assert.equal(
|
|
1795
|
+
definitionResult.query?.['testInstance/_ParentBU_']?.testTargetMarket
|
|
1796
|
+
? Object.keys(
|
|
1797
|
+
definitionResult.query?.['testInstance/_ParentBU_']?.testTargetMarket
|
|
1798
|
+
).length
|
|
1799
|
+
: 0,
|
|
1800
|
+
1,
|
|
1801
|
+
'only one query expected'
|
|
1802
|
+
);
|
|
1803
|
+
assert.deepEqual(
|
|
1804
|
+
await testUtils.getActualDeployJson('testTemplated_query', 'query'),
|
|
1805
|
+
await testUtils.getExpectedJson('9999999', 'query', 'build'),
|
|
1806
|
+
'returned deployment JSON was not equal expected'
|
|
1807
|
+
);
|
|
1808
|
+
expect(
|
|
1809
|
+
await testUtils.getActualDeployFile('testTemplated_query', 'query', 'sql')
|
|
1810
|
+
).to.equal(await testUtils.getExpectedFile('9999999', 'query', 'build', 'sql'));
|
|
1811
|
+
|
|
1812
|
+
// check if files were also created for other BU-market combos
|
|
1813
|
+
// testBU: testSourceMarket
|
|
1814
|
+
expect(await testUtils.getActualDeployFile('testExisting_query', 'query', 'json'))
|
|
1815
|
+
.to.exist;
|
|
1816
|
+
expect(await testUtils.getActualDeployFile('testExisting_query', 'query', 'sql')).to
|
|
1817
|
+
.exist;
|
|
1818
|
+
// _ParentBU_: testTargetMarket
|
|
1819
|
+
expect(
|
|
1820
|
+
await testUtils.getActualDeployFile(
|
|
1821
|
+
'testTemplated_query',
|
|
1822
|
+
'query',
|
|
1823
|
+
'json',
|
|
1824
|
+
'_ParentBU_'
|
|
1825
|
+
)
|
|
1826
|
+
).to.exist;
|
|
1827
|
+
expect(
|
|
1828
|
+
await testUtils.getActualDeployFile(
|
|
1829
|
+
'testTemplated_query',
|
|
1830
|
+
'query',
|
|
1831
|
+
'sql',
|
|
1832
|
+
'_ParentBU_'
|
|
1833
|
+
)
|
|
1834
|
+
).to.exist;
|
|
1835
|
+
|
|
1836
|
+
assert.equal(
|
|
1837
|
+
testUtils.getAPIHistoryLength() - expectedApiCallsRetrieve,
|
|
1838
|
+
0,
|
|
1839
|
+
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
1840
|
+
);
|
|
1841
|
+
});
|
|
1842
|
+
|
|
1843
|
+
it('build multiple type with keys and --bulk and --dependencies', async () => {
|
|
1844
|
+
// download first before we test buildTemplate
|
|
1845
|
+
await handler.retrieve('testInstance/testBU');
|
|
1846
|
+
|
|
1847
|
+
const expectedApiCallsRetrieve = 74;
|
|
1848
|
+
assert.equal(
|
|
1849
|
+
testUtils.getAPIHistoryLength(),
|
|
1850
|
+
expectedApiCallsRetrieve,
|
|
1851
|
+
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
1011
1852
|
);
|
|
1012
1853
|
|
|
1013
1854
|
// preparation
|
|
@@ -1024,31 +1865,29 @@ describe('GENERAL', () => {
|
|
|
1024
1865
|
);
|
|
1025
1866
|
const buName = 'testInstance/testBU';
|
|
1026
1867
|
|
|
1027
|
-
//
|
|
1028
|
-
|
|
1868
|
+
// set skipInteraction to true to skip re-retrieving question
|
|
1869
|
+
handler.setOptions({ dependencies: true, skipInteraction: true });
|
|
1870
|
+
|
|
1871
|
+
// *** build: buildTemplate and buildDefinition chained ***
|
|
1872
|
+
const definitionResult = await handler.build(
|
|
1029
1873
|
buName,
|
|
1874
|
+
'ignored',
|
|
1030
1875
|
typeKeyCombo,
|
|
1031
|
-
|
|
1032
|
-
'
|
|
1876
|
+
'testSourceMarket',
|
|
1877
|
+
'deployment-target',
|
|
1878
|
+
true
|
|
1033
1879
|
);
|
|
1034
|
-
assert.equal(process.exitCode, 0, '
|
|
1880
|
+
assert.equal(process.exitCode, 0, 'build should not have thrown an error');
|
|
1881
|
+
|
|
1882
|
+
// *** buildTemplate ***
|
|
1883
|
+
|
|
1035
1884
|
// check automation
|
|
1036
|
-
assert.equal(
|
|
1037
|
-
templateResult.automation ? Object.keys(templateResult.automation).length : 0,
|
|
1038
|
-
1,
|
|
1039
|
-
'only one automation expected'
|
|
1040
|
-
);
|
|
1041
1885
|
assert.deepEqual(
|
|
1042
1886
|
await testUtils.getActualTemplateJson('testExisting_automation', 'automation'),
|
|
1043
1887
|
await testUtils.getExpectedJson('9999999', 'automation', 'template'),
|
|
1044
1888
|
'returned template was not equal expected'
|
|
1045
1889
|
);
|
|
1046
1890
|
// check query
|
|
1047
|
-
assert.equal(
|
|
1048
|
-
templateResult.query ? Object.keys(templateResult.query).length : 0,
|
|
1049
|
-
1,
|
|
1050
|
-
'only one query expected'
|
|
1051
|
-
);
|
|
1052
1891
|
assert.deepEqual(
|
|
1053
1892
|
await testUtils.getActualTemplateJson('testExisting_query', 'query'),
|
|
1054
1893
|
await testUtils.getExpectedJson('9999999', 'query', 'template'),
|
|
@@ -1058,15 +1897,25 @@ describe('GENERAL', () => {
|
|
|
1058
1897
|
await testUtils.getActualTemplateFile('testExisting_query', 'query', 'sql')
|
|
1059
1898
|
).to.equal(await testUtils.getExpectedFile('9999999', 'query', 'template', 'sql'));
|
|
1060
1899
|
|
|
1061
|
-
// *** buildDefinitionBulk
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1900
|
+
// *** buildDefinitionBulk ***
|
|
1901
|
+
|
|
1902
|
+
// check type list
|
|
1903
|
+
assert.deepEqual(
|
|
1904
|
+
Object.keys(definitionResult),
|
|
1905
|
+
[
|
|
1906
|
+
'automation',
|
|
1907
|
+
'query',
|
|
1908
|
+
'dataExtract',
|
|
1909
|
+
'emailSend',
|
|
1910
|
+
'dataExtension',
|
|
1911
|
+
'sendClassification',
|
|
1912
|
+
'senderProfile',
|
|
1913
|
+
'fileTransfer',
|
|
1914
|
+
'importFile',
|
|
1915
|
+
'script',
|
|
1916
|
+
'verification',
|
|
1917
|
+
],
|
|
1918
|
+
'did not create deployment packages for all relevant types'
|
|
1070
1919
|
);
|
|
1071
1920
|
|
|
1072
1921
|
// check automation
|
|
@@ -1186,11 +2035,134 @@ describe('GENERAL', () => {
|
|
|
1186
2035
|
|
|
1187
2036
|
assert.equal(
|
|
1188
2037
|
testUtils.getAPIHistoryLength() - expectedApiCallsRetrieve,
|
|
1189
|
-
|
|
2038
|
+
4,
|
|
1190
2039
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
1191
2040
|
);
|
|
1192
2041
|
});
|
|
1193
2042
|
});
|
|
2043
|
+
|
|
2044
|
+
describe('Delete --metadata ~~~', () => {
|
|
2045
|
+
it('Should delete the item', async () => {
|
|
2046
|
+
const argvMetadata = [
|
|
2047
|
+
'asset:testExisting_asset',
|
|
2048
|
+
'automation:testExisting_automation',
|
|
2049
|
+
'journey:testExisting_journey_Quicksend/1',
|
|
2050
|
+
'journey:testExisting_journey_Multistep/1',
|
|
2051
|
+
];
|
|
2052
|
+
const typeKeyCombo = handler.metadataToTypeKey(argvMetadata);
|
|
2053
|
+
// WHEN
|
|
2054
|
+
const isDeleted = await handler.deleteByKey('testInstance/testBU', typeKeyCombo);
|
|
2055
|
+
// THEN
|
|
2056
|
+
assert.equal(process.exitCode, 0, 'deleteByKey should not have thrown an error');
|
|
2057
|
+
assert.equal(isDeleted, true, 'deleteByKey should have returned true');
|
|
2058
|
+
return;
|
|
2059
|
+
});
|
|
2060
|
+
});
|
|
2061
|
+
|
|
2062
|
+
describe('Publish --metadata ~~~', () => {
|
|
2063
|
+
it('Should publish the journey', async () => {
|
|
2064
|
+
handler.setOptions({ skipStatusCheck: true });
|
|
2065
|
+
const argvMetadata = ['journey:id:3c3f4112-9b43-43ca-8a89-aa0375b2c1a2/1'];
|
|
2066
|
+
const typeKeyCombo = handler.metadataToTypeKey(argvMetadata);
|
|
2067
|
+
// WHEN
|
|
2068
|
+
const publish = await handler.publish('testInstance/testBU', typeKeyCombo);
|
|
2069
|
+
// THEN
|
|
2070
|
+
assert.equal(process.exitCode, 0, 'publish should not have thrown an error');
|
|
2071
|
+
assert.deepEqual(
|
|
2072
|
+
publish['testInstance/testBU']?.journey,
|
|
2073
|
+
['id:3c3f4112-9b43-43ca-8a89-aa0375b2c1a2/1'],
|
|
2074
|
+
'should have published the right journey'
|
|
2075
|
+
);
|
|
2076
|
+
return;
|
|
2077
|
+
});
|
|
2078
|
+
});
|
|
2079
|
+
|
|
2080
|
+
describe('Execute/Start --metadata ~~~', () => {
|
|
2081
|
+
it('Should execute the item', async () => {
|
|
2082
|
+
const argvMetadata = [
|
|
2083
|
+
'query:testExisting_query',
|
|
2084
|
+
'automation:testExisting_automation',
|
|
2085
|
+
];
|
|
2086
|
+
const typeKeyCombo = handler.metadataToTypeKey(argvMetadata);
|
|
2087
|
+
// WHEN
|
|
2088
|
+
const executedKeys = await handler.execute('testInstance/testBU', typeKeyCombo);
|
|
2089
|
+
assert.equal(process.exitCode, 0, 'execute should not have thrown an error');
|
|
2090
|
+
|
|
2091
|
+
// query
|
|
2092
|
+
assert.equal(
|
|
2093
|
+
executedKeys['testInstance/testBU']?.query?.length,
|
|
2094
|
+
1,
|
|
2095
|
+
'returned number of keys does not correspond to number of expected fixed keys'
|
|
2096
|
+
);
|
|
2097
|
+
assert.equal(
|
|
2098
|
+
executedKeys['testInstance/testBU']?.query[0],
|
|
2099
|
+
'testExisting_query',
|
|
2100
|
+
'returned keys do not correspond to expected fixed keys'
|
|
2101
|
+
);
|
|
2102
|
+
|
|
2103
|
+
// automation
|
|
2104
|
+
assert.equal(
|
|
2105
|
+
executedKeys['testInstance/testBU']?.automation?.length,
|
|
2106
|
+
1,
|
|
2107
|
+
'automation was supposed to be executed'
|
|
2108
|
+
);
|
|
2109
|
+
assert.equal(
|
|
2110
|
+
executedKeys['testInstance/testBU']?.automation[0],
|
|
2111
|
+
'testExisting_automation',
|
|
2112
|
+
'returned keys do not correspond to expected fixed keys'
|
|
2113
|
+
);
|
|
2114
|
+
|
|
2115
|
+
return;
|
|
2116
|
+
});
|
|
2117
|
+
});
|
|
2118
|
+
|
|
2119
|
+
describe('Pause --metadata ~~~', () => {
|
|
2120
|
+
it('Should pause the item', async () => {
|
|
2121
|
+
const argvMetadata = ['automation:testExisting_automation_pause'];
|
|
2122
|
+
const typeKeyCombo = handler.metadataToTypeKey(argvMetadata);
|
|
2123
|
+
// WHEN
|
|
2124
|
+
const pausedKeys = await handler.pause('testInstance/testBU', typeKeyCombo);
|
|
2125
|
+
assert.equal(process.exitCode, 0, 'pause should not have thrown an error');
|
|
2126
|
+
|
|
2127
|
+
// automation
|
|
2128
|
+
assert.equal(
|
|
2129
|
+
pausedKeys['testInstance/testBU']?.automation?.length,
|
|
2130
|
+
1,
|
|
2131
|
+
'returned number of keys does not correspond to number of expected fixed keys'
|
|
2132
|
+
);
|
|
2133
|
+
assert.equal(
|
|
2134
|
+
pausedKeys['testInstance/testBU']?.automation[0],
|
|
2135
|
+
'testExisting_automation_pause',
|
|
2136
|
+
'returned keys do not correspond to expected fixed keys'
|
|
2137
|
+
);
|
|
2138
|
+
|
|
2139
|
+
return;
|
|
2140
|
+
});
|
|
2141
|
+
});
|
|
2142
|
+
|
|
2143
|
+
describe('Schedule --metadata ~~~', () => {
|
|
2144
|
+
it('Should schedule the item', async () => {
|
|
2145
|
+
const argvMetadata = ['automation:testExisting_automation'];
|
|
2146
|
+
const typeKeyCombo = handler.metadataToTypeKey(argvMetadata);
|
|
2147
|
+
// WHEN
|
|
2148
|
+
const scheduled = await handler.schedule('testInstance/testBU', typeKeyCombo);
|
|
2149
|
+
assert.equal(process.exitCode, 0, 'execute should not have thrown an error');
|
|
2150
|
+
|
|
2151
|
+
// automation
|
|
2152
|
+
assert.equal(
|
|
2153
|
+
scheduled['testInstance/testBU']?.automation?.length,
|
|
2154
|
+
1,
|
|
2155
|
+
'returned number of keys does not correspond to number of expected fixed keys'
|
|
2156
|
+
);
|
|
2157
|
+
assert.equal(
|
|
2158
|
+
scheduled['testInstance/testBU']?.automation[0],
|
|
2159
|
+
'testExisting_automation',
|
|
2160
|
+
'returned keys do not correspond to expected fixed keys'
|
|
2161
|
+
);
|
|
2162
|
+
|
|
2163
|
+
return;
|
|
2164
|
+
});
|
|
2165
|
+
});
|
|
1194
2166
|
});
|
|
1195
2167
|
|
|
1196
2168
|
describe('without --metadata ================', () => {
|
|
@@ -1229,7 +2201,7 @@ describe('GENERAL', () => {
|
|
|
1229
2201
|
);
|
|
1230
2202
|
assert.equal(
|
|
1231
2203
|
testUtils.getAPIHistoryLength(),
|
|
1232
|
-
|
|
2204
|
+
5,
|
|
1233
2205
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
1234
2206
|
);
|
|
1235
2207
|
});
|
|
@@ -1320,7 +2292,7 @@ describe('GENERAL', () => {
|
|
|
1320
2292
|
);
|
|
1321
2293
|
assert.equal(
|
|
1322
2294
|
testUtils.getAPIHistoryLength(),
|
|
1323
|
-
|
|
2295
|
+
8,
|
|
1324
2296
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
1325
2297
|
);
|
|
1326
2298
|
});
|