You need to sign in to do that
Don't have an account?
Wes Reed 27
Need help writing tests for Apex Triggers
I have these two apex triggers that I need help writing test for. As a newbie to salesforce devlopment, it took some time to finally get these triggers working. Thanks for your help. - Wes
trigger IndvidualEngagementScore on EngagementContact__c(after insert, after update, after delete) { Contact objContact; String getAccountId; Decimal sumPoints = 0; Decimal countRecords = 0; //Set initial values based on current engagement record's contact and trigger action: if (Trigger.isDelete) { For(EngagementContact__c delEngagement: trigger.old) { objContact = [SELECT id, AccountID FROM Contact WHERE id =: delEngagement.Contact__c]; getAccountId = objContact.AccountId; if (delEngagement.ParticipationPoints__c == NULL) { sumPoints = 0; countRecords = 0; } Else { sumPoints = sumPoints - delEngagement.ParticipationPoints__c; countRecords = countRecords - 1; } } } Else { For(EngagementContact__c objEngagement: trigger.new) { objContact = [SELECT id, AccountID FROM Contact WHERE id =: objEngagement.Contact__c]; getAccountId = objContact.AccountId; sumPoints = sumPoints + objEngagement.ParticipationPoints__c; countRecords = countRecords + 1; if (Trigger.isUpdate) { For(EngagementContact__c oldEngagement: trigger.old) { if (oldEngagement.ParticipationPoints__c == NULL) { sumPoints = 0; countRecords = 0; } Else { sumPoints = sumPoints - oldEngagement.ParticipationPoints__c; countRecords = countRecords - 1; } } } } } //Get other contacts related to same account and sum their engagement points: Account objAccount = [SELECT id FROM Account WHERE id =: getAccountId]; List < Contact > contactList = [SELECT id, EngagementPoints__c, EngagementRecords__c FROM Contact WHERE AccountId =: objAccount.Id]; For(Contact i: contactList) { sumPoints = sumPoints + i.EngagementPoints__c; countRecords = countRecords + i.EngagementRecords__c; } //Update the account's engagement score and commit change: objAccount.IndividualEngagementScore__c = sumPoints; objAccount.IndividualEngagementRecords__c = countRecords; Update objAccount; }
trigger IndividualEngagmentOrgRecalc on Contact(After update, After delete) { String getOldAccountId; String getNewAccountID; Decimal sumPoints = 0; Decimal countRecords = 0; For(Contact objOldContact: trigger.old) { //Get other contacts related to same OLD account and sum their engagement points: Account objOldAccount = [SELECT id FROM Account WHERE id =: objOldContact.AccountID]; List < Contact > contactOldList = [SELECT id, EngagementPoints__c, EngagementRecords__c FROM Contact WHERE AccountId =: objOldAccount.Id]; For(Contact i: contactOldList) { sumPoints = sumPoints + i.EngagementPoints__c; countRecords = countRecords + i.EngagementRecords__c; } //Update the OLD account's engagement score and commit change: objOldAccount.IndividualEngagementScore__c = sumPoints; objOldAccount.IndividualEngagementRecords__c = countRecords; Update objOldAccount; } //Reset initial values sumPoints = 0; countRecords = 0; if (Trigger.isDelete) {} ELSE { For(Contact objNewContact: trigger.New) { //Get other contacts related to same OLD account and sum their engagement points: Account objNewAccount = [SELECT id FROM Account WHERE id =: objNewContact.AccountId]; List < Contact > contactNewList = [SELECT id, EngagementPoints__c, EngagementRecords__c FROM Contact WHERE AccountId =: objNewAccount.Id]; For(Contact i: contactNewList) { sumPoints = sumPoints + i.EngagementPoints__c; countRecords = countRecords + i.EngagementRecords__c; } //Update the OLD account's engagement score and commit change: objNewAccount.IndividualEngagementScore__c = sumPoints; objNewAccount.IndividualEngagementRecords__c = countRecords; Update objNewAccount; } } }
https://lahirustechtalk.wordpress.com/2016/04/17/apex-test-classes-best-practices/
Make it a best answer if your issue is resolved
Cheers,
Mudi