mcdev 4.1.11 → 4.2.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.
Files changed (120) hide show
  1. package/.eslintrc.json +1 -1
  2. package/.github/ISSUE_TEMPLATE/bug.yml +2 -0
  3. package/.github/PULL_REQUEST_TEMPLATE.md +2 -3
  4. package/.nycrc.json +5 -0
  5. package/README.md +34 -1528
  6. package/boilerplate/config.json +2 -6
  7. package/boilerplate/files/.vscode/extensions.json +1 -0
  8. package/boilerplate/files/.vscode/settings.json +13 -9
  9. package/boilerplate/forcedUpdates.json +4 -0
  10. package/docs/dist/documentation.md +434 -29
  11. package/lib/Deployer.js +10 -8
  12. package/lib/MetadataTypeDefinitions.js +3 -0
  13. package/lib/MetadataTypeInfo.js +3 -0
  14. package/lib/Retriever.js +16 -8
  15. package/lib/cli.js +1 -0
  16. package/lib/index.js +5 -5
  17. package/lib/metadataTypes/AccountUser.js +2 -2
  18. package/lib/metadataTypes/Asset.js +45 -35
  19. package/lib/metadataTypes/Automation.js +4 -4
  20. package/lib/metadataTypes/DataExtension.js +14 -8
  21. package/lib/metadataTypes/DataExtensionField.js +44 -9
  22. package/lib/metadataTypes/Discovery.js +5 -5
  23. package/lib/metadataTypes/Folder.js +30 -6
  24. package/lib/metadataTypes/List.js +115 -17
  25. package/lib/metadataTypes/MetadataType.js +73 -40
  26. package/lib/metadataTypes/Query.js +2 -2
  27. package/lib/metadataTypes/Script.js +2 -2
  28. package/lib/metadataTypes/TransactionalEmail.js +163 -0
  29. package/lib/metadataTypes/TransactionalMessage.js +127 -0
  30. package/lib/metadataTypes/TransactionalPush.js +77 -0
  31. package/lib/metadataTypes/TransactionalSMS.js +354 -0
  32. package/lib/metadataTypes/TriggeredSendDefinition.js +11 -9
  33. package/lib/metadataTypes/definitions/TransactionalEmail.definition.js +145 -0
  34. package/lib/metadataTypes/definitions/TransactionalPush.definition.js +109 -0
  35. package/lib/metadataTypes/definitions/TransactionalSMS.definition.js +103 -0
  36. package/lib/metadataTypes/definitions/TriggeredSendDefinition.definition.js +36 -36
  37. package/lib/util/auth.js +2 -2
  38. package/lib/util/businessUnit.js +1 -1
  39. package/lib/util/cli.js +19 -20
  40. package/lib/util/config.js +10 -10
  41. package/lib/util/devops.js +4 -4
  42. package/lib/util/init.config.js +7 -7
  43. package/lib/util/init.git.js +12 -24
  44. package/lib/util/init.js +65 -1
  45. package/lib/util/util.js +25 -14
  46. package/package.json +19 -12
  47. package/test/dataExtension.test.js +36 -19
  48. package/test/mockRoot/.mcdevrc.json +13 -2
  49. package/test/mockRoot/deploy/testInstance/testBU/dataExtension/childBU_dataextension_test.dataExtension-meta.json +27 -7
  50. package/test/mockRoot/deploy/testInstance/testBU/query/testExistingQuery.query-meta.json +1 -1
  51. package/test/mockRoot/deploy/testInstance/testBU/query/testExistingQuery.query-meta.sql +3 -1
  52. package/test/mockRoot/deploy/testInstance/testBU/query/{testQuery.query-meta.json → testNewQuery.query-meta.json} +3 -3
  53. package/test/mockRoot/deploy/testInstance/testBU/query/{testQuery.query-meta.sql → testNewQuery.query-meta.sql} +0 -0
  54. package/test/mockRoot/deploy/testInstance/testBU/transactionalEmail/testExisting_temail.transactionalEmail-meta.json +24 -0
  55. package/test/mockRoot/deploy/testInstance/testBU/transactionalEmail/testNew_temail.transactionalEmail-meta.json +24 -0
  56. package/test/mockRoot/deploy/testInstance/testBU/transactionalPush/testExisting_tpush.transactionalPush-meta.json +18 -0
  57. package/test/mockRoot/deploy/testInstance/testBU/transactionalPush/testNew_tpush.transactionalPush-meta.json +18 -0
  58. package/test/mockRoot/deploy/testInstance/testBU/transactionalSMS/testExisting_tsms.transactionalSMS-meta.amp +4 -0
  59. package/test/mockRoot/deploy/testInstance/testBU/transactionalSMS/testExisting_tsms.transactionalSMS-meta.json +15 -0
  60. package/test/mockRoot/deploy/testInstance/testBU/transactionalSMS/testNew_tsms.transactionalSMS-meta.amp +4 -0
  61. package/test/mockRoot/deploy/testInstance/testBU/transactionalSMS/testNew_tsms.transactionalSMS-meta.json +15 -0
  62. package/test/query.test.js +57 -23
  63. package/test/resources/1111111/businessUnit/retrieve-response.xml +33 -0
  64. package/test/resources/1111111/list/retrieve-response.xml +39 -0
  65. package/test/resources/9999999/asset/v1/content/assets/query/post-response.json +72 -0
  66. package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat/patch-response.json +2 -2
  67. package/test/resources/9999999/automation/v1/queries/get-response.json +2 -2
  68. package/test/resources/9999999/automation/v1/queries/post-response.json +3 -3
  69. package/test/resources/9999999/dataExtension/build-expected.json +2 -2
  70. package/test/resources/9999999/dataFolder/retrieve-response.xml +95 -2
  71. package/test/resources/9999999/interaction/v1/interactions/get-response.json +296 -0
  72. package/test/resources/9999999/legacy/v1/beta/mobile/code/get-response.json +32 -0
  73. package/test/resources/9999999/legacy/v1/beta/mobile/keyword/get-response.json +46 -0
  74. package/test/resources/9999999/list/retrieve-response.xml +78 -0
  75. package/test/resources/9999999/messaging/v1/email/definitions/get-response.json +15 -0
  76. package/test/resources/9999999/messaging/v1/email/definitions/post-response.json +19 -0
  77. package/test/resources/9999999/messaging/v1/email/definitions/testExisting_temail/get-response.json +26 -0
  78. package/test/resources/9999999/messaging/v1/email/definitions/testExisting_temail/patch-response.json +26 -0
  79. package/test/resources/9999999/messaging/v1/push/definitions/get-response.json +15 -0
  80. package/test/resources/9999999/messaging/v1/push/definitions/post-response.json +13 -0
  81. package/test/resources/9999999/messaging/v1/push/definitions/testExisting_tpush/get-response.json +13 -0
  82. package/test/resources/9999999/messaging/v1/push/definitions/testExisting_tpush/patch-response.json +13 -0
  83. package/test/resources/9999999/messaging/v1/sms/definitions/get-response.json +15 -0
  84. package/test/resources/9999999/messaging/v1/sms/definitions/post-response.json +17 -0
  85. package/test/resources/9999999/messaging/v1/sms/definitions/testExisting_tsms/get-response.json +18 -0
  86. package/test/resources/9999999/messaging/v1/sms/definitions/testExisting_tsms/patch-response.json +18 -0
  87. package/test/resources/9999999/query/build-expected.json +2 -2
  88. package/test/resources/9999999/query/build-expected.sql +6 -0
  89. package/test/resources/9999999/query/get-expected.json +1 -1
  90. package/test/resources/9999999/query/get-expected.sql +6 -0
  91. package/test/resources/9999999/query/patch-expected.json +1 -1
  92. package/test/resources/9999999/query/patch-expected.sql +6 -0
  93. package/test/resources/9999999/query/post-expected.json +3 -3
  94. package/test/resources/9999999/query/post-expected.sql +4 -0
  95. package/test/resources/9999999/query/template-expected.json +1 -1
  96. package/test/resources/9999999/query/template-expected.sql +6 -0
  97. package/test/resources/9999999/transactionalEmail/build-expected.json +22 -0
  98. package/test/resources/9999999/transactionalEmail/get-expected.json +24 -0
  99. package/test/resources/9999999/transactionalEmail/patch-expected.json +24 -0
  100. package/test/resources/9999999/transactionalEmail/post-expected.json +24 -0
  101. package/test/resources/9999999/transactionalEmail/template-expected.json +22 -0
  102. package/test/resources/9999999/transactionalPush/build-expected.json +8 -0
  103. package/test/resources/9999999/transactionalPush/get-expected.json +11 -0
  104. package/test/resources/9999999/transactionalPush/patch-expected.json +16 -0
  105. package/test/resources/9999999/transactionalPush/post-expected.json +16 -0
  106. package/test/resources/9999999/transactionalPush/template-expected.json +8 -0
  107. package/test/resources/9999999/transactionalSMS/build-expected.amp +4 -0
  108. package/test/resources/9999999/transactionalSMS/build-expected.json +13 -0
  109. package/test/resources/9999999/transactionalSMS/get-expected.amp +4 -0
  110. package/test/resources/9999999/transactionalSMS/get-expected.json +15 -0
  111. package/test/resources/9999999/transactionalSMS/patch-expected.amp +4 -0
  112. package/test/resources/9999999/transactionalSMS/patch-expected.json +15 -0
  113. package/test/resources/9999999/transactionalSMS/post-expected.amp +4 -0
  114. package/test/resources/9999999/transactionalSMS/post-expected.json +15 -0
  115. package/test/resources/9999999/transactionalSMS/template-expected.amp +4 -0
  116. package/test/resources/9999999/transactionalSMS/template-expected.json +13 -0
  117. package/test/transactionalEmail.test.js +120 -0
  118. package/test/transactionalPush.test.js +120 -0
  119. package/test/transactionalSMS.test.js +149 -0
  120. package/test/utils.js +57 -8
@@ -34,12 +34,23 @@
34
34
  "templateBuilds": ["retrieve/", "deploy/"]
35
35
  },
36
36
  "markets": {
37
- "testMarket": {
37
+ "testSourceMarket": {
38
38
  "mid": "9999999",
39
39
  "buName": "testBU",
40
+ "secret": "secret",
40
41
  "sharedFolder": "/Shared Data Extensions/test",
41
42
  "suffix": "_test",
43
+ "description": "bla bla",
42
44
  "countryCodeIn": "'test'"
45
+ },
46
+ "testTargetMarket": {
47
+ "mid": "1111111",
48
+ "buName": "testBUTarget",
49
+ "secret": "target secret",
50
+ "sharedFolder": "/Shared Data Extensions/test target",
51
+ "suffix": "_testTarget",
52
+ "description": "foobar",
53
+ "countryCodeIn": "'testTarget'"
43
54
  }
44
55
  },
45
56
  "marketList": {},
@@ -63,5 +74,5 @@
63
74
  "triggeredSendDefinition"
64
75
  ]
65
76
  },
66
- "version": "4.1.11"
77
+ "version": "4.2.0"
67
78
  }
@@ -1,19 +1,23 @@
1
1
  {
2
2
  "CustomerKey": "childBU_dataextension_test",
3
3
  "Name": "childBU_dataextension_test",
4
- "Description": "",
5
- "IsSendable": false,
6
- "IsTestable": false,
4
+ "Description": "Container for my test emails",
5
+ "IsSendable": true,
6
+ "IsTestable": true,
7
+ "SendableDataExtensionField": { "Name": "ContactKey" },
8
+ "SendableSubscriberField": { "Name": "Subscriber Key" },
9
+ "DataRetentionPeriodLength": 6,
10
+ "DataRetentionPeriodUnitOfMeasure": 5,
7
11
  "RowBasedRetention": true,
8
12
  "ResetRetentionPeriodOnImport": false,
9
13
  "DeleteAtEndOfRetentionPeriod": false,
10
14
  "RetainUntil": "",
11
15
  "Fields": [
12
16
  {
13
- "Name": "testField",
17
+ "Name": "FirstName",
14
18
  "DefaultValue": "",
15
- "MaxLength": 254,
16
- "IsRequired": true,
19
+ "MaxLength": 50,
20
+ "IsRequired": false,
17
21
  "IsPrimaryKey": false,
18
22
  "FieldType": "Text"
19
23
  },
@@ -21,14 +25,30 @@
21
25
  "Name": "LastName",
22
26
  "DefaultValue": "",
23
27
  "MaxLength": 55,
28
+ "IsRequired": false,
29
+ "IsPrimaryKey": false,
30
+ "FieldType": "Text"
31
+ },
32
+ {
33
+ "Name": "EmailAddress",
34
+ "DefaultValue": "",
35
+ "MaxLength": 254,
24
36
  "IsRequired": true,
25
37
  "IsPrimaryKey": false,
38
+ "FieldType": "EmailAddress"
39
+ },
40
+ {
41
+ "Name": "testField",
42
+ "DefaultValue": "",
43
+ "MaxLength": 254,
44
+ "IsRequired": false,
45
+ "IsPrimaryKey": false,
26
46
  "FieldType": "Text"
27
47
  },
28
48
  {
29
49
  "Name": "ContactKey",
30
50
  "DefaultValue": "",
31
- "MaxLength": 40,
51
+ "MaxLength": 50,
32
52
  "IsRequired": true,
33
53
  "IsPrimaryKey": true,
34
54
  "FieldType": "Text"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "testExistingQuery",
3
3
  "key": "testExistingQuery",
4
- "description": "updated",
4
+ "description": "updated on deploy",
5
5
  "targetKey": "childBU_dataextension_test",
6
6
  "createdDate": "2022-04-26T15:21:16.453",
7
7
  "modifiedDate": "2022-04-26T16:04:15.88",
@@ -1,4 +1,6 @@
1
1
  SELECT
2
2
  SubscriberKey as testField
3
3
  FROM
4
- _Subscribers
4
+ _Subscribers
5
+ WHERE
6
+ country IN ('test')
@@ -1,7 +1,7 @@
1
1
  {
2
- "name": "testQuery",
3
- "key": "testQuery",
4
- "description": "",
2
+ "name": "testNewQuery",
3
+ "key": "testNewQuery",
4
+ "description": "created on deploy",
5
5
  "targetKey": "childBU_dataextension_test",
6
6
  "createdDate": "2022-04-26T15:21:16.453",
7
7
  "modifiedDate": "2022-04-26T16:04:15.88",
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "testExisting_temail",
3
+ "definitionKey": "testExisting_temail",
4
+ "description": "updated via deploy",
5
+ "classification": "Default Transactional",
6
+ "status": "Active",
7
+ "createdDate": "2020-09-10T03:29:00",
8
+ "modifiedDate": "2020-09-10T03:29:00",
9
+ "content": {
10
+ "customerKey": "testExisting_asset_message"
11
+ },
12
+ "subscriptions": {
13
+ "dataExtension": "childBU_dataextension_test",
14
+ "autoAddSubscriber": true,
15
+ "updateSubscriber": true,
16
+ "r__list_PathName": "my subscribers/All Subscribers"
17
+ },
18
+ "options": {
19
+ "trackLinks": true
20
+ },
21
+ "journey": {
22
+ "interactionKey": "testExisting_interaction"
23
+ }
24
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "testNew_temail",
3
+ "definitionKey": "testNew_temail",
4
+ "description": "created on deploy",
5
+ "classification": "Default Transactional",
6
+ "status": "Active",
7
+ "createdDate": "2020-09-10T03:29:00",
8
+ "modifiedDate": "2020-09-10T03:29:00",
9
+ "content": {
10
+ "customerKey": "testExisting_asset_message"
11
+ },
12
+ "subscriptions": {
13
+ "dataExtension": "childBU_dataextension_test",
14
+ "autoAddSubscriber": true,
15
+ "updateSubscriber": true,
16
+ "r__list_PathName": "my subscribers/All Subscribers"
17
+ },
18
+ "options": {
19
+ "trackLinks": true
20
+ },
21
+ "journey": {
22
+ "interactionKey": "testExisting_interaction"
23
+ }
24
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "definitionKey": "testExisting_tpush",
3
+ "name": "testExisting_tpush",
4
+ "status": "Active",
5
+ "applicationId": "ffbab4c9-fbf6-4b87-9c9a-10c6ce86e81d",
6
+ "description": "updated via deploy; note that applicationId can only be manually set up in Setup - Mobile Push",
7
+ "content": {
8
+ "customerKey": "mobileMessage_test"
9
+ },
10
+ "options": {
11
+ "sound": "temp.wmv",
12
+ "badge": "1",
13
+ "customKeys": [
14
+ { "key": "key1", "value": "value1" },
15
+ { "key": "key2", "value": "value2" }
16
+ ]
17
+ }
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "definitionKey": "testNew_tpush",
3
+ "name": "testNew_tpush",
4
+ "status": "Active",
5
+ "applicationId": "ffbab4c9-fbf6-4b87-9c9a-10c6ce86e81d",
6
+ "description": "created on deploy; note that applicationId can only be manually set up in Setup - Mobile Push",
7
+ "content": {
8
+ "customerKey": "mobileMessage_test"
9
+ },
10
+ "options": {
11
+ "sound": "temp.wmv",
12
+ "badge": "1",
13
+ "customKeys": [
14
+ { "key": "key1", "value": "value1" },
15
+ { "key": "key2", "value": "value2" }
16
+ ]
17
+ }
18
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "testExisting_tsms",
3
+ "definitionKey": "testExisting_tsms",
4
+ "description": "bla bla",
5
+ "status": "Active",
6
+ "createdDate": "2022-11-07T02:24:00",
7
+ "modifiedDate": "2022-11-07T02:25:00",
8
+ "subscriptions": {
9
+ "shortCode": "4912312345678",
10
+ "countryCode": "",
11
+ "autoAddSubscriber": true,
12
+ "updateSubscriber": true,
13
+ "keyword": "testExisting_keyword"
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "testNew_tsms",
3
+ "definitionKey": "testNew_tsms",
4
+ "description": "created on deploy",
5
+ "status": "Active",
6
+ "createdDate": "2022-11-07T02:24:00",
7
+ "modifiedDate": "2022-11-07T02:25:00",
8
+ "subscriptions": {
9
+ "shortCode": "4912312345678",
10
+ "countryCode": "",
11
+ "autoAddSubscriber": true,
12
+ "updateSubscriber": true,
13
+ "keyword": "testExisting_keyword"
14
+ }
15
+ }
@@ -1,4 +1,10 @@
1
- const assert = require('chai').assert;
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 dir = chaiFiles.dir;
2
8
  const cache = require('../lib/util/cache');
3
9
  const testUtils = require('./utils');
4
10
  const handler = require('../lib/index');
@@ -24,10 +30,13 @@ describe('query', () => {
24
30
  'only one query expected'
25
31
  );
26
32
  assert.deepEqual(
27
- await testUtils.getActualFile('testExistingQuery', 'query'),
28
- await testUtils.getExpectedFile('9999999', 'query', 'get'),
33
+ await testUtils.getActualJson('testExistingQuery', 'query'),
34
+ await testUtils.getExpectedJson('9999999', 'query', 'get'),
29
35
  'returned metadata was not equal expected'
30
36
  );
37
+ expect(file(testUtils.getActualFile('testExistingQuery', 'query', 'sql'))).to.equal(
38
+ file(testUtils.getExpectedFile('9999999', 'query', 'get', 'sql'))
39
+ );
31
40
  assert.equal(
32
41
  Object.values(testUtils.getAPIHistory()).flat().length,
33
42
  6,
@@ -37,6 +46,9 @@ describe('query', () => {
37
46
  });
38
47
  });
39
48
  describe('Deploy ================', () => {
49
+ beforeEach(() => {
50
+ testUtils.mockSetup(true);
51
+ });
40
52
  it('Should create & upsert a query', async () => {
41
53
  // WHEN
42
54
  await handler.deploy('testInstance/testBU', ['query']);
@@ -48,16 +60,25 @@ describe('query', () => {
48
60
  2,
49
61
  'two querys expected'
50
62
  );
63
+ // confirm created item
51
64
  assert.deepEqual(
52
- await testUtils.getActualFile('testQuery', 'query'),
53
- await testUtils.getExpectedFile('9999999', 'query', 'post'),
65
+ await testUtils.getActualJson('testNewQuery', 'query'),
66
+ await testUtils.getExpectedJson('9999999', 'query', 'post'),
54
67
  'returned metadata was not equal expected for insert query'
55
68
  );
69
+ expect(file(testUtils.getActualFile('testNewQuery', 'query', 'sql'))).to.equal(
70
+ file(testUtils.getExpectedFile('9999999', 'query', 'post', 'sql'))
71
+ );
72
+ // confirm updated item
56
73
  assert.deepEqual(
57
- await testUtils.getActualFile('testExistingQuery', 'query'),
58
- await testUtils.getExpectedFile('9999999', 'query', 'patch'),
74
+ await testUtils.getActualJson('testExistingQuery', 'query'),
75
+ await testUtils.getExpectedJson('9999999', 'query', 'patch'),
59
76
  'returned metadata was not equal expected for insert query'
60
77
  );
78
+ expect(file(testUtils.getActualFile('testExistingQuery', 'query', 'sql'))).to.equal(
79
+ file(testUtils.getExpectedFile('9999999', 'query', 'patch', 'sql'))
80
+ );
81
+ // check number of API calls
61
82
  assert.equal(
62
83
  Object.values(testUtils.getAPIHistory()).flat().length,
63
84
  8,
@@ -73,7 +94,7 @@ describe('query', () => {
73
94
  'testInstance/testBU',
74
95
  'query',
75
96
  ['testExistingQuery'],
76
- 'testMarket'
97
+ 'testSourceMarket'
77
98
  );
78
99
  // WHEN
79
100
  assert.equal(
@@ -82,22 +103,28 @@ describe('query', () => {
82
103
  'only one query expected'
83
104
  );
84
105
  assert.deepEqual(
85
- await testUtils.getActualTemplate('testExistingQuery', 'query'),
86
- await testUtils.getExpectedFile('9999999', 'query', 'template'),
87
- 'returned template was not equal expected'
106
+ await testUtils.getActualTemplateJson('testExistingQuery', 'query'),
107
+ await testUtils.getExpectedJson('9999999', 'query', 'template'),
108
+ 'returned template JSON of retrieveAsTemplate was not equal expected'
88
109
  );
110
+ expect(
111
+ file(testUtils.getActualTemplateFile('testExistingQuery', 'query', 'sql'))
112
+ ).to.equal(file(testUtils.getExpectedFile('9999999', 'query', 'template', 'sql')));
89
113
  // THEN
90
114
  await handler.buildDefinition(
91
115
  'testInstance/testBU',
92
116
  'query',
93
117
  'testExistingQuery',
94
- 'testMarket'
118
+ 'testTargetMarket'
95
119
  );
96
120
  assert.deepEqual(
97
- await testUtils.getActualDeployFile('testExistingQuery', 'query'),
98
- await testUtils.getExpectedFile('9999999', 'query', 'build'),
99
- 'returned deployment file was not equal expected'
121
+ await testUtils.getActualDeployJson('testExistingQuery', 'query'),
122
+ await testUtils.getExpectedJson('9999999', 'query', 'build'),
123
+ 'returned deployment JSON was not equal expected'
100
124
  );
125
+ expect(
126
+ file(testUtils.getActualDeployFile('testExistingQuery', 'query', 'sql'))
127
+ ).to.equal(file(testUtils.getExpectedFile('9999999', 'query', 'build', 'sql')));
101
128
  assert.equal(
102
129
  Object.values(testUtils.getAPIHistory()).flat().length,
103
130
  6,
@@ -113,7 +140,7 @@ describe('query', () => {
113
140
  'testInstance/testBU',
114
141
  'query',
115
142
  ['testExistingQuery'],
116
- 'testMarket'
143
+ 'testSourceMarket'
117
144
  );
118
145
  // WHEN
119
146
  assert.equal(
@@ -122,22 +149,29 @@ describe('query', () => {
122
149
  'only one query expected'
123
150
  );
124
151
  assert.deepEqual(
125
- await testUtils.getActualTemplate('testExistingQuery', 'query'),
126
- await testUtils.getExpectedFile('9999999', 'query', 'template'),
127
- 'returned template was not equal expected'
152
+ await testUtils.getActualTemplateJson('testExistingQuery', 'query'),
153
+ await testUtils.getExpectedJson('9999999', 'query', 'template'),
154
+ 'returned template JSON of buildTemplate was not equal expected'
128
155
  );
156
+ expect(
157
+ file(testUtils.getActualTemplateFile('testExistingQuery', 'query', 'sql'))
158
+ ).to.equal(file(testUtils.getExpectedFile('9999999', 'query', 'template', 'sql')));
129
159
  // THEN
130
160
  await handler.buildDefinition(
131
161
  'testInstance/testBU',
132
162
  'query',
133
163
  'testExistingQuery',
134
- 'testMarket'
164
+ 'testTargetMarket'
135
165
  );
136
166
  assert.deepEqual(
137
- await testUtils.getActualDeployFile('testExistingQuery', 'query'),
138
- await testUtils.getExpectedFile('9999999', 'query', 'build'),
139
- 'returned deployment file was not equal expected'
167
+ await testUtils.getActualDeployJson('testExistingQuery', 'query'),
168
+ await testUtils.getExpectedJson('9999999', 'query', 'build'),
169
+ 'returned deployment JSON was not equal expected'
140
170
  );
171
+ expect(
172
+ file(testUtils.getActualDeployFile('testExistingQuery', 'query', 'sql'))
173
+ ).to.equal(file(testUtils.getExpectedFile('9999999', 'query', 'build', 'sql')));
174
+
141
175
  assert.equal(
142
176
  Object.values(testUtils.getAPIHistory()).flat().length,
143
177
  6,
@@ -0,0 +1,33 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
3
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
5
+ xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
6
+ xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
7
+ xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
8
+ <soap:Header>
9
+ <wsa:Action>RetrieveResponse</wsa:Action>
10
+ <wsa:MessageID>urn:uuid:9e5f98fa-4112-4416-be42-4f9e6f6886e4</wsa:MessageID>
11
+ <wsa:RelatesTo>urn:uuid:b94fb623-e37d-40d3-8178-e6c8ee3b40b5</wsa:RelatesTo>
12
+ <wsa:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:To>
13
+ <wsse:Security>
14
+ <wsu:Timestamp wsu:Id="Timestamp-3f974942-511e-4e57-9faa-c89493b836ba">
15
+ <wsu:Created>2022-11-29T19:42:20Z</wsu:Created>
16
+ <wsu:Expires>2022-11-29T19:47:20Z</wsu:Expires>
17
+ </wsu:Timestamp>
18
+ </wsse:Security>
19
+ </soap:Header>
20
+ <soap:Body>
21
+ <RetrieveResponseMsg xmlns="http://exacttarget.com/wsdl/partnerAPI">
22
+ <OverallStatus>OK</OverallStatus>
23
+ <RequestID>233a302f-6c1f-4fea-8b32-82a843ae806d</RequestID>
24
+ <Results xsi:type="BusinessUnit">
25
+ <PartnerKey xsi:nil="true" />
26
+ <ObjectID xsi:nil="true" />
27
+ <AccountType>None</AccountType>
28
+ <Subscription xsi:nil="true" />
29
+ <MasterUnsubscribeBehavior>ENTIRE_ENTERPRISE</MasterUnsubscribeBehavior>
30
+ </Results>
31
+ </RetrieveResponseMsg>
32
+ </soap:Body>
33
+ </soap:Envelope>
@@ -0,0 +1,39 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
3
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
5
+ xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
6
+ xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
7
+ xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
8
+ <soap:Header>
9
+ <wsa:Action>RetrieveResponse</wsa:Action>
10
+ <wsa:MessageID>urn:uuid:26648e52-3bac-4eca-a5e1-ad71d38b56fe</wsa:MessageID>
11
+ <wsa:RelatesTo>urn:uuid:8552cfbd-466c-447e-a232-13d945e44a5c</wsa:RelatesTo>
12
+ <wsa:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:To>
13
+ <wsse:Security>
14
+ <wsu:Timestamp wsu:Id="Timestamp-c80ba907-ecc4-447d-8418-140c4ca108de">
15
+ <wsu:Created>2022-11-29T19:42:21Z</wsu:Created>
16
+ <wsu:Expires>2022-11-29T19:47:21Z</wsu:Expires>
17
+ </wsu:Timestamp>
18
+ </wsse:Security>
19
+ </soap:Header>
20
+ <soap:Body>
21
+ <RetrieveResponseMsg xmlns="http://exacttarget.com/wsdl/partnerAPI">
22
+ <OverallStatus>OK</OverallStatus>
23
+ <RequestID>11e9f8a8-e5e6-4082-93bd-5840060512ce</RequestID>
24
+ <Results xsi:type="List">
25
+ <PartnerKey xsi:nil="true" />
26
+ <CreatedDate>2017-01-24T06:32:34.453</CreatedDate>
27
+ <ModifiedDate>2017-01-24T06:32:34.453</ModifiedDate>
28
+ <ID>15</ID>
29
+ <ObjectID>1f793b8b-cb23-4bb4-9ec4-1e0bf9511960</ObjectID>
30
+ <CustomerKey>All Subscribers - 277</CustomerKey>
31
+ <ListName>All Subscribers</ListName>
32
+ <Category>277</Category>
33
+ <Type>Private</Type>
34
+ <Description>Contains all subscribers</Description>
35
+ <ListClassification>ExactTargetList</ListClassification>
36
+ </Results>
37
+ </RetrieveResponseMsg>
38
+ </soap:Body>
39
+ </soap:Envelope>
@@ -0,0 +1,72 @@
1
+ {
2
+ "count": 2,
3
+ "page": 1,
4
+ "pageSize": 50,
5
+ "links": {},
6
+ "items": [
7
+ {
8
+ "id": 808714,
9
+ "customerKey": "testExisting_asset_message",
10
+ "assetType": { "id": 208, "name": "htmlemail", "displayName": "HTML Email" },
11
+ "name": "testExisting_asset_message",
12
+ "createdDate": "2021-01-31T14:11:01.423-06:00",
13
+ "createdBy": {
14
+ "id": 700304523,
15
+ "email": "",
16
+ "name": "SFMC DEVOPS app user",
17
+ "userId": "700304523"
18
+ },
19
+ "modifiedDate": "2021-01-31T14:13:30-06:00",
20
+ "modifiedBy": {
21
+ "id": 700304523,
22
+ "name": "SFMC DEVOPS app user",
23
+ "userId": "700304523"
24
+ },
25
+ "status": { "id": 1, "name": "Draft" },
26
+ "category": { "id": 290833, "name": "Content Builder", "parentId": 0 },
27
+ "availableViews": ["html", "text", "subjectline", "preheader"],
28
+ "data": {
29
+ "email": {
30
+ "options": { "characterEncoding": "us-ascii" },
31
+ "legacy": {
32
+ "legacyId": 531213,
33
+ "legacyKey": "testExisting_asset_message",
34
+ "legacyType": "email",
35
+ "legacyCategoryId": 290835
36
+ }
37
+ }
38
+ },
39
+ "legacyData": {
40
+ "legacyId": 531213,
41
+ "legacyKey": "testExisting_asset_message",
42
+ "legacyType": "email",
43
+ "legacyCategoryId": 290835
44
+ },
45
+ "modelVersion": 2
46
+ },
47
+ {
48
+ "id": 1209971,
49
+ "customerKey": "mobileMessage_test",
50
+ "assetType": { "id": 230, "name": "jsonmessage", "displayName": "JSON Message" },
51
+ "name": "mobileMessage_test",
52
+ "createdDate": "2022-12-07T02:49:36.857-06:00",
53
+ "createdBy": {
54
+ "id": 700301950,
55
+ "email": "joern.berkefeld@accenture.com",
56
+ "name": "J├Ârn Berkefeld (ASGR)",
57
+ "userId": "700301950"
58
+ },
59
+ "modifiedDate": "2022-12-07T02:49:57.44-06:00",
60
+ "modifiedBy": {
61
+ "id": 700301950,
62
+ "email": "joern.berkefeld@accenture.com",
63
+ "name": "J├Ârn Berkefeld (ASGR)",
64
+ "userId": "700301950"
65
+ },
66
+ "status": { "id": 1, "name": "Draft" },
67
+ "category": { "id": 283608, "name": "Content Builder", "parentId": 0 },
68
+ "availableViews": ["push"],
69
+ "modelVersion": 2
70
+ }
71
+ ]
72
+ }
@@ -2,8 +2,8 @@
2
2
  "queryDefinitionId": "549f0568-607c-4940-afef-437965094dat",
3
3
  "name": "testExistingQuery",
4
4
  "key": "testExistingQuery",
5
- "description": "updated",
6
- "queryText": "SELECT\n SubscriberKey as testField\nFROM\n _Subscribers ",
5
+ "description": "updated on deploy",
6
+ "queryText": "SELECT\n SubscriberKey as testField\nFROM\n _Subscribers\nWHERE\n country IN ('test')\n",
7
7
  "targetName": "childBU_dataextension_test",
8
8
  "targetKey": "childBU_dataextension_test",
9
9
  "targetId": "30400c03-0ec4-ec11-b83c-48df37d1de8a",
@@ -7,8 +7,8 @@
7
7
  "queryDefinitionId": "549f0568-607c-4940-afef-437965094dat",
8
8
  "name": "testExistingQuery",
9
9
  "key": "testExistingQuery",
10
- "description": "",
11
- "queryText": "SELECT\n SubscriberKey as testField\nFROM\n _Subscribers ",
10
+ "description": "bla bla",
11
+ "queryText": "SELECT\n SubscriberKey as testField\nFROM\n _Subscribers\nWHERE\n country IN ('test')\n",
12
12
  "targetName": "childBU_dataextension_test",
13
13
  "targetKey": "childBU_dataextension_test",
14
14
  "targetId": "30400c03-0ec4-ec11-b83c-48df37d1de8a",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "queryDefinitionId": "549f0568-607c-4940-afef-437965094dae",
3
- "name": "testQuery",
4
- "key": "testQuery",
5
- "description": "",
3
+ "name": "testNewQuery",
4
+ "key": "testNewQuery",
5
+ "description": "created on deploy",
6
6
  "queryText": "SELECT\n SubscriberKey as testField\nFROM\n _Subscribers ",
7
7
  "targetName": "childBU_dataextension_test",
8
8
  "targetKey": "childBU_dataextension_test",
@@ -1,6 +1,6 @@
1
1
  {
2
- "CustomerKey": "childBU_dataextension_test",
3
- "Name": "childBU_dataextension_test",
2
+ "CustomerKey": "childBU_dataextension_testTarget",
3
+ "Name": "childBU_dataextension_testTarget",
4
4
  "Description": "Container for my test emails",
5
5
  "IsSendable": true,
6
6
  "IsTestable": true,