Skip to content

Commit 4853811

Browse files
committed
Bugfixes in the triggered instances
* Fill in missing fields in the data provided through the `Trigger` context, to include (among others) the `nameField` field * Map the "object updated" webhook trigger to the correct test * Rename the "object updated" trigger test template to match the pattern of the rest of them
1 parent 092aacd commit 4853811

File tree

5 files changed

+76
-13
lines changed

5 files changed

+76
-13
lines changed
Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,29 @@
1-
trigger {{triggerName}} on {{sObjectType}} (after delete) {
2-
for ({{sObjectType}} item : Trigger.Old) {
1+
trigger {{triggerName}} on {{sObjectType}} (before delete) {
2+
final List<SObjectField> fields = {{sObjectType}}.getSObjectType()
3+
.getDescribe()
4+
.fields
5+
.getMap()
6+
.values();
7+
final List<String> fieldNames = new List<String>();
8+
for (SObjectField f : fields) {
9+
final String fieldName = f.getDescribe().getName();
10+
fieldNames.add(fieldName);
11+
}
12+
final String joinedFieldNames = String.join(fieldNames, ', ');
13+
for (SObject item : Trigger.Old) {
14+
final String query = String.format(
15+
'SELECT {0} FROM {{sObjectType}} WHERE Id = \'\'{1}\'\'',
16+
new List<String> {
17+
joinedFieldNames,
18+
String.valueOf(item.Id)
19+
}
20+
);
21+
final {{sObjectType}} itemFull = ({{sObjectType}}) Database.query(query);
22+
323
final Map<String, {{sObjectType}}> eventData = new Map<String, {{sObjectType}}>();
4-
eventData.put('Old', item);
5-
String content = {{webhookCalloutName}}.jsonContent(eventData);
24+
eventData.put('Old', itemFull);
25+
26+
final String content = {{webhookCalloutName}}.jsonContent(eventData);
627
{{webhookCalloutName}}.callout('{{endpointUrl}}', content);
728
}
829
}
Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,29 @@
11
trigger {{triggerName}} on {{sObjectType}} (after insert) {
2-
for ({{sObjectType}} item : Trigger.New) {
2+
final List<SObjectField> fields = {{sObjectType}}.getSObjectType()
3+
.getDescribe()
4+
.fields
5+
.getMap()
6+
.values();
7+
final List<String> fieldNames = new List<String>();
8+
for (SObjectField f : fields) {
9+
final String fieldName = f.getDescribe().getName();
10+
fieldNames.add(fieldName);
11+
}
12+
final String joinedFieldNames = String.join(fieldNames, ', ');
13+
for (SObject item : Trigger.New) {
14+
final String query = String.format(
15+
'SELECT {0} FROM {{sObjectType}} WHERE Id = \'\'{1}\'\'',
16+
new List<String> {
17+
joinedFieldNames,
18+
String.valueOf(item.Id)
19+
}
20+
);
21+
final {{sObjectType}} itemFull = ({{sObjectType}}) Database.query(query);
22+
323
final Map<String, {{sObjectType}}> eventData = new Map<String, {{sObjectType}}>();
4-
eventData.put('New', item);
5-
String content = {{webhookCalloutName}}.jsonContent(eventData);
24+
eventData.put('New', itemFull);
25+
26+
final String content = {{webhookCalloutName}}.jsonContent(eventData);
627
{{webhookCalloutName}}.callout('{{endpointUrl}}', content);
728
}
829
}
Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,34 @@
11
trigger {{triggerName}} on {{sObjectType}} (after update) {
2-
for ({{sObjectType}} item : Trigger.New) {
2+
final List<SObjectField> fields = {{sObjectType}}.getSObjectType()
3+
.getDescribe()
4+
.fields
5+
.getMap()
6+
.values();
7+
final List<String> fieldNames = new List<String>();
8+
for (SObjectField f : fields) {
9+
final String fieldName = f.getDescribe().getName();
10+
fieldNames.add(fieldName);
11+
}
12+
final String joinedFieldNames = String.join(fieldNames, ', ');
13+
for (SObject item : Trigger.New) {
14+
final String query = String.format(
15+
'SELECT {0} FROM {{sObjectType}} WHERE Id = \'\'{1}\'\'',
16+
new List<String> {
17+
joinedFieldNames,
18+
String.valueOf(item.Id)
19+
}
20+
);
21+
final {{sObjectType}} itemFull = ({{sObjectType}}) Database.query(query);
22+
323
final Map<String, {{sObjectType}}> eventData = new Map<String, {{sObjectType}}>();
4-
eventData.put('New', item);
24+
eventData.put('New', itemFull);
525

626
if (Trigger.OldMap != null) {
7-
final {{sObjectType}} oldItem = Trigger.OldMap.get(item.Id);
27+
final {{sObjectType}} oldItem = ({{sObjectType}}) Trigger.OldMap.get(item.Id);
828
eventData.put('Old', oldItem);
929
}
10-
String content = {{webhookCalloutName}}.jsonContent(eventData);
30+
31+
final String content = {{webhookCalloutName}}.jsonContent(eventData);
1132
{{webhookCalloutName}}.callout('{{endpointUrl}}', content);
1233
}
1334
}

resources/templates/apex/test/UpdatedObjectTriggerTest.cls.handlebars renamed to resources/templates/apex/test/UpdatedSObjectTriggerTest.cls.handlebars

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@ public class {{testClassName}} {
1313
Test.setMock(HttpCalloutMock.class, new {{webhookCalloutMockName}}('{{endpointUrl}}'));
1414
{{sObjectType}} a = ({{sObjectType}}) {{sObjectFactoryName}}.createSObject('{{sObjectType}}', true);
1515
insert a;
16-
insert a;
16+
update a;
1717
}
1818
}

src/client.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,7 @@ export class SalesforceClient {
361361
async createWebhookUpdated(opts) {
362362
this._validateCreateWebhookOpts(opts);
363363
const triggerTemplate = require('../resources/templates/apex/src/UpdatedSObject.trigger.handlebars');
364-
const triggerTestTemplate = require('../resources/templates/apex/test/DeletedSObjectTriggerTest.cls.handlebars');
364+
const triggerTestTemplate = require('../resources/templates/apex/test/UpdatedSObjectTriggerTest.cls.handlebars');
365365
return this._createWebhookWorkflow(
366366
triggerTemplate,
367367
triggerTestTemplate,

0 commit comments

Comments
 (0)