You need to sign in to do that
Don't have an account?
Help needed to write test class for trigger
i am a beginner i managed to create the below trigger to update the primary fields in contact from otc contact .
can any one help me writing a test class for it.
thanks in advance for your help.
trigger UpdatePrimaryOTCContact on OTC_Contact__c (after insert, after update) {
List <String> ContactIds= new List<String>();
For(OTC_Contact__c otc : trigger.new)
{
ContactIds.add(otc.Contact__c);
}
List<Contact>Contacts = [Select Id, Name, Primary_OTC_Contact__c, Primary_CheckPoint_Ship_To__c, Primary_Checkpoint_Learning_Ship_To__c From Contact Where id IN:ContactIds];
Map<String,Contact>ContactMap = New Map<String,Contact>();
For(Contact ct : Contacts)
{
ContactMap.Put(ct.id, ct);
}
List<Contact> ConUpdates = New List<Contact>();
For(OTC_Contact__c otc : Trigger.new)
{
system.debug('Entered for loop');
if(otc.Is_Primary__c==TRUE && otc.Is_Primary_Checkpoint_Ship_To__c==TRUE
&& otc.Is_Primary_Checkpoint_Learning_Ship_To__c==TRUE)
{
Contact con = ContactMap.get(otc.Contact__c);
system.debug(con.Id);
con.Primary_OTC_Contact__c=otc.id;
con.Primary_CheckPoint_Ship_To__c=otc.id;
con.Primary_Checkpoint_Learning_Ship_To__c=otc.id;
ConUpdates.add(con);
}
else if(otc.Is_Primary__c==TRUE && otc.Is_Primary_Checkpoint_Ship_To__c==TRUE)
{
Contact con = ContactMap.get(otc.Contact__c);
system.debug(con.Id);
con.Primary_OTC_Contact__c=otc.id;
con.Primary_CheckPoint_Ship_To__c=otc.id;
ConUpdates.add(con);
}
else if(otc.Is_Primary_Checkpoint_Ship_To__c==TRUE && otc.Is_Primary_Checkpoint_Learning_Ship_To__c==TRUE)
{
Contact con = ContactMap.get(otc.Contact__c);
system.debug(con.Id);
con.Primary_CheckPoint_Ship_To__c=otc.id;
con.Primary_Checkpoint_Learning_Ship_To__c=otc.id;
ConUpdates.add(con);
}
else if(otc.Is_Primary__c==TRUE && otc.Is_Primary_Checkpoint_Learning_Ship_To__c==TRUE)
{
Contact con = ContactMap.get(otc.Contact__c);
system.debug(con.Id);
con.Primary_OTC_Contact__c=otc.id;
con.Primary_Checkpoint_Learning_Ship_To__c=otc.id;
ConUpdates.add(con);
}
else if(otc.Is_Primary__c==TRUE)
{
Contact con = ContactMap.get(otc.Contact__c);
system.debug(con.Id);
con.Primary_OTC_Contact__c=otc.id;
ConUpdates.add(con);
}
else if(otc.Is_Primary_Checkpoint_Ship_To__c==TRUE)
{
Contact con = ContactMap.get(otc.Contact__c);
system.debug(con.Id);
con.Primary_CheckPoint_Ship_To__c=otc.id;
ConUpdates.add(con);
}
else if(otc.Is_Primary_Checkpoint_Learning_Ship_To__c==TRUE)
{
Contact con = ContactMap.get(otc.Contact__c);
system.debug(con.Id);
con.Primary_Checkpoint_Learning_Ship_To__c=otc.id;
ConUpdates.add(con);
}
}
update ConUpdates;
}
Tryout the code given below :
@isTest
class myTestClass
{
static testMethod void myTestMethod()
{
List<OTC_Contact__c> otcCon= new List<OTC_Contact__c>();
// insert contact record
Contact con=new Contact(lastName='test Contact');
insert con;
// create OTC_Contact__c record
OTC_Contact__c otc=new OTC_Contact__c();
otc.contact__c=con.id;
otc.Is_Primary__c==TRUE;
otc.Is_Primary_Checkpoint_Ship_To__c==TRUE;
otc.Is_Primary_Checkpoint_Learning_Ship_To__c==TRUE;
otcCon.add(otc);
/******************* Second case ******************/
OTC_Contact__c otc1=new OTC_Contact__c();
otc1.contact__c=con.id;
otc1.Is_Primary__c==TRUE;
otc1.Is_Primary_Checkpoint_Ship_To__c==TRUE;
otcCon.add(otc1);
/******************* Third case ******************/
OTC_Contact__c otc2=new OTC_Contact__c();
otc2.contact__c=con.id;
otc2.Is_Primary_Checkpoint_Ship_To__c==TRUE;
otc2.Is_Primary_Checkpoint_Learning_Ship_To__c==TRUE;
otcCon.add(otc2);
/******************* Forth case ******************/
OTC_Contact__c otc3=new OTC_Contact__c();
otc3.contact__c=con.id;
otc3.Is_Primary__c==TRUE;
otc3.Is_Primary_Checkpoint_Learning_Ship_To__c==TRUE;
otcCon.add(otc3);
/******************* Fifth case ******************/
OTC_Contact__c otc4=new OTC_Contact__c();
otc4.contact__c=con.id;
otc4.Is_Primary__c==TRUE;
otcCon.add(otc4);
/******************* Sixth case ******************/
OTC_Contact__c otc5=new OTC_Contact__c();
otc5.contact__c=con.id;
otc5.Is_Primary_Checkpoint_Learning_Ship_To__c==TRUE;
otcCon.add(otc5);
/******************* Sixth case ******************/
OTC_Contact__c otc6=new OTC_Contact__c();
otc6.contact__c=con.id;
otc6.Is_Primary_Checkpoint_Ship_To__c==TRUE;
otcCon.add(otc6);
insert otcCon;
}
}
All Answers
Tryout the code given below :
@isTest
class myTestClass
{
static testMethod void myTestMethod()
{
List<OTC_Contact__c> otcCon= new List<OTC_Contact__c>();
// insert contact record
Contact con=new Contact(lastName='test Contact');
insert con;
// create OTC_Contact__c record
OTC_Contact__c otc=new OTC_Contact__c();
otc.contact__c=con.id;
otc.Is_Primary__c==TRUE;
otc.Is_Primary_Checkpoint_Ship_To__c==TRUE;
otc.Is_Primary_Checkpoint_Learning_Ship_To__c==TRUE;
otcCon.add(otc);
/******************* Second case ******************/
OTC_Contact__c otc1=new OTC_Contact__c();
otc1.contact__c=con.id;
otc1.Is_Primary__c==TRUE;
otc1.Is_Primary_Checkpoint_Ship_To__c==TRUE;
otcCon.add(otc1);
/******************* Third case ******************/
OTC_Contact__c otc2=new OTC_Contact__c();
otc2.contact__c=con.id;
otc2.Is_Primary_Checkpoint_Ship_To__c==TRUE;
otc2.Is_Primary_Checkpoint_Learning_Ship_To__c==TRUE;
otcCon.add(otc2);
/******************* Forth case ******************/
OTC_Contact__c otc3=new OTC_Contact__c();
otc3.contact__c=con.id;
otc3.Is_Primary__c==TRUE;
otc3.Is_Primary_Checkpoint_Learning_Ship_To__c==TRUE;
otcCon.add(otc3);
/******************* Fifth case ******************/
OTC_Contact__c otc4=new OTC_Contact__c();
otc4.contact__c=con.id;
otc4.Is_Primary__c==TRUE;
otcCon.add(otc4);
/******************* Sixth case ******************/
OTC_Contact__c otc5=new OTC_Contact__c();
otc5.contact__c=con.id;
otc5.Is_Primary_Checkpoint_Learning_Ship_To__c==TRUE;
otcCon.add(otc5);
/******************* Sixth case ******************/
OTC_Contact__c otc6=new OTC_Contact__c();
otc6.contact__c=con.id;
otc6.Is_Primary_Checkpoint_Ship_To__c==TRUE;
otcCon.add(otc6);
insert otcCon;
}
}
thanks for the help pradeep,
i tried that, i am able to save the code, when i do test run the code covering 91% but its says the test failure and giving me an error,
here is the error.
System.DmlException: Insert failed. First exception on row 0; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, UpdatePrimaryOTCContact: execution of AfterInsert caused by: System.ListException: Before Insert or Upsert list must not have two identically equal elements Trigger.UpdatePrimaryOTCContact: line 81, column 4: []
Class.TestUpdatePrimaryOTCContact.myTestMethod: line 72, column 3 External entry point
can you please help in that its urgent.
thanks for the help pradeep, i did some changes in that it working fine
thanks again,