Create an Apex class that uses Batch Apex to update Lead records.
Create an Apex class that implements the Database.Batchable interface to update all Lead records in the org with a specific LeadSource. Write unit tests that achieve 100% code coverage for the class.
- Create an Apex class called 'LeadProcessor' that uses the Database.Batchable interface.
- Use a QueryLocator in the start method to collect all Lead records in the org.
- The execute method must update all Lead records in the org with the LeadSource value of 'Dreamforce'.
- Create an Apex test class called 'LeadProcessorTest'.
- In the test class, insert 200 Lead records, execute the 'LeadProcessor' Batch class and test that all Lead records were updated correctly.
- The unit tests must cover all lines of code included in the LeadProcessor class, resulting in 100% code coverage.
- Run your test class at least once (via 'Run All' tests the Developer Console) before attempting to verify this challenge.
LeadProcessor Class:
global class LeadProcessor implements Database.Batchable<sObject> {
global Database.QueryLocator start(Database.BatchableContext bc){
return Database.getQueryLocator([SELECT LeadSource from Lead]);
}
global void execute(Database.BatchableContext bc, List<Lead> scope){
for(Lead Leads : scope){
Leads.LeadSource = 'Dreamforce';
}
update scope;
}
global void finish(Database.BatchableContext bc){
}
}
LeadProcessorTest Class:
@isTest
public class LeadProcessorTest {
static testMethod void leadProcessorTrailTest(){
List<Lead> leadList = new List<Lead>();
for(integer i = 0; i<200; i++){
Lead leads = new Lead();
leads.FirstName = 'Ankit';
leads.LastName = 'Avula'+i;
leads.Company = 'ARG';
leadList.add(leads);
}
insert leadList;
Test.startTest();
LeadProcessor L = new LeadProcessor();
Database.executeBatch(L);
Test.stopTest();
}
}