function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Nicholas MiramsNicholas 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;
        
   }
   
 }
Raj VakatiRaj Vakati
Try this code
 
@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;
		
		Campaign cam1 = new Campaign();
        cam1.Name = 'New Campaign';
        cam1.IsActive = True;
        cam1.Description = 'This campaign will hold my lead for the history trigger';
        cam1.StartDate = Date.Today();
        cam1.Type = 'Email';
        insert cam1;
        
        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;
		
		
		
        cm2.Status = 'Responded';
        cm2.Campaignid = cam1.id;
        update 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;
		
		
		delete cm2 ;
        
   }
   
 }

 
Nicholas MiramsNicholas Mirams
Thanks
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?