You need to sign in to do that
Don't have an account?
Nicholas Mirams
Test Class for Campaign Member History Trigger
Hi,
I am tryign to write a test class for a campaign memebr trigger and am struggling to get over 60% code coverage. I am veyr much trying to learn apex as very new to it so any help you be good.
Thanks
TRIGGER
Trigger HistoryTrack on CampaignMember (after insert, before update, before delete) {
List<CampaignHistory__c> ch= new List<CampaignHistory__c>(); ch.sort();
List<CampaignMember> cmOld= Trigger.old;
List<String> changes = new List<String>();
List<String> CampHisId = new List<String>();
integer i=0;
if(Trigger.isDelete){
for(CampaignMember cm: Trigger.old ){
String s;
s='Campaign Member: ' + cm.Member_Name__c + ' is Deleted from campaign: '+ cm.Campaign_Name__c + 'by user '+ userinfo.getName();
changes.add(s);
CampHisId.add(cm.campaignId);
CampaignHistory__c c= new CampaignHistory__c();
System.debug('CName:'+c.Name);
c.CampaignId__c=CampHisId[i];
System.debug('CampaignId:'+c.CampaignId__c);
c.History_Details__c=changes[i];
System.debug('CHistory:'+c.History_Details__c);
ch.add(c);
i++;
}
}else {
for(CampaignMember cm: Trigger.new ){
String s;
if((Trigger.isUpdate)){
if(cmOld[i].status!=cm.status){
s='Lead/Contact: ' + cm.Member_Name__c +
' status changed from ' + cmOld[i].status + ' to ' + cm.status +
' by user ' + userinfo.getName();
changes.add(s);
CampHisId.add(cm.campaignId);
CampaignHistory__c c= new CampaignHistory__c();
System.debug('CName:'+c.Name);
c.CampaignId__c=CampHisId[i];
System.debug('CampaignId:'+c.CampaignId__c);
c.History_Details__c=changes[i];
System.debug('CHistory:'+c.History_Details__c);
ch.add(c);
}else if(cmOld[i].campaignId!=cm.campaignId){
s='Changed Campaign id from : '+ cmOld[i].campaignId + 'to :' + cm.campaignId +
' by user '+ userinfo.getName();
changes.add(s);
CampHisId.add(cm.campaignId);
CampaignHistory__c c= new CampaignHistory__c();
System.debug('CName:'+c.Name);
c.CampaignId__c=CampHisId[i];
System.debug('CampaignId:'+c.CampaignId__c);
c.History_Details__c=changes[i];
System.debug('CHistory:'+c.History_Details__c);
ch.add(c);
}
}else if(Trigger.isInsert){
s='A new Campaign Member: ' + cm.Member_Name__c + ' is added to Campaign: ' + cm.Campaign_Name__c +' by user '+ userinfo.getName();
changes.add(s);
CampHisId.add(cm.campaignId);
System.debug('s>>>'+s);
CampaignHistory__c c= new CampaignHistory__c();
System.debug('CName:'+c.Name);
c.CampaignId__c=CampHisId[i];
System.debug('CampaignId:'+c.CampaignId__c);
c.History_Details__c=changes[i];
System.debug('CHistory:'+c.History_Details__c);
ch.add(c);
}
i++;
}
}
insert ch;
ch.sort();
}
TEST CLASS
@IsTest
Public class HistoryTrackTest{
static testMethod void HistoryTrackTest() {
Account a = new Account();
a.Name = 'Brian Blesseds House';
a.Primary_Regions__c = 'United Kingdom';
a.Type = 'Casdodian';
a.Status__c = 'Live';
insert a;
Lead l = new Lead();
l.FirstName = 'Brian';
l.LastName = 'Blessed';
l.Marketing_Prospect_Level__c = 'Prospect';
l.Title = 'Madmen';
l.Company = 'Gordans Alive Ltd';
l.email = 'brian.blessed@crackers.com';
l.Status = 'Sales Accepted Lead (SAL)';
l.Country__c = 'United Kigdom';
l.RecordTypeId = '0120X0000009exXQAQ';
insert l;
Contact cnt = new Contact();
cnt.firstname = 'Robin';
cnt.lastname = 'Williams';
cnt.accountid = a.id;
cnt.Marketing_Prospect_Level__c = 'Prospect';
cnt.Country__c = 'United Kingdom';
cnt.Title = 'Crackers';
cnt.Level__c = 'Level 1';
insert cnt;
Campaign cam = new Campaign();
cam.Name = 'New Campaign';
cam.IsActive = True;
cam.Description = 'This campaign will hold my lead for the history trigger';
cam.StartDate = Date.Today();
cam.Type = 'Email';
insert cam;
CampaignMember cm = new CampaignMember();
cm.Leadid = l.id;
cm.Status = 'Responded';
cm.CampaignId = cam.id;
insert cm;
CampaignMember cm2 = new CampaignMember();
cm2.Contactid = cnt.id;
cm2.Status = 'Sent';
cm2.Campaignid = cam.id;
insert cm2;
CampaignHistory__c ch = new CampaignHistory__c();
ch.CampaignId__c = cam.id;
ch.History_Details__c = 'Campaign Member Brian Blessed was added to New Campaign by Nick Mirams';
insert ch;
CampaignHistory__c ch2 = new CampaignHistory__c();
ch2.CampaignId__c = cam.id;
ch2.History_Details__c = 'Campaign Member Robin Williams was added to New Campaign by Nick Mirams';
insert ch2;
cm.Status = 'Sent';
update cm;
CampaignHistory__c ch3 = new CampaignHistory__c();
ch3.CampaignId__c = cam.id;
ch3.History_Details__c = 'Campaign Member Robin Williams Status was changed form Responded to Sent by Nick Mirams';
insert ch3;
}
}
I am tryign to write a test class for a campaign memebr trigger and am struggling to get over 60% code coverage. I am veyr much trying to learn apex as very new to it so any help you be good.
Thanks
TRIGGER
Trigger HistoryTrack on CampaignMember (after insert, before update, before delete) {
List<CampaignHistory__c> ch= new List<CampaignHistory__c>(); ch.sort();
List<CampaignMember> cmOld= Trigger.old;
List<String> changes = new List<String>();
List<String> CampHisId = new List<String>();
integer i=0;
if(Trigger.isDelete){
for(CampaignMember cm: Trigger.old ){
String s;
s='Campaign Member: ' + cm.Member_Name__c + ' is Deleted from campaign: '+ cm.Campaign_Name__c + 'by user '+ userinfo.getName();
changes.add(s);
CampHisId.add(cm.campaignId);
CampaignHistory__c c= new CampaignHistory__c();
System.debug('CName:'+c.Name);
c.CampaignId__c=CampHisId[i];
System.debug('CampaignId:'+c.CampaignId__c);
c.History_Details__c=changes[i];
System.debug('CHistory:'+c.History_Details__c);
ch.add(c);
i++;
}
}else {
for(CampaignMember cm: Trigger.new ){
String s;
if((Trigger.isUpdate)){
if(cmOld[i].status!=cm.status){
s='Lead/Contact: ' + cm.Member_Name__c +
' status changed from ' + cmOld[i].status + ' to ' + cm.status +
' by user ' + userinfo.getName();
changes.add(s);
CampHisId.add(cm.campaignId);
CampaignHistory__c c= new CampaignHistory__c();
System.debug('CName:'+c.Name);
c.CampaignId__c=CampHisId[i];
System.debug('CampaignId:'+c.CampaignId__c);
c.History_Details__c=changes[i];
System.debug('CHistory:'+c.History_Details__c);
ch.add(c);
}else if(cmOld[i].campaignId!=cm.campaignId){
s='Changed Campaign id from : '+ cmOld[i].campaignId + 'to :' + cm.campaignId +
' by user '+ userinfo.getName();
changes.add(s);
CampHisId.add(cm.campaignId);
CampaignHistory__c c= new CampaignHistory__c();
System.debug('CName:'+c.Name);
c.CampaignId__c=CampHisId[i];
System.debug('CampaignId:'+c.CampaignId__c);
c.History_Details__c=changes[i];
System.debug('CHistory:'+c.History_Details__c);
ch.add(c);
}
}else if(Trigger.isInsert){
s='A new Campaign Member: ' + cm.Member_Name__c + ' is added to Campaign: ' + cm.Campaign_Name__c +' by user '+ userinfo.getName();
changes.add(s);
CampHisId.add(cm.campaignId);
System.debug('s>>>'+s);
CampaignHistory__c c= new CampaignHistory__c();
System.debug('CName:'+c.Name);
c.CampaignId__c=CampHisId[i];
System.debug('CampaignId:'+c.CampaignId__c);
c.History_Details__c=changes[i];
System.debug('CHistory:'+c.History_Details__c);
ch.add(c);
}
i++;
}
}
insert ch;
ch.sort();
}
TEST CLASS
@IsTest
Public class HistoryTrackTest{
static testMethod void HistoryTrackTest() {
Account a = new Account();
a.Name = 'Brian Blesseds House';
a.Primary_Regions__c = 'United Kingdom';
a.Type = 'Casdodian';
a.Status__c = 'Live';
insert a;
Lead l = new Lead();
l.FirstName = 'Brian';
l.LastName = 'Blessed';
l.Marketing_Prospect_Level__c = 'Prospect';
l.Title = 'Madmen';
l.Company = 'Gordans Alive Ltd';
l.email = 'brian.blessed@crackers.com';
l.Status = 'Sales Accepted Lead (SAL)';
l.Country__c = 'United Kigdom';
l.RecordTypeId = '0120X0000009exXQAQ';
insert l;
Contact cnt = new Contact();
cnt.firstname = 'Robin';
cnt.lastname = 'Williams';
cnt.accountid = a.id;
cnt.Marketing_Prospect_Level__c = 'Prospect';
cnt.Country__c = 'United Kingdom';
cnt.Title = 'Crackers';
cnt.Level__c = 'Level 1';
insert cnt;
Campaign cam = new Campaign();
cam.Name = 'New Campaign';
cam.IsActive = True;
cam.Description = 'This campaign will hold my lead for the history trigger';
cam.StartDate = Date.Today();
cam.Type = 'Email';
insert cam;
CampaignMember cm = new CampaignMember();
cm.Leadid = l.id;
cm.Status = 'Responded';
cm.CampaignId = cam.id;
insert cm;
CampaignMember cm2 = new CampaignMember();
cm2.Contactid = cnt.id;
cm2.Status = 'Sent';
cm2.Campaignid = cam.id;
insert cm2;
CampaignHistory__c ch = new CampaignHistory__c();
ch.CampaignId__c = cam.id;
ch.History_Details__c = 'Campaign Member Brian Blessed was added to New Campaign by Nick Mirams';
insert ch;
CampaignHistory__c ch2 = new CampaignHistory__c();
ch2.CampaignId__c = cam.id;
ch2.History_Details__c = 'Campaign Member Robin Williams was added to New Campaign by Nick Mirams';
insert ch2;
cm.Status = 'Sent';
update cm;
CampaignHistory__c ch3 = new CampaignHistory__c();
ch3.CampaignId__c = cam.id;
ch3.History_Details__c = 'Campaign Member Robin Williams Status was changed form Responded to Sent by Nick Mirams';
insert ch3;
}
}
81% is what I can get to
the bit thats not covered is the second part highlighted in bold above.
does it really matter when I need 75% coverage? will this affect anything else?