+ Start a Discussion
Dilip_VDilip_V 

Code coverage For Trigger which prevents user from entering duplicate emails


Trigger:
trigger leadDuplicatePreventer on Lead 
(before insert, before update) { 

Map<String, Lead> leadMap = new Map<String, Lead>(); 
for (Lead lead : System.Trigger.new) { 

// Make sure we don't treat an email address that 

// isn't changing during an update as a duplicate. 

if ((lead.Email != null) && 
(System.Trigger.isInsert || 
(lead.Email != 
System.Trigger.oldMap.get(lead.Id).Email))) { 

// Make sure another new lead isn't also a duplicate 

if (leadMap.containsKey(lead.Email)) { 
lead.Email.addError('Another new lead has the ' 
+ 'same email address.'); 
} else { 
leadMap.put(lead.Email, lead); 
} 
} 
} 

// Using a single database query, find all the leads in 

// the database that have the same email address as any 

// of the leads being inserted or updated. 

for (Lead lead : [SELECT Email FROM Lead 
WHERE Email IN :leadMap.KeySet()]) { 
Lead newLead = leadMap.get(lead.Email); 
newLead.Email.addError('A lead with this email ' 
+ 'address already exists.'); 
} 
}
Test Class:
@isTest
Public class TestEmailDupPreventor
{
 Public Static testmethod void PositiveCase()
{
//Testing at the time of record creation
Lead Ld=new Lead(Firstname='Manohar',Lastname='SD',Company='Suzlon',Email='abcd@yopmail.com');
insert ld;
system.assertEquals('abcd@yopmail.com',ld.email);
Lead Ld1=new Lead(Firstname='Mohan',Lastname='SD',Company='Suzlon',Email='abcd@yopmail.com');
try
{
insert ld1;
 System.assert(false);
}
catch(DMLException e)
{
    //System.assert(false,' FIELD_CUSTOM_VALIDATION_EXCEPTION ');
}

}
  
Public Static testmethod void NegativeCase()
{
test.starttest();
//testing for Updation case
Lead l1= new Lead(Firstname='Test1',Lastname='TT',Company='KT',Email='kt1@yopmail.com');insert l1;
Lead l2= new Lead(Firstname='Test2',Lastname='TT',Company='KT',Email='kt2@yopmail.com');insert l2;
l2.email='kt1@yopmail.com';
try{
upsert l2;
system.assert(false);
}
catch(Dmlexception e)
{
}
test.stoptest();
}



}
Total coverage is 76%.
The first methode(Checking while Inserting) is executing Properly.
Second method(Checking while Updating) is not passed and showing an error:

System.UnexpectedException: No more than one executeBatch can be called from within a testmethod. Please make sure the iterable returned from your start method matches the batch size, resulting in one executeBatch invocation.

But I hav'nt wrote any batch methods.