mcdev 5.0.1 → 5.0.2

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 (67) hide show
  1. package/.eslintrc.json +1 -0
  2. package/.github/ISSUE_TEMPLATE/bug.yml +1 -0
  3. package/.husky/commit-msg +1 -1
  4. package/.husky/post-checkout +34 -3
  5. package/.husky/post-merge +21 -0
  6. package/.husky/pre-commit +1 -0
  7. package/docs/dist/documentation.md +60 -15
  8. package/lib/Deployer.js +0 -1
  9. package/lib/cli.js +8 -8
  10. package/lib/index.js +2 -1
  11. package/lib/metadataTypes/Asset.js +4 -2
  12. package/lib/metadataTypes/Automation.js +39 -28
  13. package/lib/metadataTypes/DataExtension.js +1 -3
  14. package/lib/metadataTypes/DataExtensionField.js +5 -5
  15. package/lib/metadataTypes/Journey.js +11 -10
  16. package/lib/metadataTypes/MetadataType.js +34 -7
  17. package/lib/metadataTypes/MobileKeyword.js +165 -20
  18. package/lib/metadataTypes/MobileMessage.js +20 -28
  19. package/lib/metadataTypes/Role.js +2 -3
  20. package/lib/metadataTypes/TransactionalSMS.js +5 -5
  21. package/lib/metadataTypes/User.js +3 -17
  22. package/lib/metadataTypes/definitions/MobileKeyword.definition.js +19 -7
  23. package/lib/metadataTypes/definitions/MobileMessage.definition.js +50 -8
  24. package/lib/metadataTypes/definitions/User.definition.js +1 -0
  25. package/lib/util/auth.js +4 -1
  26. package/lib/util/cli.js +1 -1
  27. package/lib/util/file.js +5 -3
  28. package/lib/util/util.js +1 -0
  29. package/package.json +9 -9
  30. package/test/mockRoot/.mcdevrc.json +3 -1
  31. package/test/mockRoot/deploy/testInstance/testBU/mobileKeyword/{testNew_keyword.mobileKeyword-meta.json → 4912312345678.TESTNEW_KEYWORD.mobileKeyword-meta.json} +1 -4
  32. package/test/mockRoot/deploy/testInstance/testBU/mobileKeyword/{testNew_keyword_blocked.mobileKeyword-meta.json → 4912312345678.TESTNEW_KEYWORD_BLOCKED.mobileKeyword-meta.json} +1 -4
  33. package/test/mockRoot/deploy/testInstance/testBU/transactionalSMS/testExisting_tsms.transactionalSMS-meta.json +1 -1
  34. package/test/mockRoot/deploy/testInstance/testBU/transactionalSMS/testNew_tsms.transactionalSMS-meta.json +1 -1
  35. package/test/resources/1111111/user/retrieve-expected.md +19 -0
  36. package/test/resources/9999999/dataExtension/retrieve-expected.md +18 -0
  37. package/test/resources/9999999/journey/build-expected.json +1 -1
  38. package/test/resources/9999999/journey/get-expected.json +1 -1
  39. package/test/resources/9999999/journey/put-expected.json +1 -1
  40. package/test/resources/9999999/journey/template-expected.json +1 -1
  41. package/test/resources/9999999/legacy/v1/beta/mobile/keyword/NXV4ZFMwTEFwRVczd3RaLUF5X3p5dzo4Njow/get-response.json +1 -1
  42. package/test/resources/9999999/legacy/v1/beta/mobile/keyword/get-response.json +1 -1
  43. package/test/resources/9999999/legacy/v1/beta/mobile/message/NTIzOjc4OjA/get-response.json +1 -1
  44. package/test/resources/9999999/legacy/v1/beta/mobile/message/get-response.json +1 -1
  45. package/test/resources/9999999/messaging/v1/sms/definitions/post-response.json +1 -1
  46. package/test/resources/9999999/messaging/v1/sms/definitions/testExisting_tsms/get-response.json +1 -1
  47. package/test/resources/9999999/messaging/v1/sms/definitions/testExisting_tsms/patch-response.json +1 -1
  48. package/test/resources/9999999/mobileKeyword/build-expected.json +1 -4
  49. package/test/resources/9999999/mobileKeyword/get-expected.json +1 -4
  50. package/test/resources/9999999/mobileKeyword/post-create-expected.json +1 -4
  51. package/test/resources/9999999/mobileKeyword/template-expected.json +1 -4
  52. package/test/resources/9999999/query/build-expected.sql +1 -1
  53. package/test/resources/9999999/query/get-expected.sql +1 -1
  54. package/test/resources/9999999/query/patch-expected.sql +1 -1
  55. package/test/resources/9999999/query/post-expected.sql +1 -1
  56. package/test/resources/9999999/query/template-expected.sql +1 -1
  57. package/test/resources/9999999/transactionalSMS/build-expected.json +1 -1
  58. package/test/resources/9999999/transactionalSMS/get-expected.json +1 -1
  59. package/test/resources/9999999/transactionalSMS/patch-expected.json +1 -1
  60. package/test/resources/9999999/transactionalSMS/post-expected.json +1 -1
  61. package/test/resources/9999999/transactionalSMS/template-expected.json +1 -1
  62. package/test/type.dataExtension.test.js +13 -1
  63. package/test/type.mobileKeyword.test.js +57 -19
  64. package/test/type.user.test.js +30 -1
  65. package/test/utils.js +10 -0
  66. /package/test/mockRoot/deploy/testInstance/testBU/mobileKeyword/{testNew_keyword.mobileKeyword-meta.amp → 4912312345678.TESTNEW_KEYWORD.mobileKeyword-meta.amp} +0 -0
  67. /package/test/mockRoot/deploy/testInstance/testBU/mobileKeyword/{testNew_keyword_blocked.mobileKeyword-meta.amp → 4912312345678.TESTNEW_KEYWORD_BLOCKED.mobileKeyword-meta.amp} +0 -0
@@ -1,8 +1,5 @@
1
1
  {
2
- "code": {
3
- "code": "4912312345678"
4
- },
5
- "keyword": "testNew_keyword",
2
+ "c__codeKeyword": "4912312345678.TESTNEW_KEYWORD",
6
3
  "status": "Active",
7
4
  "restriction": "NONE",
8
5
  "keywordType": "STOP",
@@ -1,8 +1,5 @@
1
1
  {
2
- "code": {
3
- "code": "4912312345678"
4
- },
5
- "keyword": "testNew_keyword_blocked",
2
+ "c__codeKeyword": "4912312345678.TESTNEW_KEYWORD_BLOCKED",
6
3
  "status": "Active",
7
4
  "restriction": "NONE",
8
5
  "keywordType": "NORMAL",
@@ -10,6 +10,6 @@
10
10
  "countryCode": "",
11
11
  "autoAddSubscriber": true,
12
12
  "updateSubscriber": true,
13
- "keyword": "testExisting_keyword"
13
+ "keyword": "TESTEXISTING_KEYWORD"
14
14
  }
15
15
  }
@@ -10,6 +10,6 @@
10
10
  "countryCode": "",
11
11
  "autoAddSubscriber": true,
12
12
  "updateSubscriber": true,
13
- "keyword": "testExisting_keyword"
13
+ "keyword": "TESTEXISTING_KEYWORD"
14
14
  }
15
15
  }
@@ -0,0 +1,19 @@
1
+ # User Overview - testInstance
2
+
3
+ ## Users (1)
4
+
5
+ | Name | Last successful Login | Active | Access Locked out | API User | Must change PW | Default BU | BU Access | Roles | Login | ID | Key | E-Mail | Notification E-Mail | Timezone | SFMC Locale | Modified Date | Modified By | Created Date |
6
+ | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
7
+ | user test | 96 days | ✓ | - | - | - | <nobr>_ParentBU_ (1111111)</nobr> | <nobr>_ParentBU_ (1111111)</nobr>,<br> <nobr>testBU (9999999)</nobr> | <nobr>Administrator,</nobr><br> <nobr>Content Creator,</nobr><br> <nobr>Marketing Cloud Administrator</nobr> | user_test@accenture.asgr | 700301950 | testExisting_user | user_test@accenture.com | user_test@accenture.com | GMT+01:00 | en-GB | 2022-06-21 01:43:02.64 | 123456 | 2019-09-06 01:59:07.097 |
8
+
9
+
10
+ ## Inactivated Users (0)
11
+
12
+ | Name | Last successful Login | Active | Access Locked out | API User | Must change PW | Default BU | BU Access | Roles | Login | ID | Key | E-Mail | Notification E-Mail | Timezone | SFMC Locale | Modified Date | Modified By | Created Date |
13
+ | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
14
+
15
+
16
+ ## Installed Packages (0)
17
+
18
+ | Name | Last successful Login | Active | Access Locked out | API User | Must change PW | Default BU | BU Access | Roles | Login | ID | Key | E-Mail | Notification E-Mail | Timezone | SFMC Locale | Modified Date | Modified By | Created Date |
19
+ | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
@@ -0,0 +1,18 @@
1
+ ## testExisting_dataExtension
2
+
3
+ **Description:** bla bla
4
+
5
+ **Folder:** Data Extensions/
6
+
7
+ **Fields in table:** 4
8
+
9
+ **Sendable:** Yes (`ContactKey` to `Subscriber Key`)
10
+
11
+ **Testable:** Yes
12
+
13
+ | Name | FieldType | MaxLength | IsPrimaryKey | IsNullable | DefaultValue |
14
+ | --- | --- | --- | --- | --- | --- |
15
+ | FirstName | Text | 50 | - | + | |
16
+ | LastName | Text | 50 | - | + | |
17
+ | EmailAddress | EmailAddress | 254 | - | - | |
18
+ | ContactKey | Text | 50 | + | - | |
@@ -323,7 +323,7 @@
323
323
  },
324
324
  "configurationArguments": {
325
325
  "c__mobileMessage_id": "NTIzOjc4OjA",
326
- "c__mobileKeyword": "testTemplated_keyword",
326
+ "r__mobileKeyword_codeKeyword": "4912312345678.TESTTEMPLATED_KEYWORD",
327
327
  "isOptIn": false,
328
328
  "honorBlackoutWindowEnum": 0,
329
329
  "mobileBlackoutWindowStartTime": "",
@@ -326,7 +326,7 @@
326
326
  },
327
327
  "configurationArguments": {
328
328
  "c__mobileMessage_id": "NTIzOjc4OjA",
329
- "c__mobileKeyword": "testExisting_keyword",
329
+ "r__mobileKeyword_codeKeyword": "4912312345678.TESTEXISTING_KEYWORD",
330
330
  "isOptIn": false,
331
331
  "honorBlackoutWindowEnum": 0,
332
332
  "mobileBlackoutWindowStartTime": "",
@@ -326,7 +326,7 @@
326
326
  },
327
327
  "configurationArguments": {
328
328
  "c__mobileMessage_id": "NTIzOjc4OjA",
329
- "c__mobileKeyword": "testExisting_keyword",
329
+ "r__mobileKeyword_codeKeyword": "4912312345678.TESTEXISTING_KEYWORD",
330
330
  "isOptIn": false,
331
331
  "honorBlackoutWindowEnum": 0,
332
332
  "mobileBlackoutWindowStartTime": "",
@@ -323,7 +323,7 @@
323
323
  },
324
324
  "configurationArguments": {
325
325
  "c__mobileMessage_id": "NTIzOjc4OjA",
326
- "c__mobileKeyword": "{{{prefix}}}keyword",
326
+ "r__mobileKeyword_codeKeyword": "4912312345678.{{{prefixUpper}}}KEYWORD",
327
327
  "isOptIn": false,
328
328
  "honorBlackoutWindowEnum": 0,
329
329
  "mobileBlackoutWindowStartTime": "",
@@ -25,7 +25,7 @@
25
25
  "isClientOwned": false,
26
26
  "isOwner": false
27
27
  },
28
- "keyword": "testNew_keyword",
28
+ "keyword": "TESTNEW_KEYWORD",
29
29
  "startDate": "2023-03-30T14:00:11.843Z",
30
30
  "endDate": "2043-03-30T14:00:11.843Z",
31
31
  "status": "Active",
@@ -32,7 +32,7 @@
32
32
  "isClientOwned": false,
33
33
  "isOwner": false
34
34
  },
35
- "keyword": "testExisting_keyword",
35
+ "keyword": "TESTEXISTING_KEYWORD",
36
36
  "startDate": "2018-03-27T12:37:18.197Z",
37
37
  "endDate": "2038-03-27T12:37:18.197Z",
38
38
  "status": "Active",
@@ -90,7 +90,7 @@
90
90
  "isSentImmediately": true,
91
91
  "nextKeyword": {
92
92
  "id": "cTVJaG5oSDJPVUNHcUh6Z3pQT2tVdzo4Njow",
93
- "keyword": "testExisting_keyword",
93
+ "keyword": "TESTEXISTING_KEYWORD",
94
94
  "restriction": "NONE",
95
95
  "isInherited": false
96
96
  },
@@ -111,7 +111,7 @@
111
111
  "isSentImmediately": true,
112
112
  "nextKeyword": {
113
113
  "id": "cTVJaG5oSDJPVUNHcUh6Z3pQT2tVdzo4Njow",
114
- "keyword": "testExisting_keyword",
114
+ "keyword": "TESTEXISTING_KEYWORD",
115
115
  "restriction": "NONE",
116
116
  "isInherited": false
117
117
  },
@@ -12,6 +12,6 @@
12
12
  "countryCode": "",
13
13
  "autoAddSubscriber": true,
14
14
  "updateSubscriber": true,
15
- "keyword": "testExisting_keyword"
15
+ "keyword": "TESTEXISTING_KEYWORD"
16
16
  }
17
17
  }
@@ -13,6 +13,6 @@
13
13
  "countryCode": "",
14
14
  "autoAddSubscriber": true,
15
15
  "updateSubscriber": true,
16
- "keyword": "testExisting_keyword"
16
+ "keyword": "TESTEXISTING_KEYWORD"
17
17
  }
18
18
  }
@@ -13,6 +13,6 @@
13
13
  "countryCode": "",
14
14
  "autoAddSubscriber": true,
15
15
  "updateSubscriber": true,
16
- "keyword": "testExisting_keyword"
16
+ "keyword": "TESTEXISTING_KEYWORD"
17
17
  }
18
18
  }
@@ -1,8 +1,5 @@
1
1
  {
2
- "code": {
3
- "code": "4912312345678"
4
- },
5
- "keyword": "testTemplated_keyword",
2
+ "c__codeKeyword": "4912312345678.TESTTEMPLATED_KEYWORD",
6
3
  "keywordType": "NORMAL",
7
4
  "isInherited": false,
8
5
  "restriction": "NONE"
@@ -1,10 +1,7 @@
1
1
  {
2
2
  "createdDate": "2018-03-27T12:37:18.12Z",
3
3
  "lastUpdated": "2018-03-27T12:37:18.167Z",
4
- "code": {
5
- "code": "4912312345678"
6
- },
7
- "keyword": "testExisting_keyword",
4
+ "c__codeKeyword": "4912312345678.TESTEXISTING_KEYWORD",
8
5
  "startDate": "2018-03-27T12:37:18.197Z",
9
6
  "endDate": "2038-03-27T12:37:18.197Z",
10
7
  "status": "Active",
@@ -1,14 +1,11 @@
1
1
  {
2
- "code": {
3
- "code": "4912312345678"
4
- },
5
2
  "createdBy": {
6
3
  "name": "API_JornBerkefeld app user"
7
4
  },
8
5
  "createdDate": "2023-03-30T14:00:11.907Z",
9
6
  "endDate": "2043-03-30T14:00:11.843Z",
10
7
  "isInherited": false,
11
- "keyword": "testNew_keyword",
8
+ "c__codeKeyword": "4912312345678.TESTNEW_KEYWORD",
12
9
  "keywordType": "NORMAL",
13
10
  "lastUpdated": "2023-03-30T14:00:12.295Z",
14
11
  "restriction": "NONE",
@@ -1,8 +1,5 @@
1
1
  {
2
- "code": {
3
- "code": "4912312345678"
4
- },
5
- "keyword": "{{{prefix}}}keyword",
2
+ "c__codeKeyword": "4912312345678.{{{prefixUpper}}}KEYWORD",
6
3
  "keywordType": "NORMAL",
7
4
  "isInherited": false,
8
5
  "restriction": "NONE"
@@ -1,5 +1,5 @@
1
1
  SELECT
2
- SubscriberKey as testField
2
+ SubscriberKey AS testField
3
3
  FROM
4
4
  _Subscribers
5
5
  WHERE
@@ -1,5 +1,5 @@
1
1
  SELECT
2
- SubscriberKey as testField
2
+ SubscriberKey AS testField
3
3
  FROM
4
4
  _Subscribers
5
5
  WHERE
@@ -1,5 +1,5 @@
1
1
  SELECT
2
- SubscriberKey as testField
2
+ SubscriberKey AS testField
3
3
  FROM
4
4
  _Subscribers
5
5
  WHERE
@@ -1,4 +1,4 @@
1
1
  SELECT
2
- SubscriberKey as testField
2
+ SubscriberKey AS testField
3
3
  FROM
4
4
  _Subscribers
@@ -1,5 +1,5 @@
1
1
  SELECT
2
- SubscriberKey as testField
2
+ SubscriberKey AS testField
3
3
  FROM
4
4
  _Subscribers
5
5
  WHERE
@@ -8,6 +8,6 @@
8
8
  "countryCode": "",
9
9
  "autoAddSubscriber": true,
10
10
  "updateSubscriber": true,
11
- "keyword": "testTemplated_keyword"
11
+ "keyword": "TESTTEMPLATED_KEYWORD"
12
12
  }
13
13
  }
@@ -10,6 +10,6 @@
10
10
  "countryCode": "",
11
11
  "autoAddSubscriber": true,
12
12
  "updateSubscriber": true,
13
- "keyword": "testExisting_keyword"
13
+ "keyword": "TESTEXISTING_KEYWORD"
14
14
  }
15
15
  }
@@ -10,6 +10,6 @@
10
10
  "countryCode": "",
11
11
  "autoAddSubscriber": true,
12
12
  "updateSubscriber": true,
13
- "keyword": "testExisting_keyword"
13
+ "keyword": "TESTEXISTING_KEYWORD"
14
14
  }
15
15
  }
@@ -10,6 +10,6 @@
10
10
  "countryCode": "",
11
11
  "autoAddSubscriber": true,
12
12
  "updateSubscriber": true,
13
- "keyword": "testExisting_keyword"
13
+ "keyword": "TESTEXISTING_KEYWORD"
14
14
  }
15
15
  }
@@ -8,6 +8,6 @@
8
8
  "countryCode": "",
9
9
  "autoAddSubscriber": true,
10
10
  "updateSubscriber": true,
11
- "keyword": "{{{prefix}}}keyword"
11
+ "keyword": "{{{prefixUpper}}}KEYWORD"
12
12
  }
13
13
  }
@@ -1,4 +1,8 @@
1
- const assert = require('chai').assert;
1
+ const chai = require('chai');
2
+ const chaiFiles = require('chai-files');
3
+ const assert = chai.assert;
4
+ const expect = chai.expect;
5
+ const file = chaiFiles.file;
2
6
  const cache = require('../lib/util/cache');
3
7
  const testUtils = require('./utils');
4
8
  const handler = require('../lib/index');
@@ -29,6 +33,13 @@ describe('type: dataExtension', () => {
29
33
 
30
34
  'returned metadata was not equal expected'
31
35
  );
36
+ // check if MD file was created and equals expectations
37
+ expect(
38
+ file(testUtils.getActualDoc('testExisting_dataExtension', 'dataExtension'))
39
+ ).to.equal(
40
+ file(testUtils.getExpectedFile('9999999', 'dataExtension', 'retrieve', 'md'))
41
+ );
42
+
32
43
  assert.equal(
33
44
  testUtils.getAPIHistoryLength(),
34
45
  5,
@@ -74,6 +85,7 @@ describe('type: dataExtension', () => {
74
85
  return;
75
86
  });
76
87
  it('Should change the key during update via --changeKeyValue');
88
+ it('Should rename fields');
77
89
  });
78
90
  describe('Templating ================', () => {
79
91
  it('Should create a dataExtension template via retrieveAsTemplate and build it', async () => {
@@ -30,12 +30,21 @@ describe('type: mobileKeyword', () => {
30
30
  'only 1 mobileKeywords expected'
31
31
  );
32
32
  assert.deepEqual(
33
- await testUtils.getActualJson('testExisting_keyword', 'mobileKeyword'),
33
+ await testUtils.getActualJson(
34
+ '4912312345678.TESTEXISTING_KEYWORD',
35
+ 'mobileKeyword'
36
+ ),
34
37
  await testUtils.getExpectedJson('9999999', 'mobileKeyword', 'get'),
35
38
  'saved JSON was not equal expected'
36
39
  );
37
40
  expect(
38
- file(testUtils.getActualFile('testExisting_keyword', 'mobileKeyword', 'amp'))
41
+ file(
42
+ testUtils.getActualFile(
43
+ '4912312345678.TESTEXISTING_KEYWORD',
44
+ 'mobileKeyword',
45
+ 'amp'
46
+ )
47
+ )
39
48
  ).to.equal(file(testUtils.getExpectedFile('9999999', 'mobileKeyword', 'get', 'amp')));
40
49
  assert.equal(
41
50
  testUtils.getAPIHistoryLength(),
@@ -51,7 +60,11 @@ describe('type: mobileKeyword', () => {
51
60
  });
52
61
  it('Should create (but not update) a mobileKeyword', async () => {
53
62
  // WHEN
54
- await handler.deploy('testInstance/testBU', ['mobileKeyword'], ['testNew_keyword']);
63
+ await handler.deploy(
64
+ 'testInstance/testBU',
65
+ ['mobileKeyword'],
66
+ ['4912312345678.TESTNEW_KEYWORD']
67
+ );
55
68
  // THEN
56
69
  assert.equal(process.exitCode, false, 'deploy should not have thrown an error');
57
70
  // get results from cache
@@ -63,12 +76,14 @@ describe('type: mobileKeyword', () => {
63
76
  );
64
77
  // confirm created item
65
78
  assert.deepEqual(
66
- await testUtils.getActualJson('testNew_keyword', 'mobileKeyword'),
79
+ await testUtils.getActualJson('4912312345678.TESTNEW_KEYWORD', 'mobileKeyword'),
67
80
  await testUtils.getExpectedJson('9999999', 'mobileKeyword', 'post-create'),
68
81
  'returned JSON was not equal expected for insert mobileKeyword'
69
82
  );
70
83
  expect(
71
- file(testUtils.getActualFile('testNew_keyword', 'mobileKeyword', 'amp'))
84
+ file(
85
+ testUtils.getActualFile('4912312345678.TESTNEW_KEYWORD', 'mobileKeyword', 'amp')
86
+ )
72
87
  ).to.equal(
73
88
  file(testUtils.getExpectedFile('9999999', 'mobileKeyword', 'post-create', 'amp'))
74
89
  );
@@ -92,7 +107,7 @@ describe('type: mobileKeyword', () => {
92
107
  await handler.deploy(
93
108
  'testInstance/testBU',
94
109
  ['mobileKeyword'],
95
- ['testNew_keyword_blocked']
110
+ ['4912312345678.TESTNEW_KEYWORD_BLOCKED']
96
111
  );
97
112
  // THEN
98
113
  assert.equal(process.exitCode, true, 'deploy should have thrown an error');
@@ -113,7 +128,7 @@ describe('type: mobileKeyword', () => {
113
128
  const result = await handler.retrieveAsTemplate(
114
129
  'testInstance/testBU',
115
130
  'mobileKeyword',
116
- ['testExisting_keyword'],
131
+ ['4912312345678.TESTEXISTING_KEYWORD'],
117
132
  'testSourceMarket'
118
133
  );
119
134
  // WHEN
@@ -128,13 +143,20 @@ describe('type: mobileKeyword', () => {
128
143
  'only one item expected'
129
144
  );
130
145
  assert.deepEqual(
131
- await testUtils.getActualTemplateJson('testExisting_keyword', 'mobileKeyword'),
146
+ await testUtils.getActualTemplateJson(
147
+ '4912312345678.TESTEXISTING_KEYWORD',
148
+ 'mobileKeyword'
149
+ ),
132
150
  await testUtils.getExpectedJson('9999999', 'mobileKeyword', 'template'),
133
151
  'returned template JSON was not equal expected'
134
152
  );
135
153
  expect(
136
154
  file(
137
- testUtils.getActualTemplateFile('testExisting_keyword', 'mobileKeyword', 'amp')
155
+ testUtils.getActualTemplateFile(
156
+ '4912312345678.TESTEXISTING_KEYWORD',
157
+ 'mobileKeyword',
158
+ 'amp'
159
+ )
138
160
  )
139
161
  ).to.equal(
140
162
  file(testUtils.getExpectedFile('9999999', 'mobileKeyword', 'template', 'amp'))
@@ -153,7 +175,7 @@ describe('type: mobileKeyword', () => {
153
175
  const result = await handler.buildTemplate(
154
176
  'testInstance/testBU',
155
177
  'mobileKeyword',
156
- ['testExisting_keyword'],
178
+ ['4912312345678.TESTEXISTING_KEYWORD'],
157
179
  'testSourceMarket'
158
180
  );
159
181
  assert.equal(process.exitCode, false, 'buildTemplate should not have thrown an error');
@@ -164,13 +186,20 @@ describe('type: mobileKeyword', () => {
164
186
  'only one mobileKeyword expected'
165
187
  );
166
188
  assert.deepEqual(
167
- await testUtils.getActualTemplateJson('testExisting_keyword', 'mobileKeyword'),
189
+ await testUtils.getActualTemplateJson(
190
+ '4912312345678.TESTEXISTING_KEYWORD',
191
+ 'mobileKeyword'
192
+ ),
168
193
  await testUtils.getExpectedJson('9999999', 'mobileKeyword', 'template'),
169
194
  'returned template JSON was not equal expected'
170
195
  );
171
196
  expect(
172
197
  file(
173
- testUtils.getActualTemplateFile('testExisting_keyword', 'mobileKeyword', 'amp')
198
+ testUtils.getActualTemplateFile(
199
+ '4912312345678.TESTEXISTING_KEYWORD',
200
+ 'mobileKeyword',
201
+ 'amp'
202
+ )
174
203
  )
175
204
  ).to.equal(
176
205
  file(testUtils.getExpectedFile('9999999', 'mobileKeyword', 'template', 'amp'))
@@ -180,7 +209,7 @@ describe('type: mobileKeyword', () => {
180
209
  await handler.buildDefinition(
181
210
  'testInstance/testBU',
182
211
  'mobileKeyword',
183
- 'testExisting_keyword',
212
+ '4912312345678.TESTEXISTING_KEYWORD',
184
213
  'testTargetMarket'
185
214
  );
186
215
  assert.equal(
@@ -189,12 +218,21 @@ describe('type: mobileKeyword', () => {
189
218
  'buildDefinition should not have thrown an error'
190
219
  );
191
220
  assert.deepEqual(
192
- await testUtils.getActualDeployJson('testTemplated_keyword', 'mobileKeyword'),
221
+ await testUtils.getActualDeployJson(
222
+ '4912312345678.TESTTEMPLATED_KEYWORD',
223
+ 'mobileKeyword'
224
+ ),
193
225
  await testUtils.getExpectedJson('9999999', 'mobileKeyword', 'build'),
194
226
  'returned deployment JSON was not equal expected'
195
227
  );
196
228
  expect(
197
- file(testUtils.getActualDeployFile('testTemplated_keyword', 'mobileKeyword', 'amp'))
229
+ file(
230
+ testUtils.getActualDeployFile(
231
+ '4912312345678.TESTTEMPLATED_KEYWORD',
232
+ 'mobileKeyword',
233
+ 'amp'
234
+ )
235
+ )
198
236
  ).to.equal(file(testUtils.getExpectedFile('9999999', 'mobileKeyword', 'build', 'amp')));
199
237
 
200
238
  assert.equal(
@@ -209,7 +247,7 @@ describe('type: mobileKeyword', () => {
209
247
  it('Should delete the item', async () => {
210
248
  // WHEN
211
249
  const result = await handler.deleteByKey('testInstance/testBU', 'mobileKeyword', [
212
- 'testExisting_keyword',
250
+ '4912312345678.TESTEXISTING_KEYWORD',
213
251
  ]);
214
252
  // THEN
215
253
  assert.equal(process.exitCode, false, 'delete should not have thrown an error');
@@ -224,7 +262,7 @@ describe('type: mobileKeyword', () => {
224
262
  const fileList = await handler.getFilesToCommit(
225
263
  'testInstance/testBU',
226
264
  'mobileKeyword',
227
- ['testExisting_keyword']
265
+ ['4912312345678.TESTEXISTING_KEYWORD']
228
266
  );
229
267
  // THEN
230
268
  assert.equal(
@@ -236,12 +274,12 @@ describe('type: mobileKeyword', () => {
236
274
 
237
275
  assert.equal(
238
276
  fileList[0].split('\\').join('/'),
239
- 'retrieve/testInstance/testBU/mobileKeyword/testExisting_keyword.mobileKeyword-meta.json',
277
+ 'retrieve/testInstance/testBU/mobileKeyword/4912312345678.TESTEXISTING_KEYWORD.mobileKeyword-meta.json',
240
278
  'wrong JSON path'
241
279
  );
242
280
  assert.equal(
243
281
  fileList[1].split('\\').join('/'),
244
- 'retrieve/testInstance/testBU/mobileKeyword/testExisting_keyword.mobileKeyword-meta.amp',
282
+ 'retrieve/testInstance/testBU/mobileKeyword/4912312345678.TESTEXISTING_KEYWORD.mobileKeyword-meta.amp',
245
283
  'wrong AMP path'
246
284
  );
247
285
  return;
@@ -1,4 +1,9 @@
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;
2
7
  const cache = require('../lib/util/cache');
3
8
  const testUtils = require('./utils');
4
9
  const handler = require('../lib/index');
@@ -29,6 +34,11 @@ describe('type: user', () => {
29
34
 
30
35
  'returned metadata was not equal expected'
31
36
  );
37
+ // check if MD file was created and equals expectations
38
+ expect(file(`./docs/user/testInstance.users.md`)).to.equal(
39
+ file(testUtils.getExpectedFile('1111111', 'user', 'retrieve', 'md'))
40
+ );
41
+
32
42
  assert.equal(
33
43
  testUtils.getAPIHistoryLength(),
34
44
  6,
@@ -36,6 +46,22 @@ describe('type: user', () => {
36
46
  );
37
47
  return;
38
48
  });
49
+ it('Should retrieve a specific user but not run document', async () => {
50
+ // WHEN
51
+ await handler.retrieve('testInstance/_ParentBU_', ['user'], ['testExisting_user']);
52
+ // THEN
53
+ assert.equal(process.exitCode, false, 'retrieve should not have thrown an error');
54
+
55
+ // because user is single-document-type we would not want to find an md file when we retrieve specific keys. only the generic retrieve updates it
56
+ expect(file(`./docs/user/testInstance.users.md`)).to.not.exist;
57
+
58
+ assert.equal(
59
+ testUtils.getAPIHistoryLength(),
60
+ 4,
61
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
62
+ );
63
+ return;
64
+ });
39
65
  });
40
66
  describe('Deploy ================', () => {
41
67
  beforeEach(() => {
@@ -74,6 +100,9 @@ describe('type: user', () => {
74
100
  await testUtils.getExpectedJson('1111111', 'user', 'update'),
75
101
  'returned metadata was not equal expected for update'
76
102
  );
103
+ // because user is single-document-type we would not want to find an md file getting created by deploy. only retrieve updates it
104
+ expect(file(`./docs/user/testInstance.users.md`)).to.not.exist;
105
+
77
106
  assert.equal(
78
107
  testUtils.getAPIHistoryLength(),
79
108
  9,
package/test/utils.js CHANGED
@@ -22,6 +22,16 @@ const resourceFactory = require('./resourceFactory');
22
22
  */
23
23
  exports.getActualJson = (customerKey, type, buName = 'testBU') =>
24
24
  File.readJSON(`./retrieve/testInstance/${buName}/${type}/${customerKey}.${type}-meta.json`);
25
+ /**
26
+ * gets file from Retrieve folder
27
+ *
28
+ * @param {string} customerKey of metadata
29
+ * @param {string} type of metadata
30
+ * @param {string} [buName] used when we need to test on ParentBU
31
+ * @returns {Promise.<string>} file in string form
32
+ */
33
+ exports.getActualDoc = (customerKey, type, buName = 'testBU') =>
34
+ `./retrieve/testInstance/${buName}/${type}/${customerKey}.${type}-doc.md`;
25
35
  /**
26
36
  * gets file from Retrieve folder
27
37
  *