I have the following trigger that is working properly
trigger LeadConversionTrigger on Lead (after update) {
for (Lead l : Trigger.new){
if (checkRecursive.runOnce()){
// only run if there is an order and an approved certification on the lead
if (l.Order_Count__c > 0 && l.Certification_Current_State__c == 'Approved'
&& l.Potential_VIP_Customer__c == false) {
// create an instance of the lead convert object
Database.LeadConvert lc = new database.LeadConvert();
lc.setLeadId(l.id);
// set the status to a converted stage of qualified
LeadStatus convertStatus = [SELECT Id, MasterLabel FROM LeadStatus
WHERE IsConverted=true LIMIT 1];
lc.setConvertedStatus(convertStatus.MasterLabel);
// log some stuff
System.debug('### Lead ID = ' + lc.leadid );
System.debug('### Is Converted = '+ l.IsConverted );
lc.setDoNotCreateOpportunity(TRUE);
Database.LeadConvertResult lcr = Database.convertLead(lc);
// log some more stuff
System.debug('### Result = '+ lc );
system.debug('### Lead conversion result: '+lc );
System.assert(lcr.isSuccess());
}
}
}
}
My first test is failing because of the following error:
System.DmlException: ConvertLead failed. First exception on row 0; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, There was an error converting the lead. Please resolve the following error and try again: LeadConversionTrigger: execution of AfterUpdate caused by: System.DmlException: ConvertLead failed. First exception on row 0; first error: CANNOT_UPDATE_CONVERTED_LEAD, This lead was already converted to the contact TestLastName on 02/08/2018.: [] Trigger.LeadConversionTrigger: line 22, column 1: []
Here is the test class:
@isTest
private class LeadConversionTest {
static testMethod void successfulConversionTest(){
Lead objLead = new Lead();
objLead.Company = 'Test12';
objLead.Status = 'Open';
objLead.LastName = 'TestLastName';
objLead.Potential_VIP_Customer__c = false;
objLead.Order_Count__c = 2;
objLead.Certification_Current_State__c = 'Approved';
insert objLead;
Database.Leadconvert lc = new Database.Leadconvert();
lc.setLeadId(objLead.id);
LeadStatus convertStatus = [select id,MasterLabel from LeadStatus where isConverted=true limit 1];
lc.setConvertedStatus(convertStatus.MasterLabel);
Database.LeadConvertResult lcr = Database.convertLead(lc);
System.assert(objLead.convertedAccountId != null);
}
}
If anyone could show me what I'm missing here it would be greatly appreciated.