mcdev 4.3.4 → 5.0.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/.coverage-comment-template.md +20 -0
- package/.coverage-comment-template.svelte +178 -0
- package/.eslintrc.json +2 -0
- package/.github/ISSUE_TEMPLATE/bug.yml +1 -0
- package/.github/workflows/code-test.yml +36 -0
- package/.github/workflows/coverage-base-update.yml +57 -0
- package/.github/workflows/coverage-develop-branch.yml +41 -0
- package/.github/workflows/coverage-main-branch.yml +41 -0
- package/.github/workflows/coverage.yml +77 -0
- package/.husky/post-checkout +1 -1
- package/.prettierrc +1 -1
- package/.vscode/extensions.json +0 -4
- package/boilerplate/config.json +1 -1
- package/boilerplate/files/.prettierrc +1 -1
- package/boilerplate/files/.vscode/extensions.json +1 -1
- package/boilerplate/forcedUpdates.json +4 -0
- package/docs/dist/documentation.md +1196 -430
- package/lib/Builder.js +6 -1
- package/lib/Deployer.js +30 -5
- package/lib/MetadataTypeDefinitions.js +8 -6
- package/lib/MetadataTypeInfo.js +8 -6
- package/lib/cli.js +54 -42
- package/lib/index.js +82 -8
- package/lib/metadataTypes/Asset.js +73 -1
- package/lib/metadataTypes/AttributeGroup.js +0 -1
- package/lib/metadataTypes/Automation.js +48 -5
- package/lib/metadataTypes/Campaign.js +20 -7
- package/lib/metadataTypes/ContentArea.js +1 -1
- package/lib/metadataTypes/DataExtension.js +221 -184
- package/lib/metadataTypes/DataExtensionField.js +12 -19
- package/lib/metadataTypes/DataExtensionTemplate.js +1 -1
- package/lib/metadataTypes/DataExtract.js +1 -1
- package/lib/metadataTypes/DataExtractType.js +1 -1
- package/lib/metadataTypes/Email.js +1 -1
- package/lib/metadataTypes/{EmailSendDefinition.js → EmailSend.js} +5 -5
- package/lib/metadataTypes/{EventDefinition.js → Event.js} +17 -35
- package/lib/metadataTypes/{FtpLocation.js → FileLocation.js} +2 -2
- package/lib/metadataTypes/FileTransfer.js +8 -7
- package/lib/metadataTypes/Filter.js +1 -1
- package/lib/metadataTypes/Folder.js +8 -3
- package/lib/metadataTypes/ImportFile.js +6 -6
- package/lib/metadataTypes/{Interaction.js → Journey.js} +311 -147
- package/lib/metadataTypes/List.js +2 -2
- package/lib/metadataTypes/MetadataType.js +318 -90
- package/lib/metadataTypes/MobileCode.js +0 -1
- package/lib/metadataTypes/MobileKeyword.js +336 -40
- package/lib/metadataTypes/MobileMessage.js +473 -0
- package/lib/metadataTypes/Query.js +114 -32
- package/lib/metadataTypes/Role.js +60 -21
- package/lib/metadataTypes/Script.js +2 -3
- package/lib/metadataTypes/SendClassification.js +40 -0
- package/lib/metadataTypes/SetDefinition.js +1 -7
- package/lib/metadataTypes/TransactionalEmail.js +2 -3
- package/lib/metadataTypes/TransactionalMessage.js +1 -2
- package/lib/metadataTypes/TransactionalSMS.js +8 -15
- package/lib/metadataTypes/{TriggeredSendDefinition.js → TriggeredSend.js} +35 -27
- package/lib/metadataTypes/User.js +1177 -0
- package/lib/metadataTypes/definitions/Asset.definition.js +1 -0
- package/lib/metadataTypes/definitions/AttributeGroup.definition.js +1 -0
- package/lib/metadataTypes/definitions/Automation.definition.js +3 -2
- package/lib/metadataTypes/definitions/Campaign.definition.js +79 -4
- package/lib/metadataTypes/definitions/ContentArea.definition.js +1 -0
- package/lib/metadataTypes/definitions/DataExtension.definition.js +2 -1
- 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 +1 -0
- package/lib/metadataTypes/definitions/DataExtractType.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/{EmailSendDefinition.definition.js → EmailSend.definition.js} +4 -2
- package/lib/metadataTypes/definitions/{EventDefinition.definition.js → Event.definition.js} +2 -1
- package/lib/metadataTypes/definitions/{FtpLocation.definition.js → FileLocation.definition.js} +4 -3
- package/lib/metadataTypes/definitions/FileTransfer.definition.js +3 -2
- package/lib/metadataTypes/definitions/Filter.definition.js +1 -0
- package/lib/metadataTypes/definitions/Folder.definition.js +2 -0
- package/lib/metadataTypes/definitions/ImportFile.definition.js +4 -3
- package/lib/metadataTypes/definitions/{Interaction.definition.js → Journey.definition.js} +11 -2
- package/lib/metadataTypes/definitions/List.definition.js +1 -0
- package/lib/metadataTypes/definitions/MobileCode.definition.js +3 -1
- package/lib/metadataTypes/definitions/MobileKeyword.definition.js +27 -17
- package/lib/metadataTypes/definitions/MobileMessage.definition.js +743 -0
- package/lib/metadataTypes/definitions/Query.definition.js +3 -2
- package/lib/metadataTypes/definitions/Role.definition.js +5 -0
- package/lib/metadataTypes/definitions/Script.definition.js +1 -0
- package/lib/metadataTypes/definitions/SendClassification.definition.js +114 -0
- package/lib/metadataTypes/definitions/SetDefinition.definition.js +1 -0
- package/lib/metadataTypes/definitions/TransactionalEmail.definition.js +2 -1
- package/lib/metadataTypes/definitions/TransactionalPush.definition.js +1 -0
- package/lib/metadataTypes/definitions/TransactionalSMS.definition.js +1 -0
- package/lib/metadataTypes/definitions/{TriggeredSendDefinition.definition.js → TriggeredSend.definition.js} +5 -3
- package/lib/metadataTypes/definitions/User.definition.js +365 -0
- package/lib/retrieveChangelog.js +1 -2
- package/lib/util/auth.js +29 -9
- package/lib/util/businessUnit.js +3 -3
- package/lib/util/cli.js +55 -7
- package/lib/util/devops.js +6 -4
- package/lib/util/file.js +55 -13
- package/lib/util/init.config.js +1 -2
- package/lib/util/init.npm.js +3 -3
- package/lib/util/util.js +23 -14
- package/package.json +16 -15
- package/test/general.test.js +62 -0
- package/test/mockRoot/.mcdevrc.json +7 -5
- package/test/mockRoot/deploy/testInstance/_ParentBU_/user/testBlocked_user.user-meta.json +23 -0
- package/test/mockRoot/deploy/testInstance/_ParentBU_/user/testExisting_user.user-meta.json +31 -0
- package/test/mockRoot/deploy/testInstance/_ParentBU_/user/testNew_user.user-meta.json +27 -0
- package/test/mockRoot/deploy/testInstance/testBU/dataExtension/{childBU_dataextension_test.dataExtension-meta.json → testExisting_dataExtension.dataExtension-meta.json} +2 -2
- package/test/mockRoot/deploy/testInstance/testBU/dataExtension/{testDataExtension.dataExtension-meta.json → testNew_dataExtension.dataExtension-meta.json} +2 -2
- package/test/mockRoot/deploy/testInstance/testBU/journey/testExisting_interaction.interaction-meta.json +576 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileKeyword/testNew_keyword.mobileKeyword-meta.amp +2 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileKeyword/testNew_keyword.mobileKeyword-meta.json +10 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileKeyword/testNew_keyword_blocked.mobileKeyword-meta.amp +2 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileKeyword/testNew_keyword_blocked.mobileKeyword-meta.json +10 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileMessage/NTIzOjc4OjA.mobileMessage-meta.amp +1 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileMessage/NTIzOjc4OjA.mobileMessage-meta.json +61 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileMessage/new.mobileMessage-meta.amp +1 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileMessage/new.mobileMessage-meta.json +60 -0
- package/test/mockRoot/deploy/testInstance/testBU/query/testExistingQuery.query-meta.json +1 -1
- package/test/mockRoot/deploy/testInstance/testBU/query/testNewQuery.query-meta.json +1 -1
- package/test/mockRoot/deploy/testInstance/testBU/query/testNewQuery.query-meta.sql +1 -1
- package/test/mockRoot/deploy/testInstance/testBU/transactionalEmail/testExisting_temail.transactionalEmail-meta.json +1 -1
- package/test/mockRoot/deploy/testInstance/testBU/transactionalEmail/testNew_temail.transactionalEmail-meta.json +1 -1
- package/test/resourceFactory.js +13 -0
- package/test/resources/1111111/accountUser/configure-response.xml +70 -0
- package/test/resources/1111111/accountUser/create-response.xml +97 -0
- package/test/resources/1111111/accountUser/retrieve-response.xml +156 -0
- package/test/resources/1111111/accountUser/update-response.xml +111 -0
- package/test/resources/1111111/accountUserAccount/retrieve-response.xml +77 -0
- package/test/resources/1111111/platform/v1/setup/quickflow/data/get-response.json +455 -0
- package/test/resources/1111111/role/retrieve-response.xml +76 -0
- package/test/resources/1111111/user/build-expected.json +16 -0
- package/test/resources/1111111/user/create-expected.json +21 -0
- package/test/resources/1111111/user/retrieve-expected.json +24 -0
- package/test/resources/1111111/user/template-expected.json +16 -0
- package/test/resources/1111111/user/update-expected.json +21 -0
- package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat/delete-response.json +1 -0
- package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat/get-response.json +17 -0
- package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat/patch-response.json +3 -3
- package/test/resources/9999999/automation/v1/queries/get-response.json +21 -4
- package/test/resources/9999999/automation/v1/queries/post-response.json +4 -4
- package/test/resources/9999999/data/v1/customobjectdata/key/{childBU_dataextension_test → testExisting_dataExtension}/rowset/get-response.json +1 -1
- package/test/resources/9999999/dataExtension/build-expected.json +3 -3
- package/test/resources/9999999/dataExtension/create-expected.json +2 -2
- package/test/resources/9999999/dataExtension/create-response.xml +8 -3
- package/test/resources/9999999/dataExtension/retrieve-expected.json +3 -3
- package/test/resources/9999999/dataExtension/retrieve-response.xml +9 -4
- package/test/resources/9999999/dataExtension/template-expected.json +3 -3
- package/test/resources/9999999/dataExtension/update-expected.json +3 -3
- package/test/resources/9999999/dataExtension/update-response.xml +9 -4
- package/test/resources/9999999/dataExtensionField/retrieve-response.xml +14 -9
- package/test/resources/9999999/interaction/v1/interactions/get-response.json +312 -0
- package/test/resources/9999999/interaction/v1/interactions/key_testExisting_interaction/get-response.json +312 -0
- package/test/resources/9999999/interaction/v1/interactions/key_testExisting_interaction/put-response.json +592 -0
- package/test/resources/9999999/journey/build-expected.json +572 -0
- package/test/resources/9999999/journey/get-expected.json +576 -0
- package/test/resources/9999999/journey/put-expected.json +576 -0
- package/test/resources/9999999/journey/template-expected.json +572 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/keyword/NXV4ZFMwTEFwRVczd3RaLUF5X3p5dzo4Njow/get-response.json +42 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/keyword/cTVJaG5oSDJPVUNHcUh6Z3pQT2tVdzo4Njow/delete-response.json +0 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/keyword/get-response.json +1 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/keyword/post-response.json +3 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/message/NTIzOjc4OjA/delete-response.json +0 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/message/NTIzOjc4OjA/get-response.json +106 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/message/NTIzOjc4OjA/post-response.json +0 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/message/NTQ3Ojc4OjA/get-response.json +127 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/message/get-response.json +129 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/message/post-response.json +3 -0
- package/test/resources/9999999/legacy/v1/beta2/data/campaign/get-response.json +29 -0
- package/test/resources/9999999/messaging/v1/email/definitions/post-response.json +1 -1
- package/test/resources/9999999/messaging/v1/email/definitions/testExisting_temail/get-response.json +1 -1
- package/test/resources/9999999/messaging/v1/email/definitions/testExisting_temail/patch-response.json +1 -1
- package/test/resources/9999999/mobileKeyword/build-expected.amp +2 -0
- package/test/resources/9999999/mobileKeyword/build-expected.json +9 -0
- package/test/resources/9999999/mobileKeyword/get-expected.amp +2 -0
- package/test/resources/9999999/mobileKeyword/get-expected.json +15 -0
- package/test/resources/9999999/mobileKeyword/post-create-expected.amp +2 -0
- package/test/resources/9999999/mobileKeyword/post-create-expected.json +17 -0
- package/test/resources/9999999/mobileKeyword/template-expected.amp +2 -0
- package/test/resources/9999999/mobileKeyword/template-expected.json +9 -0
- package/test/resources/9999999/mobileMessage/build-expected.amp +1 -0
- package/test/resources/9999999/mobileMessage/build-expected.json +60 -0
- package/test/resources/9999999/mobileMessage/get-expected.amp +1 -0
- package/test/resources/9999999/mobileMessage/get-expected.json +61 -0
- package/test/resources/9999999/mobileMessage/post-create-expected.amp +1 -0
- package/test/resources/9999999/mobileMessage/post-create-expected.json +63 -0
- package/test/resources/9999999/mobileMessage/post-update-expected.amp +1 -0
- package/test/resources/9999999/mobileMessage/post-update-expected.json +61 -0
- package/test/resources/9999999/mobileMessage/template-expected.amp +1 -0
- package/test/resources/9999999/mobileMessage/template-expected.json +60 -0
- package/test/resources/9999999/query/build-expected.json +1 -1
- package/test/resources/9999999/query/get-expected.json +1 -1
- package/test/resources/9999999/query/get2-expected.json +11 -0
- package/test/resources/9999999/query/patch-expected.json +1 -1
- package/test/resources/9999999/query/post-expected.json +1 -1
- package/test/resources/9999999/query/template-expected.json +1 -1
- package/test/resources/9999999/queryDefinition/retrieve-response.xml +30 -0
- package/test/resources/9999999/transactionalEmail/build-expected.json +5 -5
- package/test/resources/9999999/transactionalEmail/get-expected.json +1 -1
- package/test/resources/9999999/transactionalEmail/patch-expected.json +1 -1
- package/test/resources/9999999/transactionalEmail/post-expected.json +1 -1
- package/test/resources/9999999/transactionalEmail/template-expected.json +5 -5
- package/test/resources/9999999/transactionalPush/build-expected.json +2 -2
- package/test/resources/9999999/transactionalPush/template-expected.json +2 -2
- package/test/resources/9999999/transactionalSMS/build-expected.json +3 -3
- package/test/resources/9999999/transactionalSMS/template-expected.json +3 -3
- package/test/{dataExtension.test.js → type.dataExtension.test.js} +78 -21
- package/test/{interaction.test.js → type.journey.test.js} +64 -30
- package/test/type.mobileKeyword.test.js +250 -0
- package/test/type.mobileMessage.test.js +205 -0
- package/test/{query.test.js → type.query.test.js} +102 -5
- package/test/{transactionalEmail.test.js → type.transactionalEmail.test.js} +40 -2
- package/test/{transactionalPush.test.js → type.transactionalPush.test.js} +41 -2
- package/test/{transactionalSMS.test.js → type.transactionalSMS.test.js} +73 -3
- package/test/type.user.test.js +160 -0
- package/test/utils.js +17 -5
- package/types/mcdev.d.js +48 -15
- package/.github/workflows/code-analysis.yml +0 -57
- package/lib/metadataTypes/AccountUser.js +0 -426
- package/lib/metadataTypes/definitions/AccountUser.definition.js +0 -227
- package/test/mockRoot/deploy/testInstance/testBU/interaction/testExisting_interaction.interaction-meta.json +0 -266
- package/test/resources/9999999/interaction/build-expected.json +0 -260
- package/test/resources/9999999/interaction/get-expected.json +0 -264
- package/test/resources/9999999/interaction/put-expected.json +0 -264
- package/test/resources/9999999/interaction/template-expected.json +0 -260
- package/test/resources/9999999/interaction/v1/interactions/put-response.json +0 -280
- /package/test/mockRoot/deploy/testInstance/testBU/{interaction → journey}/testNew_interaction.interaction-meta.json +0 -0
- /package/test/resources/9999999/{interaction → journey}/post-expected.json +0 -0
|
@@ -6,7 +6,7 @@ const cache = require('../lib/util/cache');
|
|
|
6
6
|
const testUtils = require('./utils');
|
|
7
7
|
const handler = require('../lib/index');
|
|
8
8
|
|
|
9
|
-
describe('
|
|
9
|
+
describe('type: journey', () => {
|
|
10
10
|
beforeEach(() => {
|
|
11
11
|
testUtils.mockSetup();
|
|
12
12
|
});
|
|
@@ -15,25 +15,26 @@ describe('interaction', () => {
|
|
|
15
15
|
});
|
|
16
16
|
|
|
17
17
|
describe('Retrieve ================', () => {
|
|
18
|
-
it('Should retrieve a
|
|
18
|
+
it('Should retrieve a journey', async () => {
|
|
19
19
|
// WHEN
|
|
20
|
-
await handler.retrieve('testInstance/testBU', ['
|
|
20
|
+
await handler.retrieve('testInstance/testBU', ['journey']);
|
|
21
21
|
// THEN
|
|
22
|
+
assert.equal(process.exitCode, false, 'retrieve should not have thrown an error');
|
|
22
23
|
// get results from cache
|
|
23
24
|
const result = cache.getCache();
|
|
24
25
|
assert.equal(
|
|
25
|
-
result.
|
|
26
|
+
result.journey ? Object.keys(result.journey).length : 0,
|
|
26
27
|
2,
|
|
27
|
-
'only 2
|
|
28
|
+
'only 2 journeys expected'
|
|
28
29
|
);
|
|
29
30
|
assert.deepEqual(
|
|
30
|
-
await testUtils.getActualJson('testExisting_interaction', '
|
|
31
|
-
await testUtils.getExpectedJson('9999999', '
|
|
31
|
+
await testUtils.getActualJson('testExisting_interaction', 'journey'),
|
|
32
|
+
await testUtils.getExpectedJson('9999999', 'journey', 'get'),
|
|
32
33
|
'returned JSON was not equal expected'
|
|
33
34
|
);
|
|
34
35
|
assert.equal(
|
|
35
36
|
testUtils.getAPIHistoryLength(),
|
|
36
|
-
|
|
37
|
+
13,
|
|
37
38
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
38
39
|
);
|
|
39
40
|
return;
|
|
@@ -43,81 +44,114 @@ describe('interaction', () => {
|
|
|
43
44
|
beforeEach(() => {
|
|
44
45
|
testUtils.mockSetup(true);
|
|
45
46
|
});
|
|
46
|
-
it('Should create & upsert a
|
|
47
|
+
it('Should create & upsert a journey', async () => {
|
|
47
48
|
// WHEN
|
|
48
|
-
await handler.deploy('testInstance/testBU', ['
|
|
49
|
+
await handler.deploy('testInstance/testBU', ['journey']);
|
|
49
50
|
// THEN
|
|
51
|
+
assert.equal(process.exitCode, false, 'deploy should not have thrown an error');
|
|
50
52
|
// get results from cache
|
|
51
53
|
const result = cache.getCache();
|
|
52
54
|
assert.equal(
|
|
53
|
-
result.
|
|
55
|
+
result.journey ? Object.keys(result.journey).length : 0,
|
|
54
56
|
3,
|
|
55
|
-
'3
|
|
57
|
+
'3 journeys expected'
|
|
56
58
|
);
|
|
57
59
|
// confirm created item
|
|
58
60
|
assert.deepEqual(
|
|
59
|
-
await testUtils.getActualJson('testNew_interaction', '
|
|
60
|
-
await testUtils.getExpectedJson('9999999', '
|
|
61
|
-
'returned JSON was not equal expected for insert
|
|
61
|
+
await testUtils.getActualJson('testNew_interaction', 'journey'),
|
|
62
|
+
await testUtils.getExpectedJson('9999999', 'journey', 'post'),
|
|
63
|
+
'returned JSON was not equal expected for insert journey'
|
|
62
64
|
);
|
|
63
65
|
|
|
64
66
|
// confirm updated item
|
|
65
67
|
assert.deepEqual(
|
|
66
|
-
await testUtils.getActualJson('testExisting_interaction', '
|
|
67
|
-
await testUtils.getExpectedJson('9999999', '
|
|
68
|
-
'returned JSON was not equal expected for update
|
|
68
|
+
await testUtils.getActualJson('testExisting_interaction', 'journey'),
|
|
69
|
+
await testUtils.getExpectedJson('9999999', 'journey', 'put'), // watch out - journey api wants put instead of patch for updates
|
|
70
|
+
'returned JSON was not equal expected for update journey'
|
|
69
71
|
);
|
|
70
72
|
|
|
71
73
|
// check number of API calls
|
|
72
74
|
assert.equal(
|
|
73
75
|
testUtils.getAPIHistoryLength(),
|
|
74
|
-
|
|
76
|
+
11,
|
|
75
77
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
76
78
|
);
|
|
77
79
|
return;
|
|
78
80
|
});
|
|
81
|
+
it('Should NOT change the key during update with --changeKeyValue and instead fail due to missing support', async () => {
|
|
82
|
+
// WHEN
|
|
83
|
+
handler.setOptions({ changeKeyValue: 'updatedKey' });
|
|
84
|
+
await handler.deploy('testInstance/testBU', ['journey'], ['testExisting_interaction']);
|
|
85
|
+
// THEN
|
|
86
|
+
assert.equal(
|
|
87
|
+
process.exitCode,
|
|
88
|
+
1,
|
|
89
|
+
'deploy should have thrown an error due to lack of support'
|
|
90
|
+
);
|
|
91
|
+
return;
|
|
92
|
+
});
|
|
79
93
|
});
|
|
80
94
|
describe('Templating ================', () => {
|
|
81
|
-
it('Should create a
|
|
95
|
+
it('Should create a journey template via buildTemplate and build it', async () => {
|
|
82
96
|
// download first before we test buildTemplate
|
|
83
|
-
await handler.retrieve('testInstance/testBU', ['
|
|
97
|
+
await handler.retrieve('testInstance/testBU', ['journey']);
|
|
84
98
|
// buildTemplate
|
|
85
99
|
const result = await handler.buildTemplate(
|
|
86
100
|
'testInstance/testBU',
|
|
87
|
-
'
|
|
101
|
+
'journey',
|
|
88
102
|
['testExisting_interaction'],
|
|
89
103
|
'testSourceMarket'
|
|
90
104
|
);
|
|
105
|
+
assert.equal(process.exitCode, false, 'buildTemplate should not have thrown an error');
|
|
91
106
|
assert.equal(
|
|
92
|
-
result.
|
|
107
|
+
result.journey ? Object.keys(result.journey).length : 0,
|
|
93
108
|
1,
|
|
94
|
-
'only one
|
|
109
|
+
'only one journey expected'
|
|
95
110
|
);
|
|
96
111
|
assert.deepEqual(
|
|
97
|
-
await testUtils.getActualTemplateJson('testExisting_interaction', '
|
|
98
|
-
await testUtils.getExpectedJson('9999999', '
|
|
112
|
+
await testUtils.getActualTemplateJson('testExisting_interaction', 'journey'),
|
|
113
|
+
await testUtils.getExpectedJson('9999999', 'journey', 'template'),
|
|
99
114
|
'returned template JSON was not equal expected'
|
|
100
115
|
);
|
|
101
116
|
|
|
102
117
|
// buildDefinition
|
|
103
118
|
await handler.buildDefinition(
|
|
104
119
|
'testInstance/testBU',
|
|
105
|
-
'
|
|
120
|
+
'journey',
|
|
106
121
|
'testExisting_interaction',
|
|
107
122
|
'testTargetMarket'
|
|
108
123
|
);
|
|
124
|
+
assert.equal(
|
|
125
|
+
process.exitCode,
|
|
126
|
+
false,
|
|
127
|
+
'buildDefinition should not have thrown an error'
|
|
128
|
+
);
|
|
109
129
|
assert.deepEqual(
|
|
110
|
-
await testUtils.getActualDeployJson('
|
|
111
|
-
await testUtils.getExpectedJson('9999999', '
|
|
130
|
+
await testUtils.getActualDeployJson('testTemplated_interaction', 'journey'),
|
|
131
|
+
await testUtils.getExpectedJson('9999999', 'journey', 'build'),
|
|
112
132
|
'returned deployment JSON was not equal expected'
|
|
113
133
|
);
|
|
114
134
|
|
|
115
135
|
assert.equal(
|
|
116
136
|
testUtils.getAPIHistoryLength(),
|
|
117
|
-
|
|
137
|
+
13,
|
|
118
138
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
119
139
|
);
|
|
120
140
|
return;
|
|
121
141
|
});
|
|
122
142
|
});
|
|
143
|
+
describe('Delete ================', () => {
|
|
144
|
+
// TODO: add this test
|
|
145
|
+
it('Should delete the item'); // , async () => {
|
|
146
|
+
// // WHEN
|
|
147
|
+
// const result = await handler.deleteByKey('testInstance/testBU', 'mobileKeyword', [
|
|
148
|
+
// 'testExisting_keyword',
|
|
149
|
+
// ]);
|
|
150
|
+
// // THEN
|
|
151
|
+
// assert.equal(process.exitCode, false, 'delete should not have thrown an error');
|
|
152
|
+
|
|
153
|
+
// assert.equal(result, true, 'should have deleted the item');
|
|
154
|
+
// return;
|
|
155
|
+
// });
|
|
156
|
+
});
|
|
123
157
|
});
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
const chai = require('chai');
|
|
2
|
+
const chaiFiles = require('chai-files');
|
|
3
|
+
const assert = chai.assert;
|
|
4
|
+
chai.use(chaiFiles);
|
|
5
|
+
const expect = chai.expect;
|
|
6
|
+
const file = chaiFiles.file;
|
|
7
|
+
const cache = require('../lib/util/cache');
|
|
8
|
+
const testUtils = require('./utils');
|
|
9
|
+
const handler = require('../lib/index');
|
|
10
|
+
|
|
11
|
+
describe('type: mobileKeyword', () => {
|
|
12
|
+
beforeEach(() => {
|
|
13
|
+
testUtils.mockSetup();
|
|
14
|
+
});
|
|
15
|
+
afterEach(() => {
|
|
16
|
+
testUtils.mockReset();
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
describe('Retrieve ================', () => {
|
|
20
|
+
it('Should retrieve a mobileKeyword', async () => {
|
|
21
|
+
// WHEN
|
|
22
|
+
await handler.retrieve('testInstance/testBU', ['mobileKeyword']);
|
|
23
|
+
// THEN
|
|
24
|
+
assert.equal(process.exitCode, false, 'retrieve should not have thrown an error');
|
|
25
|
+
// get results from cache
|
|
26
|
+
const result = cache.getCache();
|
|
27
|
+
assert.equal(
|
|
28
|
+
result.mobileKeyword ? Object.keys(result.mobileKeyword).length : 0,
|
|
29
|
+
1,
|
|
30
|
+
'only 1 mobileKeywords expected'
|
|
31
|
+
);
|
|
32
|
+
assert.deepEqual(
|
|
33
|
+
await testUtils.getActualJson('testExisting_keyword', 'mobileKeyword'),
|
|
34
|
+
await testUtils.getExpectedJson('9999999', 'mobileKeyword', 'get'),
|
|
35
|
+
'saved JSON was not equal expected'
|
|
36
|
+
);
|
|
37
|
+
expect(
|
|
38
|
+
file(testUtils.getActualFile('testExisting_keyword', 'mobileKeyword', 'amp'))
|
|
39
|
+
).to.equal(file(testUtils.getExpectedFile('9999999', 'mobileKeyword', 'get', 'amp')));
|
|
40
|
+
assert.equal(
|
|
41
|
+
testUtils.getAPIHistoryLength(),
|
|
42
|
+
2,
|
|
43
|
+
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
44
|
+
);
|
|
45
|
+
return;
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
describe('Deploy ================', () => {
|
|
49
|
+
beforeEach(() => {
|
|
50
|
+
testUtils.mockSetup(true);
|
|
51
|
+
});
|
|
52
|
+
it('Should create (but not update) a mobileKeyword', async () => {
|
|
53
|
+
// WHEN
|
|
54
|
+
await handler.deploy('testInstance/testBU', ['mobileKeyword'], ['testNew_keyword']);
|
|
55
|
+
// THEN
|
|
56
|
+
assert.equal(process.exitCode, false, 'deploy should not have thrown an error');
|
|
57
|
+
// get results from cache
|
|
58
|
+
const result = cache.getCache();
|
|
59
|
+
assert.equal(
|
|
60
|
+
result.mobileKeyword ? Object.keys(result.mobileKeyword).length : 0,
|
|
61
|
+
2,
|
|
62
|
+
'2 mobileKeywords expected'
|
|
63
|
+
);
|
|
64
|
+
// confirm created item
|
|
65
|
+
assert.deepEqual(
|
|
66
|
+
await testUtils.getActualJson('testNew_keyword', 'mobileKeyword'),
|
|
67
|
+
await testUtils.getExpectedJson('9999999', 'mobileKeyword', 'post-create'),
|
|
68
|
+
'returned JSON was not equal expected for insert mobileKeyword'
|
|
69
|
+
);
|
|
70
|
+
expect(
|
|
71
|
+
file(testUtils.getActualFile('testNew_keyword', 'mobileKeyword', 'amp'))
|
|
72
|
+
).to.equal(
|
|
73
|
+
file(testUtils.getExpectedFile('9999999', 'mobileKeyword', 'post-create', 'amp'))
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
// confirm updated item
|
|
77
|
+
// eslint-disable-next-line no-console
|
|
78
|
+
console.log(
|
|
79
|
+
'Not testing UPDATE because the API only responds with an empty body unless there are errors in the request body'
|
|
80
|
+
);
|
|
81
|
+
|
|
82
|
+
// check number of API calls
|
|
83
|
+
assert.equal(
|
|
84
|
+
testUtils.getAPIHistoryLength(),
|
|
85
|
+
4,
|
|
86
|
+
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
87
|
+
);
|
|
88
|
+
return;
|
|
89
|
+
});
|
|
90
|
+
it('Should not create a mobileKeyword with wrong type', async () => {
|
|
91
|
+
// WHEN
|
|
92
|
+
await handler.deploy(
|
|
93
|
+
'testInstance/testBU',
|
|
94
|
+
['mobileKeyword'],
|
|
95
|
+
['testNew_keyword_blocked']
|
|
96
|
+
);
|
|
97
|
+
// THEN
|
|
98
|
+
assert.equal(process.exitCode, true, 'deploy should have thrown an error');
|
|
99
|
+
|
|
100
|
+
// check number of API calls
|
|
101
|
+
assert.equal(
|
|
102
|
+
testUtils.getAPIHistoryLength(),
|
|
103
|
+
2,
|
|
104
|
+
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
105
|
+
);
|
|
106
|
+
return;
|
|
107
|
+
});
|
|
108
|
+
it('Should change the key during update via --changeKeyValue');
|
|
109
|
+
});
|
|
110
|
+
describe('Templating ================', () => {
|
|
111
|
+
it('Should create a mobileKeyword template via retrieveAsTemplate and build it', async () => {
|
|
112
|
+
// GIVEN there is a template
|
|
113
|
+
const result = await handler.retrieveAsTemplate(
|
|
114
|
+
'testInstance/testBU',
|
|
115
|
+
'mobileKeyword',
|
|
116
|
+
['testExisting_keyword'],
|
|
117
|
+
'testSourceMarket'
|
|
118
|
+
);
|
|
119
|
+
// WHEN
|
|
120
|
+
assert.equal(
|
|
121
|
+
process.exitCode,
|
|
122
|
+
false,
|
|
123
|
+
'retrieveAsTemplate should not have thrown an error'
|
|
124
|
+
);
|
|
125
|
+
assert.equal(
|
|
126
|
+
result.mobileKeyword ? Object.keys(result.mobileKeyword).length : 0,
|
|
127
|
+
1,
|
|
128
|
+
'only one item expected'
|
|
129
|
+
);
|
|
130
|
+
assert.deepEqual(
|
|
131
|
+
await testUtils.getActualTemplateJson('testExisting_keyword', 'mobileKeyword'),
|
|
132
|
+
await testUtils.getExpectedJson('9999999', 'mobileKeyword', 'template'),
|
|
133
|
+
'returned template JSON was not equal expected'
|
|
134
|
+
);
|
|
135
|
+
expect(
|
|
136
|
+
file(
|
|
137
|
+
testUtils.getActualTemplateFile('testExisting_keyword', 'mobileKeyword', 'amp')
|
|
138
|
+
)
|
|
139
|
+
).to.equal(
|
|
140
|
+
file(testUtils.getExpectedFile('9999999', 'mobileKeyword', 'template', 'amp'))
|
|
141
|
+
);
|
|
142
|
+
assert.equal(
|
|
143
|
+
testUtils.getAPIHistoryLength(),
|
|
144
|
+
2,
|
|
145
|
+
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
146
|
+
);
|
|
147
|
+
return;
|
|
148
|
+
});
|
|
149
|
+
it('Should create a mobileKeyword template via buildTemplate and build it', async () => {
|
|
150
|
+
// download first before we test buildTemplate
|
|
151
|
+
await handler.retrieve('testInstance/testBU', ['mobileKeyword']);
|
|
152
|
+
// buildTemplate
|
|
153
|
+
const result = await handler.buildTemplate(
|
|
154
|
+
'testInstance/testBU',
|
|
155
|
+
'mobileKeyword',
|
|
156
|
+
['testExisting_keyword'],
|
|
157
|
+
'testSourceMarket'
|
|
158
|
+
);
|
|
159
|
+
assert.equal(process.exitCode, false, 'buildTemplate should not have thrown an error');
|
|
160
|
+
|
|
161
|
+
assert.equal(
|
|
162
|
+
result.mobileKeyword ? Object.keys(result.mobileKeyword).length : 0,
|
|
163
|
+
1,
|
|
164
|
+
'only one mobileKeyword expected'
|
|
165
|
+
);
|
|
166
|
+
assert.deepEqual(
|
|
167
|
+
await testUtils.getActualTemplateJson('testExisting_keyword', 'mobileKeyword'),
|
|
168
|
+
await testUtils.getExpectedJson('9999999', 'mobileKeyword', 'template'),
|
|
169
|
+
'returned template JSON was not equal expected'
|
|
170
|
+
);
|
|
171
|
+
expect(
|
|
172
|
+
file(
|
|
173
|
+
testUtils.getActualTemplateFile('testExisting_keyword', 'mobileKeyword', 'amp')
|
|
174
|
+
)
|
|
175
|
+
).to.equal(
|
|
176
|
+
file(testUtils.getExpectedFile('9999999', 'mobileKeyword', 'template', 'amp'))
|
|
177
|
+
);
|
|
178
|
+
|
|
179
|
+
// buildDefinition
|
|
180
|
+
await handler.buildDefinition(
|
|
181
|
+
'testInstance/testBU',
|
|
182
|
+
'mobileKeyword',
|
|
183
|
+
'testExisting_keyword',
|
|
184
|
+
'testTargetMarket'
|
|
185
|
+
);
|
|
186
|
+
assert.equal(
|
|
187
|
+
process.exitCode,
|
|
188
|
+
false,
|
|
189
|
+
'buildDefinition should not have thrown an error'
|
|
190
|
+
);
|
|
191
|
+
assert.deepEqual(
|
|
192
|
+
await testUtils.getActualDeployJson('testTemplated_keyword', 'mobileKeyword'),
|
|
193
|
+
await testUtils.getExpectedJson('9999999', 'mobileKeyword', 'build'),
|
|
194
|
+
'returned deployment JSON was not equal expected'
|
|
195
|
+
);
|
|
196
|
+
expect(
|
|
197
|
+
file(testUtils.getActualDeployFile('testTemplated_keyword', 'mobileKeyword', 'amp'))
|
|
198
|
+
).to.equal(file(testUtils.getExpectedFile('9999999', 'mobileKeyword', 'build', 'amp')));
|
|
199
|
+
|
|
200
|
+
assert.equal(
|
|
201
|
+
testUtils.getAPIHistoryLength(),
|
|
202
|
+
2,
|
|
203
|
+
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
204
|
+
);
|
|
205
|
+
return;
|
|
206
|
+
});
|
|
207
|
+
});
|
|
208
|
+
describe('Delete ================', () => {
|
|
209
|
+
it('Should delete the item', async () => {
|
|
210
|
+
// WHEN
|
|
211
|
+
const result = await handler.deleteByKey('testInstance/testBU', 'mobileKeyword', [
|
|
212
|
+
'testExisting_keyword',
|
|
213
|
+
]);
|
|
214
|
+
// THEN
|
|
215
|
+
assert.equal(process.exitCode, false, 'delete should not have thrown an error');
|
|
216
|
+
|
|
217
|
+
assert.equal(result, true, 'should have deleted the item');
|
|
218
|
+
return;
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
describe('CI/CD ================', () => {
|
|
222
|
+
it('Should return a list of files based on their type and key', async () => {
|
|
223
|
+
// WHEN
|
|
224
|
+
const fileList = await handler.getFilesToCommit(
|
|
225
|
+
'testInstance/testBU',
|
|
226
|
+
'mobileKeyword',
|
|
227
|
+
['testExisting_keyword']
|
|
228
|
+
);
|
|
229
|
+
// THEN
|
|
230
|
+
assert.equal(
|
|
231
|
+
process.exitCode,
|
|
232
|
+
false,
|
|
233
|
+
'getFilesToCommit should not have thrown an error'
|
|
234
|
+
);
|
|
235
|
+
assert.equal(fileList.length, 2, 'expected only 2 file paths');
|
|
236
|
+
|
|
237
|
+
assert.equal(
|
|
238
|
+
fileList[0].split('\\').join('/'),
|
|
239
|
+
'retrieve/testInstance/testBU/mobileKeyword/testExisting_keyword.mobileKeyword-meta.json',
|
|
240
|
+
'wrong JSON path'
|
|
241
|
+
);
|
|
242
|
+
assert.equal(
|
|
243
|
+
fileList[1].split('\\').join('/'),
|
|
244
|
+
'retrieve/testInstance/testBU/mobileKeyword/testExisting_keyword.mobileKeyword-meta.amp',
|
|
245
|
+
'wrong AMP path'
|
|
246
|
+
);
|
|
247
|
+
return;
|
|
248
|
+
});
|
|
249
|
+
});
|
|
250
|
+
});
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
const chai = require('chai');
|
|
2
|
+
const chaiFiles = require('chai-files');
|
|
3
|
+
const assert = chai.assert;
|
|
4
|
+
chai.use(chaiFiles);
|
|
5
|
+
const expect = chai.expect;
|
|
6
|
+
const file = chaiFiles.file;
|
|
7
|
+
const cache = require('../lib/util/cache');
|
|
8
|
+
const testUtils = require('./utils');
|
|
9
|
+
const handler = require('../lib/index');
|
|
10
|
+
|
|
11
|
+
describe('type: mobileMessage', () => {
|
|
12
|
+
beforeEach(() => {
|
|
13
|
+
testUtils.mockSetup();
|
|
14
|
+
});
|
|
15
|
+
afterEach(() => {
|
|
16
|
+
testUtils.mockReset();
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
describe('Retrieve ================', () => {
|
|
20
|
+
it('Should retrieve a mobileMessage', async () => {
|
|
21
|
+
// WHEN
|
|
22
|
+
await handler.retrieve('testInstance/testBU', ['mobileMessage']);
|
|
23
|
+
// THEN
|
|
24
|
+
assert.equal(process.exitCode, false, 'retrieve should not have thrown an error');
|
|
25
|
+
// get results from cache
|
|
26
|
+
const result = cache.getCache();
|
|
27
|
+
assert.equal(
|
|
28
|
+
result.mobileMessage ? Object.keys(result.mobileMessage).length : 0,
|
|
29
|
+
1,
|
|
30
|
+
'only 1 mobileMessages expected'
|
|
31
|
+
);
|
|
32
|
+
assert.deepEqual(
|
|
33
|
+
await testUtils.getActualJson('NTIzOjc4OjA', 'mobileMessage'),
|
|
34
|
+
await testUtils.getExpectedJson('9999999', 'mobileMessage', 'get'),
|
|
35
|
+
'saved JSON was not equal expected'
|
|
36
|
+
);
|
|
37
|
+
expect(file(testUtils.getActualFile('NTIzOjc4OjA', 'mobileMessage', 'amp'))).to.equal(
|
|
38
|
+
file(testUtils.getExpectedFile('9999999', 'mobileMessage', 'get', 'amp'))
|
|
39
|
+
);
|
|
40
|
+
assert.equal(
|
|
41
|
+
testUtils.getAPIHistoryLength(),
|
|
42
|
+
4,
|
|
43
|
+
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
44
|
+
);
|
|
45
|
+
return;
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
describe('Deploy ================', () => {
|
|
49
|
+
beforeEach(() => {
|
|
50
|
+
testUtils.mockSetup(true);
|
|
51
|
+
});
|
|
52
|
+
it('Should create & update items', async () => {
|
|
53
|
+
// WHEN
|
|
54
|
+
await handler.deploy('testInstance/testBU', ['mobileMessage']);
|
|
55
|
+
// THEN
|
|
56
|
+
assert.equal(process.exitCode, false, 'deploy should not have thrown an error');
|
|
57
|
+
// get results from cache
|
|
58
|
+
const result = cache.getCache();
|
|
59
|
+
assert.equal(
|
|
60
|
+
result.mobileMessage ? Object.keys(result.mobileMessage).length : 0,
|
|
61
|
+
2,
|
|
62
|
+
'2 mobileMessages expected'
|
|
63
|
+
);
|
|
64
|
+
// confirm created item
|
|
65
|
+
assert.deepEqual(
|
|
66
|
+
await testUtils.getActualJson('NTQ3Ojc4OjA', 'mobileMessage'),
|
|
67
|
+
await testUtils.getExpectedJson('9999999', 'mobileMessage', 'post-create'),
|
|
68
|
+
'returned JSON was not equal expected for insert mobileMessage'
|
|
69
|
+
);
|
|
70
|
+
expect(file(testUtils.getActualFile('NTQ3Ojc4OjA', 'mobileMessage', 'amp'))).to.equal(
|
|
71
|
+
file(testUtils.getExpectedFile('9999999', 'mobileMessage', 'post-create', 'amp'))
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
// confirm updated item
|
|
75
|
+
assert.deepEqual(
|
|
76
|
+
await testUtils.getActualJson('NTIzOjc4OjA', 'mobileMessage'),
|
|
77
|
+
await testUtils.getExpectedJson('9999999', 'mobileMessage', 'post-update'), // watch out - mobileMessage api wants put instead of patch for updates
|
|
78
|
+
'returned JSON was not equal expected for update mobileMessage'
|
|
79
|
+
);
|
|
80
|
+
expect(file(testUtils.getActualFile('NTIzOjc4OjA', 'mobileMessage', 'amp'))).to.equal(
|
|
81
|
+
file(testUtils.getExpectedFile('9999999', 'mobileMessage', 'post-update', 'amp'))
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
// check number of API calls
|
|
85
|
+
assert.equal(
|
|
86
|
+
testUtils.getAPIHistoryLength(),
|
|
87
|
+
8,
|
|
88
|
+
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
89
|
+
);
|
|
90
|
+
return;
|
|
91
|
+
});
|
|
92
|
+
it('Should NOT change the key during update with --changeKeyValue and instead fail due to missing support', async () => {
|
|
93
|
+
// WHEN
|
|
94
|
+
handler.setOptions({ changeKeyValue: 'updatedKey' });
|
|
95
|
+
await handler.deploy('testInstance/testBU', ['mobileMessage'], ['NTIzOjc4OjA']);
|
|
96
|
+
// THEN
|
|
97
|
+
assert.equal(
|
|
98
|
+
process.exitCode,
|
|
99
|
+
1,
|
|
100
|
+
'deploy should have thrown an error due to lack of support'
|
|
101
|
+
);
|
|
102
|
+
return;
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
describe('Templating ================', () => {
|
|
106
|
+
it('Should create a mobileMessage template via buildTemplate and build it', async () => {
|
|
107
|
+
// download first before we test buildTemplate
|
|
108
|
+
await handler.retrieve('testInstance/testBU', ['mobileMessage']);
|
|
109
|
+
// buildTemplate
|
|
110
|
+
const result = await handler.buildTemplate(
|
|
111
|
+
'testInstance/testBU',
|
|
112
|
+
'mobileMessage',
|
|
113
|
+
['NTIzOjc4OjA'],
|
|
114
|
+
'testSourceMarket'
|
|
115
|
+
);
|
|
116
|
+
assert.equal(process.exitCode, false, 'buildTemplate should not have thrown an error');
|
|
117
|
+
|
|
118
|
+
assert.equal(
|
|
119
|
+
result.mobileMessage ? Object.keys(result.mobileMessage).length : 0,
|
|
120
|
+
1,
|
|
121
|
+
'only one mobileMessage expected'
|
|
122
|
+
);
|
|
123
|
+
assert.deepEqual(
|
|
124
|
+
await testUtils.getActualTemplateJson('NTIzOjc4OjA', 'mobileMessage'),
|
|
125
|
+
await testUtils.getExpectedJson('9999999', 'mobileMessage', 'template'),
|
|
126
|
+
'returned template JSON was not equal expected'
|
|
127
|
+
);
|
|
128
|
+
expect(
|
|
129
|
+
file(testUtils.getActualTemplateFile('NTIzOjc4OjA', 'mobileMessage', 'amp'))
|
|
130
|
+
).to.equal(
|
|
131
|
+
file(testUtils.getExpectedFile('9999999', 'mobileMessage', 'template', 'amp'))
|
|
132
|
+
);
|
|
133
|
+
|
|
134
|
+
// buildDefinition
|
|
135
|
+
await handler.buildDefinition(
|
|
136
|
+
'testInstance/testBU',
|
|
137
|
+
'mobileMessage',
|
|
138
|
+
'NTIzOjc4OjA',
|
|
139
|
+
'testTargetMarket'
|
|
140
|
+
);
|
|
141
|
+
assert.equal(
|
|
142
|
+
process.exitCode,
|
|
143
|
+
false,
|
|
144
|
+
'buildDefinition should not have thrown an error'
|
|
145
|
+
);
|
|
146
|
+
assert.deepEqual(
|
|
147
|
+
await testUtils.getActualDeployJson('NTIzOjc4OjA', 'mobileMessage'),
|
|
148
|
+
await testUtils.getExpectedJson('9999999', 'mobileMessage', 'build'),
|
|
149
|
+
'returned deployment JSON was not equal expected'
|
|
150
|
+
);
|
|
151
|
+
expect(
|
|
152
|
+
file(testUtils.getActualDeployFile('NTIzOjc4OjA', 'mobileMessage', 'amp'))
|
|
153
|
+
).to.equal(file(testUtils.getExpectedFile('9999999', 'mobileMessage', 'build', 'amp')));
|
|
154
|
+
|
|
155
|
+
assert.equal(
|
|
156
|
+
testUtils.getAPIHistoryLength(),
|
|
157
|
+
4,
|
|
158
|
+
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
159
|
+
);
|
|
160
|
+
return;
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
describe('Delete ================', () => {
|
|
164
|
+
it('Should delete the item', async () => {
|
|
165
|
+
// WHEN
|
|
166
|
+
const result = await handler.deleteByKey('testInstance/testBU', 'mobileMessage', [
|
|
167
|
+
'NTIzOjc4OjA',
|
|
168
|
+
]);
|
|
169
|
+
// THEN
|
|
170
|
+
assert.equal(process.exitCode, false, 'delete should not have thrown an error');
|
|
171
|
+
|
|
172
|
+
assert.equal(result, true, 'should have deleted the item');
|
|
173
|
+
return;
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
describe('CI/CD ================', () => {
|
|
177
|
+
it('Should return a list of files based on their type and key', async () => {
|
|
178
|
+
// WHEN
|
|
179
|
+
const fileList = await handler.getFilesToCommit(
|
|
180
|
+
'testInstance/testBU',
|
|
181
|
+
'mobileMessage',
|
|
182
|
+
['NTIzOjc4OjA']
|
|
183
|
+
);
|
|
184
|
+
// THEN
|
|
185
|
+
assert.equal(
|
|
186
|
+
process.exitCode,
|
|
187
|
+
false,
|
|
188
|
+
'getFilesToCommit should not have thrown an error'
|
|
189
|
+
);
|
|
190
|
+
assert.equal(fileList.length, 2, 'expected only 2 file paths');
|
|
191
|
+
|
|
192
|
+
assert.equal(
|
|
193
|
+
fileList[0].split('\\').join('/'),
|
|
194
|
+
'retrieve/testInstance/testBU/mobileMessage/NTIzOjc4OjA.mobileMessage-meta.json',
|
|
195
|
+
'wrong JSON path'
|
|
196
|
+
);
|
|
197
|
+
assert.equal(
|
|
198
|
+
fileList[1].split('\\').join('/'),
|
|
199
|
+
'retrieve/testInstance/testBU/mobileMessage/NTIzOjc4OjA.mobileMessage-meta.amp',
|
|
200
|
+
'wrong AMP path'
|
|
201
|
+
);
|
|
202
|
+
return;
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
});
|