Hi I am trying to deploy a trigger on Campagin Members from Sandbox to production but while Validating it i am getting an error the Code coverage is 0% and it should me atleast 1%
Since I am new to this and don't have any idea about the same. Can you please guide me to writte the test class for the trigger. Below mention is the trigger which I wanted to deploy:
Trigger HistoryTrack on CampaignMember (after insert, before update, before delete) { List<CampaignMemberHistory__c> ch= new List<CampaignMemberHistory__c>(); 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 id ' + cm.id + 'is Deleted from campaign id: '+ cm.campaignId + 'by user '+ userinfo.getUserName(); changes.add(s); CampHisId.add(cm.campaignId); CampaignMemberHistory__c c= new CampaignMemberHistory__c(); c.Name='History'+DateTime.now(); System.debug('CName:'+c.Name); c.CampaignId_c__c=CampHisId[i]; System.debug('CampaignId:'+c.CampaignId_c__c); c.HistoryDetails_c__c=changes[i]; System.debug('CHistory:'+c.HistoryDetails_c__c); ch.add(c); i++; } }else { for(CampaignMember cm: Trigger.new ){ String s; if((Trigger.isUpdate)){ if(cmOld[i].OSS_Status__c!=cm.OSS_Status__c){ s=' OSS Status changed from ' + cmOld[i].OSS_Status__c + ' to ' + cm.OSS_Status__c + ' by user ' + userinfo.getUserName();
changes.add(s); CampHisId.add(cm.campaignId); CampaignMemberHistory__c c= new CampaignMemberHistory__c(); c.Name='History'+DateTime.now(); System.debug('CName:'+c.Name); c.CampaignId_c__c=CampHisId[i]; System.debug('CampaignId:'+c.CampaignId_c__c); c.HistoryDetails_c__c=changes[i]; System.debug('CHistory:'+c.HistoryDetails_c__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.getUserName(); changes.add(s); CampHisId.add(cm.campaignId); CampaignMemberHistory__c c= new CampaignMemberHistory__c(); c.Name='History'+DateTime.now(); System.debug('CName:'+c.Name); c.CampaignId_c__c=CampHisId[i]; System.debug('CampaignId:'+c.CampaignId_c__c); c.HistoryDetails_c__c=changes[i]; System.debug('CHistory:'+c.HistoryDetails_c__c); ch.add(c); } }else if(Trigger.isInsert){ s='A new Campaign Member id : ' + cm.id + ' is added to Campaign id :' + cm.campaignId + ' by user '+ userinfo.getUserName(); changes.add(s); CampHisId.add(cm.campaignId); System.debug('s>>>'+s); CampaignMemberHistory__c c= new CampaignMemberHistory__c(); c.Name='History'+DateTime.now(); System.debug('CName:'+c.Name); c.CampaignId_c__c=CampHisId[i]; System.debug('CampaignId:'+c.CampaignId_c__c); c.HistoryDetails_c__c=changes[i]; System.debug('CHistory:'+c.HistoryDetails_c__c); ch.add(c); } i++; } } insert ch; }
The triiger is to monitor the Campaign Member History
Have you written the test class for the trigger that you are deploying?
https://www.salesforce.com/us/developer/docs/apexcode/Content/apex_qs_test.htm
Thanks,
Pratik
Trigger HistoryTrack on CampaignMember (after insert, before update, before delete) { List<CampaignMemberHistory__c> ch= new List<CampaignMemberHistory__c>(); 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 id ' + cm.id +
'is Deleted from campaign id: '+ cm.campaignId + 'by user '+ userinfo.getUserName();
changes.add(s);
CampHisId.add(cm.campaignId);
CampaignMemberHistory__c c= new CampaignMemberHistory__c();
c.Name='History'+DateTime.now();
System.debug('CName:'+c.Name);
c.CampaignId_c__c=CampHisId[i];
System.debug('CampaignId:'+c.CampaignId_c__c);
c.HistoryDetails_c__c=changes[i];
System.debug('CHistory:'+c.HistoryDetails_c__c);
ch.add(c);
i++;
}
}else {
for(CampaignMember cm: Trigger.new ){
String s;
if((Trigger.isUpdate)){
if(cmOld[i].OSS_Status__c!=cm.OSS_Status__c){
s=' OSS Status changed from ' + cmOld[i].OSS_Status__c + ' to ' + cm.OSS_Status__c +
' by user ' + userinfo.getUserName();
changes.add(s);
CampHisId.add(cm.campaignId);
CampaignMemberHistory__c c= new CampaignMemberHistory__c();
c.Name='History'+DateTime.now();
System.debug('CName:'+c.Name);
c.CampaignId_c__c=CampHisId[i];
System.debug('CampaignId:'+c.CampaignId_c__c);
c.HistoryDetails_c__c=changes[i];
System.debug('CHistory:'+c.HistoryDetails_c__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.getUserName();
changes.add(s);
CampHisId.add(cm.campaignId);
CampaignMemberHistory__c c= new CampaignMemberHistory__c();
c.Name='History'+DateTime.now();
System.debug('CName:'+c.Name);
c.CampaignId_c__c=CampHisId[i];
System.debug('CampaignId:'+c.CampaignId_c__c);
c.HistoryDetails_c__c=changes[i];
System.debug('CHistory:'+c.HistoryDetails_c__c);
ch.add(c);
}
}else if(Trigger.isInsert){
s='A new Campaign Member id : ' + cm.id + ' is added to Campaign id :' + cm.campaignId + ' by user '+ userinfo.getUserName();
changes.add(s);
CampHisId.add(cm.campaignId);
System.debug('s>>>'+s);
CampaignMemberHistory__c c= new CampaignMemberHistory__c();
c.Name='History'+DateTime.now();
System.debug('CName:'+c.Name);
c.CampaignId_c__c=CampHisId[i];
System.debug('CampaignId:'+c.CampaignId_c__c);
c.HistoryDetails_c__c=changes[i];
System.debug('CHistory:'+c.HistoryDetails_c__c);
ch.add(c);
}
i++;
}
}
insert ch;
}
The triiger is to monitor the Campaign Member History
Please go through this link :http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_deploying_ant_deploy.htm
NOTE: Your trigger must have some code coverage while deploying.