From ffcada5c1faf795dd794eadec189a82be07699dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?= Date: Mon, 30 Sep 2024 15:23:07 +0200 Subject: [PATCH 1/2] #1748: resolve sendClassification in transactionalEmail --- .../lib/metadataTypes/SendClassification.d.ts | 6 ++ .../metadataTypes/SendClassification.d.ts.map | 2 +- .../lib/metadataTypes/TransactionalEmail.d.ts | 7 +++ .../metadataTypes/TransactionalEmail.d.ts.map | 2 +- .../TransactionalEmail.definition.d.ts | 7 +++ lib/metadataTypes/SendClassification.js | 59 +++++++++++-------- lib/metadataTypes/TransactionalEmail.js | 32 ++++++++++ .../TransactionalEmail.definition.js | 9 ++- 8 files changed, 95 insertions(+), 29 deletions(-) diff --git a/@types/lib/metadataTypes/SendClassification.d.ts b/@types/lib/metadataTypes/SendClassification.d.ts index c15b4678e..f91278750 100644 --- a/@types/lib/metadataTypes/SendClassification.d.ts +++ b/@types/lib/metadataTypes/SendClassification.d.ts @@ -71,6 +71,12 @@ declare class SendClassification extends MetadataType { * @returns {MetadataTypeItem} parsed metadata */ static postRetrieveTasks(metadata: MetadataTypeItem): MetadataTypeItem; + /** + * this is the only known way to get the object ID for a deliveryProfile + * + * @param {MetadataTypeItem} metadata a single sendClassification item + */ + static updateDeliveryProfileIdInCache(metadata: MetadataTypeItem): void; } declare namespace SendClassification { let definition: { diff --git a/@types/lib/metadataTypes/SendClassification.d.ts.map b/@types/lib/metadataTypes/SendClassification.d.ts.map index 789d3c23c..2c5918396 100644 --- a/@types/lib/metadataTypes/SendClassification.d.ts.map +++ b/@types/lib/metadataTypes/SendClassification.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"SendClassification.d.ts","sourceRoot":"","sources":["../../../lib/metadataTypes/SendClassification.js"],"names":[],"mappings":";uBAOa,OAAO,wBAAwB,EAAE,QAAQ;0BACzC,OAAO,wBAAwB,EAAE,WAAW;8BAC5C,OAAO,wBAAwB,EAAE,eAAe;+BAChD,OAAO,wBAAwB,EAAE,gBAAgB;mCACjD,OAAO,wBAAwB,EAAE,oBAAoB;kCACrD,OAAO,wBAAwB,EAAE,mBAAmB;8BACpD,OAAO,wBAAwB,EAAE,eAAe;iCAChD,OAAO,wBAAwB,EAAE,kBAAkB;gCACnD,OAAO,wBAAwB,EAAE,iBAAiB;0BAClD,OAAO,wBAAwB,EAAE,WAAW;AAVzD;;;;;;;;;;;GAWG;AAEH;;;;GAIG;AACH;IACI;;;;;;;;OAQG;IACH,6BANW,MAAM,MACN,IAAI,GAAG,MAAM,EAAE,OACf,IAAI,GAAG,MAAM,EAAE,QACf,MAAM,GACJ,OAAO,CAAE,kBAAkB,CAAC,CAexC;IAED;;;;OAIG;IACH,2BAFa,OAAO,CAAE,kBAAkB,CAAC,CASxC;IAED;;;;;OAKG;IACH,4BAHW,gBAAgB,gBAK1B;IAED;;;;;OAKG;IACH,4BAHW,gBAAgB,gBAK1B;IAYD;;;;;OAKG;IACH,gCAHW,gBAAgB,GACd,OAAO,CAAE,gBAAgB,CAAC,CAgCtC;IAED;;;;;OAKG;IACH,mCAHW,gBAAgB,GACd,gBAAgB,CAgD5B;CACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAtLwB,mBAAmB"} \ No newline at end of file +{"version":3,"file":"SendClassification.d.ts","sourceRoot":"","sources":["../../../lib/metadataTypes/SendClassification.js"],"names":[],"mappings":";uBAOa,OAAO,wBAAwB,EAAE,QAAQ;0BACzC,OAAO,wBAAwB,EAAE,WAAW;8BAC5C,OAAO,wBAAwB,EAAE,eAAe;+BAChD,OAAO,wBAAwB,EAAE,gBAAgB;mCACjD,OAAO,wBAAwB,EAAE,oBAAoB;kCACrD,OAAO,wBAAwB,EAAE,mBAAmB;8BACpD,OAAO,wBAAwB,EAAE,eAAe;iCAChD,OAAO,wBAAwB,EAAE,kBAAkB;gCACnD,OAAO,wBAAwB,EAAE,iBAAiB;0BAClD,OAAO,wBAAwB,EAAE,WAAW;AAVzD;;;;;;;;;;;GAWG;AAEH;;;;GAIG;AACH;IACI;;;;;;;;OAQG;IACH,6BANW,MAAM,MACN,IAAI,GAAG,MAAM,EAAE,OACf,IAAI,GAAG,MAAM,EAAE,QACf,MAAM,GACJ,OAAO,CAAE,kBAAkB,CAAC,CAexC;IAED;;;;OAIG;IACH,2BAFa,OAAO,CAAE,kBAAkB,CAAC,CAWxC;IAED;;;;;OAKG;IACH,4BAHW,gBAAgB,gBAK1B;IAED;;;;;OAKG;IACH,4BAHW,gBAAgB,gBAK1B;IAYD;;;;;OAKG;IACH,gCAHW,gBAAgB,GACd,OAAO,CAAE,gBAAgB,CAAC,CAgCtC;IAED;;;;;OAKG;IACH,mCAHW,gBAAgB,GACd,gBAAgB,CAqC5B;IAED;;;;OAIG;IACH,gDAFW,gBAAgB,QAW1B;CACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA7LwB,mBAAmB"} \ No newline at end of file diff --git a/@types/lib/metadataTypes/TransactionalEmail.d.ts b/@types/lib/metadataTypes/TransactionalEmail.d.ts index 7b653c049..b5b931854 100644 --- a/@types/lib/metadataTypes/TransactionalEmail.d.ts +++ b/@types/lib/metadataTypes/TransactionalEmail.d.ts @@ -68,6 +68,7 @@ declare namespace TransactionalEmail { dataExtension: string[]; list: string[]; journey: string[]; + sendClassification: string[]; }; hasExtended: boolean; idField: string; @@ -229,6 +230,12 @@ declare namespace TransactionalEmail { retrieving: boolean; template: boolean; }; + r__sendClassification_key: { + isCreateable: boolean; + isUpdateable: boolean; + retrieving: boolean; + template: boolean; + }; }; }; } diff --git a/@types/lib/metadataTypes/TransactionalEmail.d.ts.map b/@types/lib/metadataTypes/TransactionalEmail.d.ts.map index 387eaca2f..bbef194d6 100644 --- a/@types/lib/metadataTypes/TransactionalEmail.d.ts.map +++ b/@types/lib/metadataTypes/TransactionalEmail.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"TransactionalEmail.d.ts","sourceRoot":"","sources":["../../../lib/metadataTypes/TransactionalEmail.js"],"names":[],"mappings":";uBAQa,OAAO,wBAAwB,EAAE,QAAQ;0BACzC,OAAO,wBAAwB,EAAE,WAAW;8BAC5C,OAAO,wBAAwB,EAAE,eAAe;+BAChD,OAAO,wBAAwB,EAAE,gBAAgB;mCACjD,OAAO,wBAAwB,EAAE,oBAAoB;kCACrD,OAAO,wBAAwB,EAAE,mBAAmB;8BACpD,OAAO,wBAAwB,EAAE,eAAe;iCAChD,OAAO,wBAAwB,EAAE,kBAAkB;gCACnD,OAAO,wBAAwB,EAAE,iBAAiB;0BAClD,OAAO,wBAAwB,EAAE,WAAW;AAVzD;;;;;;;;;;;GAWG;AAEH;;;;GAIG;AACH;IACI,uBAAyB;IACzB,oBAAoB;IACpB,kCAA2B;IAuC3B;;;;;OAKG;IACH,gCAHW,gBAAgB,GACd,OAAO,CAAE,gBAAgB,CAAC,CAyCtC;IAED;;;;;;OAMG;IACH,0BAJW,gBAAgB,eAChB,MAAM,GACJ,OAAO,CAAE,IAAI,CAAC,CAe1B;IAED;;;;OAIG;IACH,0BAFa,OAAO,CAAE,IAAI,CAAC,CAU1B;IAED;;;;;OAKG;IACH,mCAHW,gBAAgB,GACd,gBAAgB,CAmF5B;CA4BJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAxQgC,2BAA2B"} \ No newline at end of file +{"version":3,"file":"TransactionalEmail.d.ts","sourceRoot":"","sources":["../../../lib/metadataTypes/TransactionalEmail.js"],"names":[],"mappings":";uBAQa,OAAO,wBAAwB,EAAE,QAAQ;0BACzC,OAAO,wBAAwB,EAAE,WAAW;8BAC5C,OAAO,wBAAwB,EAAE,eAAe;+BAChD,OAAO,wBAAwB,EAAE,gBAAgB;mCACjD,OAAO,wBAAwB,EAAE,oBAAoB;kCACrD,OAAO,wBAAwB,EAAE,mBAAmB;8BACpD,OAAO,wBAAwB,EAAE,eAAe;iCAChD,OAAO,wBAAwB,EAAE,kBAAkB;gCACnD,OAAO,wBAAwB,EAAE,iBAAiB;0BAClD,OAAO,wBAAwB,EAAE,WAAW;AAVzD;;;;;;;;;;;GAWG;AAEH;;;;GAIG;AACH;IACI,uBAAyB;IACzB,oBAAoB;IACpB,kCAA2B;IAuC3B;;;;;OAKG;IACH,gCAHW,gBAAgB,GACd,OAAO,CAAE,gBAAgB,CAAC,CAqDtC;IAED;;;;;;OAMG;IACH,0BAJW,gBAAgB,eAChB,MAAM,GACJ,OAAO,CAAE,IAAI,CAAC,CAe1B;IAED;;;;OAIG;IACH,0BAFa,OAAO,CAAE,IAAI,CAAC,CAU1B;IAED;;;;;OAKG;IACH,mCAHW,gBAAgB,GACd,gBAAgB,CAuG5B;CA4BJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAxSgC,2BAA2B"} \ No newline at end of file diff --git a/@types/lib/metadataTypes/definitions/TransactionalEmail.definition.d.ts b/@types/lib/metadataTypes/definitions/TransactionalEmail.definition.d.ts index 94fdb964c..772de44c7 100644 --- a/@types/lib/metadataTypes/definitions/TransactionalEmail.definition.d.ts +++ b/@types/lib/metadataTypes/definitions/TransactionalEmail.definition.d.ts @@ -6,6 +6,7 @@ declare namespace _default { let dataExtension: string[]; let list: string[]; let journey: string[]; + let sendClassification: string[]; } let hasExtended: boolean; let idField: string; @@ -167,6 +168,12 @@ declare namespace _default { retrieving: boolean; template: boolean; }; + r__sendClassification_key: { + isCreateable: boolean; + isUpdateable: boolean; + retrieving: boolean; + template: boolean; + }; }; } export default _default; diff --git a/lib/metadataTypes/SendClassification.js b/lib/metadataTypes/SendClassification.js index 8604bc745..6f14af66b 100644 --- a/lib/metadataTypes/SendClassification.js +++ b/lib/metadataTypes/SendClassification.js @@ -54,9 +54,11 @@ class SendClassification extends MetadataType { */ static async retrieveForCache() { const typeMap = await this.retrieve(null); - for (const item of Object.values(typeMap.metadata)) { - // run postRetrieveTasks to cross-update deliveryProfile cache - this.postRetrieveTasks(item); + if (cache.getCache().deliveryProfile) { + for (const item of Object.values(typeMap.metadata)) { + // run postRetrieveTasks to cross-update deliveryProfile cache + this.updateDeliveryProfileIdInCache(item); + } } return typeMap; } @@ -142,21 +144,17 @@ class SendClassification extends MetadataType { ); delete metadata.SendClassificationType; - if (cache.getCache().senderProfile) { - // when sendClassification was only cached it can happen that we don't have the senderProfile cache yet - try { - metadata.r__senderProfile_key = cache.searchForField( - 'senderProfile', - metadata.SenderProfile.ObjectID, - 'ObjectID', - 'CustomerKey' - ); - delete metadata.SenderProfile; - } catch (ex) { - Util.logger.warn( - ` - ${this.definition.type} ${metadata.CustomerKey}: ${ex.message}` - ); - } + // when sendClassification was only cached it can happen that we don't have the senderProfile cache yet + try { + metadata.r__senderProfile_key = cache.searchForField( + 'senderProfile', + metadata.SenderProfile.ObjectID, + 'ObjectID', + 'CustomerKey' + ); + delete metadata.SenderProfile; + } catch (ex) { + Util.logger.warn(` - ${this.definition.type} ${metadata.CustomerKey}: ${ex.message}`); } try { metadata.r__deliveryProfile_key = cache.searchForField( @@ -166,14 +164,7 @@ class SendClassification extends MetadataType { 'key' ); // add ObjectID to deliveryProfile cache because it cannot be retrieved any other way and this way we can resolve it in journeys - const dp = cache.getByKey('deliveryProfile', metadata.DeliveryProfile.CustomerKey); - if (dp) { - dp.ObjectID = metadata.DeliveryProfile.ObjectID; - } else { - Util.logger.debug( - ` - ${this.definition.type} ${metadata.CustomerKey}: Could not find deliveryProfile ${metadata.DeliveryProfile.CustomerKey} in cache` - ); - } + this.updateDeliveryProfileIdInCache(metadata); delete metadata.DeliveryProfile; } catch (ex) { @@ -182,6 +173,22 @@ class SendClassification extends MetadataType { return metadata; } + + /** + * this is the only known way to get the object ID for a deliveryProfile + * + * @param {MetadataTypeItem} metadata a single sendClassification item + */ + static updateDeliveryProfileIdInCache(metadata) { + const dp = cache.getByKey('deliveryProfile', metadata.DeliveryProfile.CustomerKey); + if (dp) { + dp.ObjectID = metadata.DeliveryProfile.ObjectID; + } else { + Util.logger.debug( + ` - ${this.definition.type} ${metadata.CustomerKey}: Could not find deliveryProfile ${metadata.DeliveryProfile.CustomerKey} in cache` + ); + } + } } // Assign definition to static attributes diff --git a/lib/metadataTypes/TransactionalEmail.js b/lib/metadataTypes/TransactionalEmail.js index d44bc6ffc..5c1aedc77 100644 --- a/lib/metadataTypes/TransactionalEmail.js +++ b/lib/metadataTypes/TransactionalEmail.js @@ -109,6 +109,18 @@ class TransactionalEmail extends TransactionalMessage { metadata.options ||= {}; metadata.options.createJourney = true; // only send this during create or else we might end up with an unexpected outcome + // subscriptions: sendClassification + if (metadata.r__sendClassification_key) { + // we merely want to be able to show an error if it does not exist + metadata.classification = cache.searchForField( + 'sendClassification', + metadata.r__sendClassification_key, + 'CustomerKey', + 'CustomerKey' + ); + delete metadata.r__sendClassification_key; + } + return metadata; } @@ -234,6 +246,26 @@ class TransactionalEmail extends TransactionalMessage { } delete metadata.journey; } + // sendClassification + if (metadata.classification) { + metadata.r__sendClassification_key = metadata.classification; + try { + // we merely want to be able to show a warning if it does not exist + metadata.r__sendClassification_key = cache.searchForField( + 'sendClassification', + metadata.classification, + 'CustomerKey', + 'CustomerKey' + ); + } catch (ex) { + Util.logger.warn( + ` - ${this.definition.type} ${metadata[this.definition.nameField]} (${ + metadata[this.definition.keyField] + }): ${ex.message}.` + ); + } + delete metadata.classification; + } return metadata; } diff --git a/lib/metadataTypes/definitions/TransactionalEmail.definition.js b/lib/metadataTypes/definitions/TransactionalEmail.definition.js index 38a5ac0f2..54b487ca6 100644 --- a/lib/metadataTypes/definitions/TransactionalEmail.definition.js +++ b/lib/metadataTypes/definitions/TransactionalEmail.definition.js @@ -1,12 +1,13 @@ export default { bodyIteratorField: 'definitions', - dependencies: ['asset-message', 'dataExtension', 'list', 'journey'], + dependencies: ['asset-message', 'dataExtension', 'list', 'journey', 'sendClassification'], dependencyGraph: { // classic email cannot be deployed anymore asset: ['r__asset_key'], dataExtension: ['subscriptions.r__dataExtension_key'], list: ['subscriptions.r__list_PathName'], journey: ['r__journey_key'], + sendClassification: ['r__sendClassification_key'], }, hasExtended: false, idField: 'definitionId', @@ -168,5 +169,11 @@ export default { retrieving: true, template: true, }, + r__sendClassification_key: { + isCreateable: false, + isUpdateable: false, + retrieving: true, + template: true, + }, }, }; From 739c22eaecdcbabcc58fb9803f68f704b62af43c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?= Date: Mon, 30 Sep 2024 15:25:14 +0200 Subject: [PATCH 2/2] #1748: enhance tests for resolving sendClassificaiton in transactionalEmail --- .../9999999/transactionalEmail/build-expected.json | 4 ++-- test/resources/9999999/transactionalEmail/get-expected.json | 4 ++-- .../9999999/transactionalEmail/patch-expected.json | 4 ++-- .../resources/9999999/transactionalEmail/post-expected.json | 4 ++-- .../9999999/transactionalEmail/template-expected.json | 4 ++-- test/type.journey.test.js | 2 +- test/type.transactionalEmail.test.js | 6 +++--- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/test/resources/9999999/transactionalEmail/build-expected.json b/test/resources/9999999/transactionalEmail/build-expected.json index e6cd0702a..6204a7878 100644 --- a/test/resources/9999999/transactionalEmail/build-expected.json +++ b/test/resources/9999999/transactionalEmail/build-expected.json @@ -2,7 +2,6 @@ "name": "testTemplated_temail", "definitionKey": "testTemplated_temail", "description": "foobar", - "classification": "Default Transactional", "status": "Active", "subscriptions": { "r__dataExtension_key": "testTemplated_dataExtension", @@ -14,5 +13,6 @@ "trackLinks": true }, "r__asset_key": "testTemplated_asset_message", - "r__journey_key": "testTemplated_temail" + "r__journey_key": "testTemplated_temail", + "r__sendClassification_key": "Default Transactional" } diff --git a/test/resources/9999999/transactionalEmail/get-expected.json b/test/resources/9999999/transactionalEmail/get-expected.json index 10a0771e6..d6d1fef32 100644 --- a/test/resources/9999999/transactionalEmail/get-expected.json +++ b/test/resources/9999999/transactionalEmail/get-expected.json @@ -2,7 +2,6 @@ "name": "testExisting_temail", "definitionKey": "testExisting_temail", "description": "bla bla", - "classification": "Default Transactional", "status": "Active", "createdDate": "2020-09-10T03:29:00", "modifiedDate": "2020-09-10T03:29:00", @@ -16,5 +15,6 @@ "trackLinks": true }, "r__asset_key": "testExisting_asset_message", - "r__journey_key": "testExisting_temail" + "r__journey_key": "testExisting_temail", + "r__sendClassification_key": "Default Transactional" } diff --git a/test/resources/9999999/transactionalEmail/patch-expected.json b/test/resources/9999999/transactionalEmail/patch-expected.json index 5ba8fb626..cba7dd41c 100644 --- a/test/resources/9999999/transactionalEmail/patch-expected.json +++ b/test/resources/9999999/transactionalEmail/patch-expected.json @@ -2,7 +2,6 @@ "name": "testExisting_temail", "definitionKey": "testExisting_temail", "description": "updated via deploy", - "classification": "Default Transactional", "status": "Active", "createdDate": "2020-09-10T03:29:00", "modifiedDate": "2020-09-10T03:29:00", @@ -16,5 +15,6 @@ "trackLinks": true }, "r__asset_key": "testExisting_asset_message", - "r__journey_key": "testExisting_temail" + "r__journey_key": "testExisting_temail", + "r__sendClassification_key": "Default Transactional" } diff --git a/test/resources/9999999/transactionalEmail/post-expected.json b/test/resources/9999999/transactionalEmail/post-expected.json index 6b94ce5cc..5316962fc 100644 --- a/test/resources/9999999/transactionalEmail/post-expected.json +++ b/test/resources/9999999/transactionalEmail/post-expected.json @@ -2,7 +2,6 @@ "name": "testNew_temail", "definitionKey": "testNew_temail", "description": "created on deploy", - "classification": "Default Transactional", "status": "Active", "createdDate": "2022-12-06T06:08:00", "modifiedDate": "2022-12-06T06:08:00", @@ -16,5 +15,6 @@ "trackLinks": true }, "r__asset_key": "testExisting_asset_message", - "r__journey_key": "testNew_RANDOM_interaction" + "r__journey_key": "testNew_RANDOM_interaction", + "r__sendClassification_key": "Default Transactional" } diff --git a/test/resources/9999999/transactionalEmail/template-expected.json b/test/resources/9999999/transactionalEmail/template-expected.json index 216aac4b9..37b397bb2 100644 --- a/test/resources/9999999/transactionalEmail/template-expected.json +++ b/test/resources/9999999/transactionalEmail/template-expected.json @@ -2,7 +2,6 @@ "name": "{{{prefix}}}temail", "definitionKey": "{{{prefix}}}temail", "description": "{{{description}}}", - "classification": "Default Transactional", "status": "Active", "subscriptions": { "r__dataExtension_key": "{{{prefix}}}dataExtension", @@ -14,5 +13,6 @@ "trackLinks": true }, "r__asset_key": "{{{prefix}}}asset_message", - "r__journey_key": "{{{prefix}}}temail" + "r__journey_key": "{{{prefix}}}temail", + "r__sendClassification_key": "Default Transactional" } diff --git a/test/type.journey.test.js b/test/type.journey.test.js index c30d4b2aa..cabad4c20 100644 --- a/test/type.journey.test.js +++ b/test/type.journey.test.js @@ -581,7 +581,7 @@ describe('type: journey', () => { assert.equal( testUtils.getAPIHistoryLength(), - 34, + 35, 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests' ); return; diff --git a/test/type.transactionalEmail.test.js b/test/type.transactionalEmail.test.js index 739931276..371a7eb4f 100644 --- a/test/type.transactionalEmail.test.js +++ b/test/type.transactionalEmail.test.js @@ -36,7 +36,7 @@ describe('type: transactionalEmail', () => { ); assert.equal( testUtils.getAPIHistoryLength(), - 12, + 13, 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests' ); return; @@ -75,7 +75,7 @@ describe('type: transactionalEmail', () => { // check number of API calls assert.equal( testUtils.getAPIHistoryLength(), - 14, + 15, 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests' ); return; @@ -137,7 +137,7 @@ describe('type: transactionalEmail', () => { ); assert.equal( testUtils.getAPIHistoryLength(), - 12, + 13, 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests' ); return;