• Aqua Matrix
  • NEWBIE
  • 10 Points
  • Member since 2021

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 5
    Questions
  • 5
    Replies
Help me in getting 70 % test coverage for following code.
Apex Code:
global class BatchUpdateContactRole implements Database.Batchable<sObject>

{

    global Database.QueryLocator start(Database.BatchableContext BC)

    {

        String str = '001q000001Ob8yxAAB';

        String query = 'SELECT Id, RoleProcessed__c, Name FROM Account Where id =:str';

        return Database.getQueryLocator(query);

    }

 

    global void execute(Database.BatchableContext BC, List<Account> scope)

    {

     try{

            List<Contact> conToUpdate = new List<Contact>();

            List<Account> accToUpdate = new List<Account>();

            Set<string> allAccountIds = new set<string>();

            Map<string, list<Contact>> AccountIdContactMap = new Map<string, list<Contact>>();

         Map<Id,Account> AccountData = new Map<Id,Account>();

          Map<String, DominantRolePatternm__mdt> mapEd = DominantRolePatternm__mdt.getAll();

         

            for(Account a: scope){

                 allAccountIds.add(a.Id);

                 AccountData.put(a.id,a);

             }

             system.debug('All AccountIds'+allAccountIds);

             for(Contact con : [SELECT Id, rdcc__Role__c, FirstName, LastName, accountId from Contact where accountId IN :allAccountIds]){

                if(AccountIdContactMap.containsKey(con.accountId) && AccountIdContactMap.get(con.accountId)!=null){

                    AccountIdContactMap.get(con.accountId).add(con);

                }else{

                    AccountIdContactMap.put(con.accountId, new list<contact>{con});             

                }

             }

             system.debug('AccountIdContactMap'+AccountIdContactMap);

             for(string accId : AccountIdContactMap.keyset()){

                  boolean roleEmpty = false;

                  boolean allroleEmpty = false;

                  Integer countContact = 0;

                  Integer countNull = 0;

                  String roleToUpdate = '';

                  Map<string,Integer> roleMap = new Map<string,Integer>();

                  if(accId!=null){

                      system.debug('account Id'+accId);

                      for(Contact cont : AccountIdContactMap.get(accId)){

                          system.debug('Contact to be processed'+cont.Id);

                         

                              if(cont.rdcc__Role__c == null){

                                  //atleast one empty role is found within contacts of Account

                                  roleEmpty = true;

                                  ++countNull;

                                  system.debug('empty role found');

                                  //break;

                              }   

                          

                         // system.debug('sizeee--'+AccountIdContactMap.get(accId).size()+'--- count--'+countNull);

                          if(countNull == AccountIdContactMap.get(accId).size())

                          {

                            allroleEmpty = true;                          

                          }

                         

                      }

             system.debug('sizeee--'+AccountIdContactMap.get(accId).size()+'--- count--'+countNull);

 

                      if(roleEmpty && allroleEmpty)

                      {

                         Account AccData = AccountData.get(accId);

                            for(String nameEmailDomain : mapEd.keySet()){

                            System.debug('----->'+mapEd.get(nameEmailDomain).Name_Combination__c);

                            List<String> lsttest= mapEd.get(nameEmailDomain).Name_Combination__c.split(';');

                            for(String roleStr : lsttest)

                            {

                              system.debug('inside contains111--'+roleStr);

                              if(AccData.Name.contains(roleStr))

                              {

                                system.debug('inside contains222-'+roleStr);

                                for(Contact cont : AccountIdContactMap.get(accId)){

                                  cont.MatchingRole__c = mapEd.get(nameEmailDomain).RoleMatched__c;

                                  conToUpdate.add(cont);

                                }

                              }

                            }

                           }

 

                      }

                    

                       else if(roleEmpty && !allroleEmpty)

                      {

                        system.debug('Inside If Condition');

                        Integer prevValue = 0;

                        Integer num = 1;

                          for(Contact cont : AccountIdContactMap.get(accId)){

                              system.debug('Contact to be processed'+cont.Id);

                              if(cont.rdcc__Role__c != null){

                                system.debug('roleMap'+roleMap);

                                if(roleMap.containsKey(cont.rdcc__Role__c)){

                                    num = roleMap.get(cont.rdcc__Role__c);

                                    roleMap.put(cont.rdcc__Role__c,num+1);

                               }else{

                                    roleMap.put(cont.rdcc__Role__c,num);

                                }

                            }

                         }

                          system.debug('Role Map'+roleMap);

                          List<Integer> mapValues =  new List<Integer>();

                          //Check the maximum count to find Dominant

                          Integer maxValue = 0;

                          Integer secondHighestValue = 0;

                         if(roleMap.size() > 0){

                              mapValues = roleMap.values();

                              mapValues.sort();

                              maxValue = mapvalues[mapvalues.size()-1];

                              if(mapValues.size()>1){

                                  secondHighestValue = mapvalues[mapValues.size()-2];

                              }

                              system.debug('max Values'+maxValue);

                              system.debug('second highest value'+secondHighestValue);

                              if(maxValue != secondHighestValue){ //dominant role not clashing

                                  for(String s : roleMap.keySet()){

                                      Integer pattern_value = roleMap.get(s);

                                      if((pattern_value == maxValue) && (maxValue > 0)){

                                          system.debug(' Dominant Role for contacts with accountId'+accId+' is ' + s + ' with value' + pattern_value);

                                          roleToUpdate = s;

                                      }

                                  }

                              }

                             

                              else if(maxValue == secondHighestValue){ //dominant role not clashing

                                  for(String s : roleMap.keySet()){

                                      system.debug('s'+s);

                                      Integer pattern_value = roleMap.get(s);

                                      if((pattern_value == maxValue) && (maxValue > 0) ||(pattern_value == secondHighestValue) && (secondHighestValue > 0) ){

                                          system.debug(' Dominant Role for contacts with accountId'+accId+' is ' + s + ' with value' + pattern_value);

                                          for (String St : System.Label.Significant_Role.split(','))

                                          {

                                              if(st.equalsIgnoreCase(s))

                                                roleToUpdate = s; 

                                          }

                                         

                                      }

                                  }

                              }

                          }

                          system.debug('AccountIdContactMap'+AccountIdContactMap);

                          //Updating Role in contact with dominant role

                           for(Contact cont : AccountIdContactMap.get(accId)){

                               if(cont.rdcc__Role__c == null){

                                    system.debug('roleToUpdate'+roleToUpdate);

                                     if(roleToUpdate != ''){

                                         cont.MatchingRole__c = roleToUpdate;

                                         cont.rdcc__Role__c = roleToUpdate;

                                     } 

                                }

                              conToUpdate.add(cont);

                           }

                      }

                  }

                   //acc.RoleProcessed__c = true;   

                 Account acc =  new Account();

                 acc.Id = accId;

                 acc.RoleProcessed__c = True;

                 accToUpdate.add(acc);

             }

             system.debug('Con To Update'+conToUpdate);

             if(conToUpdate.size()>0 && conToUpdate!=null){

                 update conToUpdate;

             }

             system.debug('Acc To Update'+accToUpdate);

             if(accToUpdate.size()>0 && accToUpdate!=null){

                     update accToUpdate;

             }

        }catch(exception e){

                system.debug('e--'+e);

        }     

     }

   

    global void finish(Database.BatchableContext BC)

    {

    }

}
Test Class:
@isTest

private class BatchUpdateContactRoleTest {

    @testSetup

    static void setup() {

        List<Account> accounts = new List<Account>();

        List<Contact> contacts = new List<Contact>();

        // insert 10 accounts and add test fields as per your need.

       Account acc=new Account(name='Account ',

                billingcity='Chennai',billingcountry='India');

 

       insert acc;

        // find the account just inserted. add contact for each & test data required.

        Contact con1=new Contact(firstname='first',

                lastname='last',rdcc__Role__c='Test0', accountId=acc.id);

 

       insert con1;

        Contact con2=new Contact(firstname='first',

                lastname='last',rdcc__Role__c='Test1', accountId=acc.id);

        insert con2;

        Contact con3=new Contact(firstname='first',

                lastname='last',rdcc__Role__c='', accountId=acc.id);

        insert con3;

       

    }

       static testmethod void testMethod2(){

           Test.startTest();

        BatchUpdateContactRole tb = new BatchUpdateContactRole();

        Id batchId = Database.executeBatch(tb,50);

           Test.stopTest();

         }

}


 
Hi,
I had created data in the custom metadata for city and zipcode...
I want to write the apex trigger to autopopulate the cityname If I select the zipcode which s present in the custom metadata...
Could you please help me to write the trigger for the above scenario...
I had written the apex code to fetch the custom metadata
And now I want to write the trigger to autopopulate the city name if we choose the zipcode.
trigger Autopopulate on Contact (after insert) {
// When a new account is created, fill in the city and state based on zip code

           if (trigger.isAfter && trigger.isInsert) {

                      zipcodemetda.fetchAllMetadata();
               

           }

}


 
Hi,
I have code coverage of 44% for below apex batch class,help me in covering code coverage of 75% for below Apex class.
Apex code:
Global class BatchValidateEmailDominantPattern Implements Database.Batchable<sObject>,Database.AllowsCallouts, Database.stateful{

    Public boolean noCredit = false;

    Public string key;

    List<EmailValidationApiKey__mdt> apiKeys = [SELECT APIKey__c from EmailValidationApiKey__mdt];

    Global Database.QueryLocator Start(Database.BatchableContext BC){

         String query = '';

         Set<String> accIds = new Set<String>();

         //accIds.add('001q000001OZhiPAAT');

         //accIds.add('001q000001Ll1puAAB');

         //accIds.add('001q000001OJZxpAAH');

         //accIds.add('001q000001Ll1puAAB');

        try{

            system.debug('Validate Email Pattern start!');

            //Callout

            HttpRequest req = new HttpRequest();

            HttpResponse res = new HttpResponse();

            Http http = new Http();

                      for(EmailValidationApiKey__mdt record: apiKeys){

               key = record.APIKey__c;

            }

            //Checking credits

            String apiURL =  'https://api.zerobounce.net/v2/getcredits?api_key='+key;

            req.setEndpoint(apiURL);

            req.setHeader('Content-Type', 'application/json');

            req.setMethod('GET');

            String defaultAcc = 'Test Email';

            if (!Test.isRunningTest()) {

                  res = http.send(req);

                  system.debug('--res.getBody--'+res.getBody());

                  if(res.getStatusCode() == 200){

                        system.debug('success status');

                      Map<String, Object> docData = (Map<String, Object>)JSON.deserializeUntyped(res.getBody());

                      string credits =(string)docData.get('Credits');

                      Integer cred = Integer.valueOf(credits);

                      if(cred >= 1){

                          system.debug('Credits'+cred);

                          query = 'SELECT Id, Name FROM Account where DominantEmailPattern__c != null and EmailBatchProcessed__c = true AND ID IN :accIds';

                      }else{

                          query = 'Select Id,Name From Account where Name =: defaultAcc';

                          noCredit = true;

                      }

                  }

            }else{

                query='Select Id,Name From Account where Name =: defaultAcc';

            }

                      }catch (Exception e) {        

            System.debug('Error:' + e.getMessage() + 'LN:' + e.getLineNumber() );

        }

        return Database.getQueryLocator(query);

    }

   

    Global void execute(Database.BatchableContext BC, List<Account> scope) {

         system.debug('scope'+scope);

            String endpoint;

         Map<Id,String> DominantEmailContactMap = new Map<Id,String>();

                      List<String> ListemailList = new List<String>();

         List<List<String>> listWrapper =  new List<List<String>>();

         Set<string> allAccountIds = new set<string>();

         Map<string, list<Contact>> AccountIdContactMap = new Map<string, list<Contact>>();

         List<Contact> conToUpdate = new List<Contact>();

         List<Contact> allConToUpdate = new List<Contact>();

         Set<string> conIds = new set<string>();

         Set<string> catchAllConIds = new set<string>();

         try {

             if((scope.size() > 0)&& (scope!=null)){

                     system.debug('scope size greater than 0');

                     for(Account a: scope){

                         allAccountIds.add(a.Id);

                     }

                     system.debug('allAccountIds'+allAccountIds);

                     for(Contact con : [SELECT Id, Email, FirstName, LastName, MatchingEmail1__c, MatchingEmail2__c, accountId from Contact where accountId IN :allAccountIds and EmailValidateFlag__c = False]){

                         if(AccountIdContactMap.containsKey(con.accountId) && AccountIdContactMap.get(con.accountId)!=null){

                             AccountIdContactMap.get(con.accountId).add(con);

                         }else{

                             AccountIdContactMap.put(con.accountId, new list<contact>{con});             

                         }

                     }

                     system.debug('AccountIdcontactmap'+AccountIdContactMap);

                     for(string accId : AccountIdContactMap.keyset()){

                         system.debug('Inside loop');

                         if(accId!=null){

                             for(Contact cont : AccountIdContactMap.get(accId)){

                                 if(cont.MatchingEmail1__c != null)

                                 {  

                                     if( DominantEmailContactMap.containsKey(cont.Id))

                                     {

                                         String mapEmail = DominantEmailContactMap.get(cont.Id);

                                         mapEmail = cont.MatchingEmail1__c;

                                         DominantEmailContactMap.put(cont.Id,mapEmail);

                                     }else{                                   

                                         DominantEmailContactMap.put(cont.Id, cont.MatchingEmail1__c);

                                     }

                                 }

                             }

                         }

                     }         

                     system.debug('DominantEmailContactMap'+DominantEmailContactMap);

                     if(DominantEmailContactMap!=null){

                        

                         List<String> FinalEmailList = new List<String>();

                         ListemailList = DominantEmailContactMap.values();

                         for(String emailString : ListemailList )

                         {

                            FinalEmailList.add(emailString);

                         }

                         for(Integer i = 0 ; i < (FinalEmailList.size()/3)+1 ; i++){

                             List<String> lstTemp = new List<String>();

                             for(Integer j=(i*3);(j<(i*3)+3) && j<FinalEmailList.size() ; j++){

                                 lstTemp.add(FinalEmailList.get(j));

                             }

                            if(lstTemp!=null && lstTemp.size()>0){

                                  listWrapper.add(lstTemp);

                             }

                         }

                     }

                     String firstPart = '{\"api_key\":\"'+key+'\",';

                     String reqPart = '\"email_batch\":[';

                       system.debug('listwrapper'+listWrapper);

                     for(List<String> emailTempList: listWrapper){

                         String emailRequest = '';

                           String matchingEmail = '';

                         if(emailTempList.size() == 1){

                             for(Integer i=0; i<emailTempList.size(); i++){

                                 matchingEmail = emailTempList[i];

                                 if(matchingEmail != ''){

                                    emailRequest += '{\"email_address\": '+'\"'+matchingEmail+'\"'+'}';

                                 }

                             }

                         }

                         else if(emailTempList.size()> 1){

                             for(Integer i=0; i<emailTempList.size(); i++){

                                 matchingEmail = emailTempList[i];

                                  if(matchingEmail != ''){

                                    emailRequest += '{\"email_address\": '+'\"'+matchingEmail+'\"'+'},';

                                  }

                               }

                         }

                         String lastPart = ']}';

                          if (emailRequest.right(1) == ',')

                            emailRequest = emailRequest.removeEnd(',');

                         String request = firstPart + reqPart + emailRequest +lastPart;

                         system.debug('Request'+request);

                         if(request != null)

                         {

                             system.debug('Inside if');

                             HttpRequest req1 = new HttpRequest();

                             HttpResponse res1 = new HttpResponse();

                             Http http1 = new Http();

                             req1.setHeader('Content-Type',  'application/json');

                             req1.setEndpoint('https://bulkapi.zerobounce.net/v2/validatebatch');

                             req1.setMethod('POST');

                             req1.setBody(request);

                              if (!Test.isRunningTest()) {     

                                  res1 = http1.send(req1);

                                  System.debug('Response Validating email' + res1.getBody());

                                  if(res1.getStatusCode() == 200){

                                     EmailValidationBatchJsonParser emailParserResponse = new EmailValidationBatchJsonParser();

                                     emailParserResponse = (EmailValidationBatchJsonParser) JSON.deserialize(res1.getBody(), EmailValidationBatchJsonParser.class);

                                     List<EmailValidationBatchJsonParser.email_batch> etList = emailParserResponse.email_batch;

                                      for(EmailValidationBatchJsonParser.email_batch etObj : etList){

                                          system.debug('etObj.status'+etObj.status);

                                          if(etObj.status == 'Valid'){

                                              system.debug('Email Status Valid');

                                              for(Id conId : DominantEmailContactMap.keySet()){

                                                  if(DominantEmailContactMap.get(conId) == etObj.address){

                                                       conIds.add(conId);

                                                  }

                                              }

                                          }else if(etObj.status == 'catch-all'){

                                              for(Id conId : DominantEmailContactMap.keySet()){

                                                  if(DominantEmailContactMap.get(conId) == etObj.address){

                                                       catchAllConIds.add(conId);

                                                  }

                                              }

                                          }else{

                                              system.debug('Not Valid status');

                                          }

                                      }

                                  }else{

                                      system.debug('Response Failure!!');

                                  }

                              }else{

                                  system.debug('status code: error');

                              }             

                         }         

                    }

                      //Update Contacts Email

                      system.debug('conIds'+conIds);

                     if(conIds!=null){

                         system.debug('Inside');

                         for(Contact con : [SELECT Id, Email, MatchingEmail1__c from Contact where Id IN:conIds]){

                             if(con.MatchingEmail1__c!=null){

                                 system.debug('con'+con.Id);

                                 con.ValidEmail__c = con.MatchingEmail1__c;

                                 system.debug('con updated email'+con.ValidEmail__c);

                             }

                             conToUpdate.add(con);

                         }

                     }

                     if(catchAllConIds!=null){

                         for(Contact cont: [SELECT Id, catchAllEmail__c from Contact where Id IN:catchAllConIds]){

                              cont.catchAllEmail__c = True;

                              conToUpdate.add(cont);

                         }   

                      }

                       for(Id conId : DominantEmailContactMap.keySet()){

                                  Contact cn =  new Contact();

                         cn.Id = conId;

                         cn.EmailValidateFlag__c = True;

                         allConToUpdate.add(cn);

                     }

                     if(conToUpdate!=null && conToUpdate.size()>0){

                        update conToUpdate;

                     }

                      if(allConToUpdate!=null && allConToUpdate.size()>0){

                        update allConToUpdate;

                     }

                      }

             }catch (Exception e) {        

                 System.debug('Error:' + e.getMessage() + 'LN:' + e.getLineNumber() );

             }

        }

        Global void finish(Database.BatchableContext BC) {

            Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();

            String[] toAddresses = new String[] {'shweta.lal@nagarro.com','aditya.pandey@nagarro.com'};

            mail.setToAddresses(toAddresses);

            if(nocredit){

               mail.setSubject('No Credits Found!');

                mail.setPlainTextBody('Credits are not available on this API key');

                Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });

            }else{

                AsyncApexJob a = [Select Id, Status,ExtendedStatus,NumberOfErrors,JobItemsProcessed,TotalJobItems, CreatedBy.Email from AsyncApexJob where Id =: BC.getJobId()];

                mail.setSubject('Dominant Email Pattern Batch ' + a.Status);

                mail.setPlainTextBody('records processed ' + a.TotalJobItems + 'with '+ a.NumberOfErrors + ' failures.');

                Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });

            }

        }

}
test class:
@isTest(SeeAllData=true)

public class TestBatchValidate {

    @istest

    public static void testmet(){

        List<Contact> clist = new List<Contact>();

        List<Account> accounts = new List<Account>();

        Account acc=new Account(name='Account ',SecDomEmailPattern__c  = 'FinitialLastName@va.gov',

                billingcity='Chennai',billingcountry='India',EmailBatchProcessed__c = true,DominantEmailPattern__c='FirstName.LastName@aec.com',RoleProcessed__c=True);

            accounts.add(acc);

       

        contact c = new contact(LastName='sample name',MatchingEmail1__c='samplename@gmail.com',Accountid=acc.Id);

        clist.add(c);

        contact c1 = new contact(LastName='sample' ,MatchingEmail1__c='sample@gah.com',FirstName='sample',Accountid=acc.Id);

        clist.add(c1);

        contact c2 = new contact(LastName='sample',MatchingEmail1__c='',Accountid=acc.Id);

        clist.add(c2);

        contact c3 = new contact(LastName='sample' ,MatchingEmail1__c='sample5@gmail.com',Accountid=acc.Id);

        clist.add(c3);

        contact c4 = new contact(LastName='sample',MatchingEmail1__c='sample6@gmail.com' ,Accountid=acc.Id);

        clist.add(c4);

        contact c5 = new contact(LastName='sample' ,MatchingEmail1__c='sample7@gmail.com',Accountid=acc.Id);

        clist.add(c5);

       

        insert(clist);

 

 

    }

   

        @istest

    public static void testmet2(){

         Test.startTest();

 

            BatchValidateEmailDominantPattern obj = new BatchValidateEmailDominantPattern();

            DataBase.executeBatch(obj);

            

        Test.stopTest();

    }

 

}


 
Hi,
I want to write a test class which covers code coverage of 75%  for below Apex Batch class
Global class BatchValidateSecondDominantEmail Implements Database.Batchable<sObject>,Database.AllowsCallouts,Database.stateful{

    Public boolean noCredit = false;

    Public string key;

    List<EmailValidationApiKey__mdt> apiKeys = [SELECT APIKey__c from EmailValidationApiKey__mdt];

 

    Global Database.QueryLocator Start(Database.BatchableContext BC){  

                      system.debug('Start!!!');

            String query = '';

        try{

            //Callout

            HttpRequest req = new HttpRequest();

            HttpResponse res = new HttpResponse();

            Http http = new Http();

            for(EmailValidationApiKey__mdt record: apiKeys){

               key = record.APIKey__c;

           }

            //Checking credits

            String apiURL =  'https://api.zerobounce.net/v2/getcredits?api_key='+key;

            req.setEndpoint(apiURL);

            req.setHeader('Content-Type', 'application/json');

            req.setMethod('GET');

            if (!Test.isRunningTest()) {

                  res = http.send(req);

                  system.debug('--res.getBody--'+res.getBody());

                  if(res.getStatusCode() == 200){

                      Map<String, Object> docData = (Map<String, Object>)JSON.deserializeUntyped(res.getBody());

                      system.debug('===docData==='+docData);

                      string credits =(string)docData.get('Credits');

                      Integer cred = Integer.valueOf(credits);

                     system.debug('credits'+cred);

                      if(cred >= 1){

                          system.debug('Credits'+cred);

                          query = 'SELECT Id, Name FROM Account where EmailBatchProcessed__c = true';

                      }else{

                          noCredit = true;

                      }

                  }

            }

           /* String accId = '001q000001Ll27sAAB';

            String query = 'SELECT Id, Name FROM Account where EmailBatchProcessed__c = true AND Id =: accId';

           */

           }catch (Exception e) {        

            System.debug('Error:' + e.getMessage() + 'LN:' + e.getLineNumber() );

        }

        system.debug('query fired');

        return Database.getQueryLocator(query);

    }

   

    Global void execute(Database.BatchableContext BC, List<Account> scope) {

         system.debug('inside execute');

         system.debug('scope'+scope);

            String endpoint;

         Map<Id,String> SecondDominantEmailContactMap = new Map<Id,String>();

                      List<String> ListemailList = new List<String>();

         List<List<String>> listWrapper =  new List<List<String>>();

         Set<string> allAccountIds = new set<string>();

         Map<string, list<Contact>> AccountIdContactMap = new Map<string, list<Contact>>();

         List<Contact> conToUpdate = new List<Contact>();

         List<Contact> allConToUpdate = new List<Contact>();

         Set<string> conIds = new set<string>();

         Set<string> catchAllConIds = new set<string>();

         try {

             if((scope.size() > 0)&& (scope!=null)){

                     for(Account a: scope){

                         allAccountIds.add(a.Id);

                     }

                     for(Contact con : [SELECT Id, Email, FirstName, LastName, MatchingEmail2__c, accountId from Contact where accountId IN :allAccountIds AND MatchingEmail2__c!=null AND MatchingEmail1__c!=null AND EmailValidateFlag__c = True AND EmailValidateFlag2__c = False AND Email=null]){

                         if(AccountIdContactMap.containsKey(con.accountId) && AccountIdContactMap.get(con.accountId)!=null){

                             AccountIdContactMap.get(con.accountId).add(con);

                         }else{

                             AccountIdContactMap.put(con.accountId, new list<contact>{con});             

                         }

                     }

                     for(string accId : AccountIdContactMap.keyset()){

                         if(accId!=null){

                             for(Contact cont : AccountIdContactMap.get(accId)){

                                 if(cont.MatchingEmail2__c != null)

                                 {  

                                     if( SecondDominantEmailContactMap.containsKey(cont.Id))

                                     {

                                         String mapEmail = SecondDominantEmailContactMap.get(cont.Id);

                                         mapEmail = cont.MatchingEmail2__c;

                                         SecondDominantEmailContactMap.put(cont.Id,mapEmail);

                                     }else{                                   

                                         SecondDominantEmailContactMap.put(cont.Id, cont.MatchingEmail2__c);

                                     }

                                 }

                             }

                         }

                     }         

                     if(SecondDominantEmailContactMap!=null){

                         List<String> FinalEmailList = new List<String>();

                         ListemailList = SecondDominantEmailContactMap.values();

                         for(String emailString : ListemailList )

                         {

                            FinalEmailList.add(emailString);

                         }

                         system.debug('FinalEmailList'+FinalEmailList);

                         for(Integer i = 0 ; i < (FinalEmailList.size()/3)+1 ; i++){

                             List<String> lstTemp = new List<String>();

                             for(Integer j=(i*3);(j<(i*3)+3) && j<FinalEmailList.size() ; j++){

                                 system.debug('value of counter'+j);

                                 lstTemp.add(FinalEmailList.get(j));

                                 system.debug('lstTemp'+lstTemp);

                             }

                             if(lstTemp!=null && lstTemp.size()>0){

                                  listWrapper.add(lstTemp);

                             }

                         }

                     }

                     system.debug('listWrapper'+listWrapper);

                     String firstPart = '{\"api_key\":\"'+key+'\",';

                           String reqPart = '\"email_batch\":[';

                     for(List<String> emailTempList: listWrapper){

                         String emailRequest = '';

                           String matchingEmail = '';

                         if(emailTempList.size() == 1){

                             for(Integer i=0; i<emailTempList.size(); i++){

                                 matchingEmail = emailTempList[i];

                                 if(matchingEmail != ''){

                                    emailRequest += '{\"email_address\": '+'\"'+matchingEmail+'\"'+'}';

                                 }

                             }

                         }

                         else if(emailTempList.size()> 1){

                             for(Integer i=0; i<emailTempList.size(); i++){

                                 matchingEmail = emailTempList[i];

                                  if(matchingEmail != ''){

                                    emailRequest += '{\"email_address\": '+'\"'+matchingEmail+'\"'+'},';

                                  }

                               }

                         }

                         String lastPart = ']}';

                          if (emailRequest.right(1) == ',')

                            emailRequest = emailRequest.removeEnd(',');

                         String request = firstPart + reqPart + emailRequest +lastPart;

                         if(request != null)

                         {

                             HttpRequest req1 = new HttpRequest();

                             HttpResponse res1 = new HttpResponse();

                             Http http1 = new Http();

                             req1.setHeader('Content-Type',  'application/json');

                             req1.setEndpoint('https://bulkapi.zerobounce.net/v2/validatebatch');

                             req1.setMethod('POST');

                             req1.setBody(request);

                              if (!Test.isRunningTest()) {     

                                  res1 = http1.send(req1);

                                  System.debug('Response Validating email' + res1.getBody());

                                  if(res1.getStatusCode() == 200){

                                     system.debug('success');

                                     EmailValidationBatchJsonParser emailParserResponse = new EmailValidationBatchJsonParser();

                                     emailParserResponse = (EmailValidationBatchJsonParser) JSON.deserialize(res1.getBody(), EmailValidationBatchJsonParser.class);

                                     List<EmailValidationBatchJsonParser.email_batch> etList = emailParserResponse.email_batch;

                                     system.debug('list'+etList);  

                                      for(EmailValidationBatchJsonParser.email_batch etObj : etList){

                                          if(etObj.status == 'Valid'){

                                              system.debug('Status Valid!!');

                                              for(Id conId : SecondDominantEmailContactMap.keySet()){

                                                  if(SecondDominantEmailContactMap.get(conId) == etObj.address){

                                                      system.debug('Email status valid for conId'+conId);

                                                       conIds.add(conId);

                                                  }

                                              }

                                          }else if(etObj.status == 'catch-all'){

                                              system.debug('Catch all status');

                                              for(Id conId : SecondDominantEmailContactMap.keySet()){

                                                  if(SecondDominantEmailContactMap.get(conId) == etObj.address){

                                                       catchAllConIds.add(conId);

                                                  }

                                              }

                                          }else{

                                              system.debug('Not Valid status');

                                          }

                                      }

                                  }

                              }else{

                                  system.debug('status code: error');

                              }             

                         }         

                    }

                      //Update Contacts Email

                     if(conIds!=null){

                         for(Contact con : [SELECT Id, Email, MatchingEmail2__c from Contact where Id IN:conIds]){

                             if(con.MatchingEmail2__c!=null){

                                 con.Email = con.MatchingEmail2__c;

                             }

                             conToUpdate.add(con);

                         }

                     }

                       if(catchAllConIds!=null){

                         for(Contact cont: [SELECT Id, catchAllEmail__c from Contact where Id IN:catchAllConIds]){

                              cont.catchAllEmail__c = True;

                              conToUpdate.add(cont);

                         }   

                      }

                       for(Id conId : SecondDominantEmailContactMap.keySet()){

                                  Contact cn =  new Contact();

                         cn.Id = conId;

                         cn.EmailValidateFlag2__c = True;

                         allConToUpdate.add(cn);

                     }

                     if(conToUpdate!=null && conToUpdate.size()>0){

                        update conToUpdate;

                     }

                      if(allConToUpdate!=null && allConToUpdate.size()>0){

                        update allConToUpdate;

                     }

                      }

             }catch (Exception e) {        

                 System.debug('Error:' + e.getMessage() + 'LN:' + e.getLineNumber() );          

             }

        }

        Global void finish(Database.BatchableContext BC) {

            system.debug('Inside finish'+noCredit);

            Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();

            String[] toAddresses = new String[] {'shweta.lal@nagarro.com'};

            mail.setToAddresses(toAddresses);

            if(nocredit){

               mail.setSubject('No Credits Found!');

                mail.setPlainTextBody('Credits are not available on this API key');

                Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });

            }else{

                AsyncApexJob a = [Select Id, Status,ExtendedStatus,NumberOfErrors,JobItemsProcessed,TotalJobItems, CreatedBy.Email from AsyncApexJob where Id =: BC.getJobId()];

                mail.setSubject('Dominant Email Pattern Batch ' + a.Status);

                mail.setPlainTextBody('records processed ' + a.TotalJobItems + 'with '+ a.NumberOfErrors + ' failures.');

                Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });

            }

        }

}

 
hii,
i want to write a test class for below apex batch class which covers 75% code coverage.
Apex code:
global class BatchUpdateContactEmail implements Database.Batchable<sObject>

{

           global Database.QueryLocator start(Database.BatchableContext BC)

           {

         String accId = '001q000001Ll27sAAB';

            String query = 'SELECT Id,EmailBatchProcessed__c, Name,(SELECT Id, Email, FirstName, LastName FROM Contacts) FROM Account Where Id =: accId';

         return Database.getQueryLocator(query);

    }

 

    global void execute(Database.BatchableContext BC, List<Account> scope)

    {

        try{

            system.debug('scope'+scope);

            List<Contact> conToUpdate = new List<Contact>();

            List<Account> accToUpdate = new List<Account>();

          List<String> patternList  =  new List <String>();

            List<String> genericPattern = new List<String>();

            List<EmailPattern__mdt> listEmailPattern = [SELECT Id, Pattern__c from EmailPattern__mdt];

            List<GenericEmailPattern__mdt> genericPatternList = [SELECT Id, GenericPattern__c from GenericEmailPattern__mdt];

           

            for(EmailPattern__mdt record: listEmailPattern){

                patternList.add(record.Pattern__c);

            }

         

           for(GenericEmailPattern__mdt record: genericPatternList){

                genericPattern.add(record.GenericPattern__c);

            }

           

            for(Account acc : scope){

                    Map<string,Integer> counterMap = new Map<string,Integer>();

                    Map<Id,string> emailConMap = new Map<Id,string>();

                    Map<Id,string> accountDomainMap = new Map<Id,string>();

                    Map<string,Integer> emailDomainMap = new Map<string,Integer>();

                    boolean emailEmpty = false;

                    Integer countContact = 0;

                    String dominantPattern = '';

                    String secondDominantPattern = '';

                      String maxDomain = '';

                   

                   for(string s1:patternList){

                       counterMap.put(s1,0);

                    }

                    if(acc.Id!=null && acc.EmailBatchProcessed__c!=true){

                        countContact = acc.contacts.size();

                        if(countContact > 1){

                              for(Contact cont : acc.contacts)

                                {

                                    if(emailEmpty == false){

                                        if(cont.Email == null){

                                            system.debug('one empty email found');

                                            //atleast one empty email is found within contacts of Account

                                            emailEmpty = true;

                                            break;

                                        }                                     

                                    }

                                }

                                            }

                       

                            //if atleast one blank email found

                            if(emailEmpty == true){

                                Integer domainCount = 0;

                                boolean validDomain = false;

                                String domainName = '';

                                Map<string,integer> emailMap = new Map<string,integer>();

                                boolean noMatch = false;

                                boolean patternFound = false;

                                for(Contact cont : acc.contacts){

                                    system.debug('contact to be processed'+cont.Id);

                                    Map<string,string> conMap = new Map<string,string>();

                                    String temps = '';

                                    String emailDomain = '';

                                    Integer num = 0;

                                   

                                    if(cont.Email !=null && cont.Email!=''){

                                        temps = cont.Email.split('@')[0];

                                        emailDomain = cont.Email.split('@')[1];

                                        Integer prevValue = 0;

                                        boolean validEmail = true;

                                        boolean genericPatternFound = false;

                                        system.debug('genericPattern List'+genericPattern);

                                        for(String s: genericPattern){

                                            if(cont.Email.contains(s)){

                                                genericPatternFound=true;

                                                break;

                                            }

                                        }

                                        //Finding Maximum repeated Domain

                                        if(!genericPatternFound){

                                            system.debug('Not generic pattern');

                                            if(emailDomain != ''){

                                                prevValue = emailDomainMap.get(emailDomain);

                                                if(prevValue != null){

                                                    num = num + 1;

                                                }

                                                emailDomainMap.put(emailDomain,num);

                                            }

                                            string firstName = '';

                                            string lastName = '';

                                           

                                            if(cont.FirstName != ''){

                                                firstName = cont.FirstName.toLowercase();

                                            }

                                            if(cont.LastName != ''){

                                                lastName = cont.LastName.toLowercase();

                                                String middleName = '';

                                                 if (lastName.containsWhitespace()){

                                                    List<String> names = lastName.split('');

                                                    for(String name :names){

                                                       middleName = names.get(0);

                                                     }

                                                }

                                            }

                                            system.debug('firstname'+firstName);

                                            system.debug('lastname'+lastName);

                                            conMap.put(firstName+'.'+lastName,'FirstName.LastName');

                                            conMap.put(firstName,'FirstName');

                                            conMap.put(firstName+lastName,'FirstNameLastName');

                                            conMap.put(firstName.substring(0,1)+lastName,'FinitialLastName');

                                            conMap.put(firstName+lastName.substring(0,1),'FirstNameLastinitial');

                                            conMap.put(firstName.substring(0,1)+'.'+lastName,'Finitial.LastName');

                                            conMap.put(firstName+'_'+lastName,'FirstName_LastName');

                                            conMap.put(firstName+'-'+lastName,'FirstName-LastName');

                                            conMap.put(firstName.substring(0,1)+'_'+lastName,'Finitial_LastName');

                                           

                                            //replace it with temps

                                            system.debug('temps'+temps);

                                            string pattern = conMap.get(temps);

                                            system.debug('conMap'+conMap);

                                            system.debug('Pattern'+pattern);

                                            if(pattern != null)

                                            {

                                                if(patternFound!= true){

                                                     patternFound = true;

                                                }

                                                integer count = counterMap.get(pattern);

                                                count =  count + 1;

                                                counterMap.put(pattern,count);

                                            }else{

                                                noMatch = true;

                                            }

                                        }

                                    }

                                }

                                //Check the maximum count to find Dominant pattern in an Account

                                if(patternFound){

                                    Integer maxValue = 0;

                                    Integer secondHighestValue = 0;

                                    List<Integer> mapValues =  new List<Integer>();

                                    List<String> patternKeyList = new List<String>();

                                    if(counterMap != null){

                                        mapValues = counterMap.values();

                                        mapValues.sort();

                                        maxValue = mapvalues[mapvalues.size()-1];

                                        secondHighestValue = mapvalues[mapValues.size()-2];

                                        string secondPartEmail = '';

                                        boolean dominantPatternFound = false;

                                        for(String s : counterMap.keySet())

                                        {

                                            Integer pattern_value = counterMap.get(s);

                                            if((pattern_value == maxValue) && (maxValue > 0))

                                            {

                                                if(!dominantPatternFound){

                                                    system.debug(' Dominant Pattern Email for contacts with accountId'+acc.Id+' is ' + s + ' with value' + pattern_value);

                                                    dominantPattern = s;

                                                    dominantPatternFound = true;

                                                }

                                            }

                                            if((pattern_value == secondHighestValue) && (secondHighestValue > 0)){

                                                system.debug(' Second Dominant Pattern Email for contacts with accountId'+acc.Id+' is ' + s + ' with value' + pattern_value);

                                                secondDominantPattern = s;

                                            }

                                        }

                                    }

                                  //Checking Max Domain Name

                                    Integer highestNum = 0;

                                    List<Integer> domainList = new List<Integer>();

                                    if(emailDomainMap != null){

                                        domainList = emailDomainMap.values();

                                        domainList.sort();

                                        if(domainList.size()>0){

                                             highestNum = domainList[domainList.size()-1];

                                         }

                                      

                                    }

                                    for(String domain : emailDomainMap.keySet()){

                                        Integer num = emailDomainMap.get(domain);

                                        if(num == highestNum){

                                            maxDomain = domain;

                                            system.debug('Max Domain for contacts with accountId'+acc.Id+' is ' + maxDomain);

                                        }

                                    }

                                   

                                    //Updating fields in contact with pattern formed email    

                                    for(Contact cont : acc.contacts){

                                      //  cont.MatchingEmail1__c = '';

                                      //  cont.MatchingEmail2__c = '';

                                        string patternString = '';

                                        string emailDomain = '';

                                        List<String> domPatternList = new List<String>();

                                       

                                        domPatternList.add(dominantPattern);

                                        domPatternList.add(secondDominantPattern);

                                      

                                        if(cont.Email == null){

                                           cont.MatchingEmail1__c = '';

                                           cont.MatchingEmail2__c = '';

                                            string firstName = '';

                                            string lastName = '';

                                            string middleName = '';

                                           if(cont.FirstName != null && cont.FirstName != ''){

                                                firstName = cont.FirstName.toLowercase();

                                            }

                                            if(cont.LastName != null && cont.LastName != ''){

                                                lastName = cont.LastName.toLowercase();

                                                List<String> names = new List<string>();

                                                if (lastName.containsWhitespace()){

                                                    names = lastName.split('');

                                                }else if(lastName.contains('.')){

                                                    names = lastName.split('.');

                                                }

                                                for(String name :names){

                                                       middleName = names.get(0);

                                                     }

                                            }

                                            if(middleName != ''){

                                                lastName = middleName;

                                            }

                                          for(string s2:domPatternList){

                                                    switch on s2{

                                                    when 'FirstName.LastName' {

                                                        patternString = firstName+'.'+lastName;

                                                    }when 'FirstName' {

                                                        patternString = firstName;

                                                    }when 'FirstNameLastName' {

                                                        patternString = firstName+lastName;

                                                    }when 'FinitialLastName' {

                                                        patternString = firstName.substring(0,1)+lastName;       

                                                    }when 'FirstNameLastinitial' {

                                                        patternString = firstName+lastName.substring(0,1);       

                                                    }when 'Finitial.LastName' {

                                                        patternString = firstName.substring(0,1)+'.'+lastName;       

                                                    }when 'FirstName_LastName' {

                                                        patternString = firstName+'_'+lastName;       

                                                    }when 'FirstName-LastName' {

                                                        patternString = firstName+'-'+lastName;       

                                                    }when 'Finitial_LastName' {

                                                        patternString = firstName.substring(0,1)+'_'+lastName;       

                                                    }when else{

                                                        system.debug('No Match found');

                                                    }

                                                 }

                                                if(s2.equals(dominantPattern)){

                                                    if(dominantPattern != ''){

                                                            cont.MatchingEmail1__c = patternString+'@'+maxDomain;

                                                       }

                                                }else if (s2.equals(secondDominantPattern)){

                                                    if(secondDominantPattern != ''){

                                                            cont.MatchingEmail2__c = patternString+'@'+maxDomain;

                                                     }

                                                }

                                            }

                                        }

                                        conToUpdate.add(cont);

                                     }

                                             }

                            }

                      }

                                  acc.EmailBatchProcessed__c = true;

                                  if(dominantPattern != ''){

                                 acc.DominantEmailPattern__c = dominantPattern+'@'+maxDomain;

                         }

                                             accToUpdate.add(acc);

                      }

                system.debug('Contact List........ '+conToUpdate);

                      if(conToUpdate.size()>0 && conToUpdate!=null){

                      update conToUpdate;

                }

                      if(accToUpdate.size()>0 && accToUpdate!=null){

                      update accToUpdate;

                }

        }catch(exception e){

                system.debug('e--'+e);

        }     

           }

   

    global void finish(Database.BatchableContext BC)

    {

    }

}


 
Help me in getting 70 % test coverage for following code.
Apex Code:
global class BatchUpdateContactRole implements Database.Batchable<sObject>

{

    global Database.QueryLocator start(Database.BatchableContext BC)

    {

        String str = '001q000001Ob8yxAAB';

        String query = 'SELECT Id, RoleProcessed__c, Name FROM Account Where id =:str';

        return Database.getQueryLocator(query);

    }

 

    global void execute(Database.BatchableContext BC, List<Account> scope)

    {

     try{

            List<Contact> conToUpdate = new List<Contact>();

            List<Account> accToUpdate = new List<Account>();

            Set<string> allAccountIds = new set<string>();

            Map<string, list<Contact>> AccountIdContactMap = new Map<string, list<Contact>>();

         Map<Id,Account> AccountData = new Map<Id,Account>();

          Map<String, DominantRolePatternm__mdt> mapEd = DominantRolePatternm__mdt.getAll();

         

            for(Account a: scope){

                 allAccountIds.add(a.Id);

                 AccountData.put(a.id,a);

             }

             system.debug('All AccountIds'+allAccountIds);

             for(Contact con : [SELECT Id, rdcc__Role__c, FirstName, LastName, accountId from Contact where accountId IN :allAccountIds]){

                if(AccountIdContactMap.containsKey(con.accountId) && AccountIdContactMap.get(con.accountId)!=null){

                    AccountIdContactMap.get(con.accountId).add(con);

                }else{

                    AccountIdContactMap.put(con.accountId, new list<contact>{con});             

                }

             }

             system.debug('AccountIdContactMap'+AccountIdContactMap);

             for(string accId : AccountIdContactMap.keyset()){

                  boolean roleEmpty = false;

                  boolean allroleEmpty = false;

                  Integer countContact = 0;

                  Integer countNull = 0;

                  String roleToUpdate = '';

                  Map<string,Integer> roleMap = new Map<string,Integer>();

                  if(accId!=null){

                      system.debug('account Id'+accId);

                      for(Contact cont : AccountIdContactMap.get(accId)){

                          system.debug('Contact to be processed'+cont.Id);

                         

                              if(cont.rdcc__Role__c == null){

                                  //atleast one empty role is found within contacts of Account

                                  roleEmpty = true;

                                  ++countNull;

                                  system.debug('empty role found');

                                  //break;

                              }   

                          

                         // system.debug('sizeee--'+AccountIdContactMap.get(accId).size()+'--- count--'+countNull);

                          if(countNull == AccountIdContactMap.get(accId).size())

                          {

                            allroleEmpty = true;                          

                          }

                         

                      }

             system.debug('sizeee--'+AccountIdContactMap.get(accId).size()+'--- count--'+countNull);

 

                      if(roleEmpty && allroleEmpty)

                      {

                         Account AccData = AccountData.get(accId);

                            for(String nameEmailDomain : mapEd.keySet()){

                            System.debug('----->'+mapEd.get(nameEmailDomain).Name_Combination__c);

                            List<String> lsttest= mapEd.get(nameEmailDomain).Name_Combination__c.split(';');

                            for(String roleStr : lsttest)

                            {

                              system.debug('inside contains111--'+roleStr);

                              if(AccData.Name.contains(roleStr))

                              {

                                system.debug('inside contains222-'+roleStr);

                                for(Contact cont : AccountIdContactMap.get(accId)){

                                  cont.MatchingRole__c = mapEd.get(nameEmailDomain).RoleMatched__c;

                                  conToUpdate.add(cont);

                                }

                              }

                            }

                           }

 

                      }

                    

                       else if(roleEmpty && !allroleEmpty)

                      {

                        system.debug('Inside If Condition');

                        Integer prevValue = 0;

                        Integer num = 1;

                          for(Contact cont : AccountIdContactMap.get(accId)){

                              system.debug('Contact to be processed'+cont.Id);

                              if(cont.rdcc__Role__c != null){

                                system.debug('roleMap'+roleMap);

                                if(roleMap.containsKey(cont.rdcc__Role__c)){

                                    num = roleMap.get(cont.rdcc__Role__c);

                                    roleMap.put(cont.rdcc__Role__c,num+1);

                               }else{

                                    roleMap.put(cont.rdcc__Role__c,num);

                                }

                            }

                         }

                          system.debug('Role Map'+roleMap);

                          List<Integer> mapValues =  new List<Integer>();

                          //Check the maximum count to find Dominant

                          Integer maxValue = 0;

                          Integer secondHighestValue = 0;

                         if(roleMap.size() > 0){

                              mapValues = roleMap.values();

                              mapValues.sort();

                              maxValue = mapvalues[mapvalues.size()-1];

                              if(mapValues.size()>1){

                                  secondHighestValue = mapvalues[mapValues.size()-2];

                              }

                              system.debug('max Values'+maxValue);

                              system.debug('second highest value'+secondHighestValue);

                              if(maxValue != secondHighestValue){ //dominant role not clashing

                                  for(String s : roleMap.keySet()){

                                      Integer pattern_value = roleMap.get(s);

                                      if((pattern_value == maxValue) && (maxValue > 0)){

                                          system.debug(' Dominant Role for contacts with accountId'+accId+' is ' + s + ' with value' + pattern_value);

                                          roleToUpdate = s;

                                      }

                                  }

                              }

                             

                              else if(maxValue == secondHighestValue){ //dominant role not clashing

                                  for(String s : roleMap.keySet()){

                                      system.debug('s'+s);

                                      Integer pattern_value = roleMap.get(s);

                                      if((pattern_value == maxValue) && (maxValue > 0) ||(pattern_value == secondHighestValue) && (secondHighestValue > 0) ){

                                          system.debug(' Dominant Role for contacts with accountId'+accId+' is ' + s + ' with value' + pattern_value);

                                          for (String St : System.Label.Significant_Role.split(','))

                                          {

                                              if(st.equalsIgnoreCase(s))

                                                roleToUpdate = s; 

                                          }

                                         

                                      }

                                  }

                              }

                          }

                          system.debug('AccountIdContactMap'+AccountIdContactMap);

                          //Updating Role in contact with dominant role

                           for(Contact cont : AccountIdContactMap.get(accId)){

                               if(cont.rdcc__Role__c == null){

                                    system.debug('roleToUpdate'+roleToUpdate);

                                     if(roleToUpdate != ''){

                                         cont.MatchingRole__c = roleToUpdate;

                                         cont.rdcc__Role__c = roleToUpdate;

                                     } 

                                }

                              conToUpdate.add(cont);

                           }

                      }

                  }

                   //acc.RoleProcessed__c = true;   

                 Account acc =  new Account();

                 acc.Id = accId;

                 acc.RoleProcessed__c = True;

                 accToUpdate.add(acc);

             }

             system.debug('Con To Update'+conToUpdate);

             if(conToUpdate.size()>0 && conToUpdate!=null){

                 update conToUpdate;

             }

             system.debug('Acc To Update'+accToUpdate);

             if(accToUpdate.size()>0 && accToUpdate!=null){

                     update accToUpdate;

             }

        }catch(exception e){

                system.debug('e--'+e);

        }     

     }

   

    global void finish(Database.BatchableContext BC)

    {

    }

}
Test Class:
@isTest

private class BatchUpdateContactRoleTest {

    @testSetup

    static void setup() {

        List<Account> accounts = new List<Account>();

        List<Contact> contacts = new List<Contact>();

        // insert 10 accounts and add test fields as per your need.

       Account acc=new Account(name='Account ',

                billingcity='Chennai',billingcountry='India');

 

       insert acc;

        // find the account just inserted. add contact for each & test data required.

        Contact con1=new Contact(firstname='first',

                lastname='last',rdcc__Role__c='Test0', accountId=acc.id);

 

       insert con1;

        Contact con2=new Contact(firstname='first',

                lastname='last',rdcc__Role__c='Test1', accountId=acc.id);

        insert con2;

        Contact con3=new Contact(firstname='first',

                lastname='last',rdcc__Role__c='', accountId=acc.id);

        insert con3;

       

    }

       static testmethod void testMethod2(){

           Test.startTest();

        BatchUpdateContactRole tb = new BatchUpdateContactRole();

        Id batchId = Database.executeBatch(tb,50);

           Test.stopTest();

         }

}


 
Hi,
I had created data in the custom metadata for city and zipcode...
I want to write the apex trigger to autopopulate the cityname If I select the zipcode which s present in the custom metadata...
Could you please help me to write the trigger for the above scenario...
I had written the apex code to fetch the custom metadata
And now I want to write the trigger to autopopulate the city name if we choose the zipcode.
trigger Autopopulate on Contact (after insert) {
// When a new account is created, fill in the city and state based on zip code

           if (trigger.isAfter && trigger.isInsert) {

                      zipcodemetda.fetchAllMetadata();
               

           }

}


 
Hi,
I have code coverage of 44% for below apex batch class,help me in covering code coverage of 75% for below Apex class.
Apex code:
Global class BatchValidateEmailDominantPattern Implements Database.Batchable<sObject>,Database.AllowsCallouts, Database.stateful{

    Public boolean noCredit = false;

    Public string key;

    List<EmailValidationApiKey__mdt> apiKeys = [SELECT APIKey__c from EmailValidationApiKey__mdt];

    Global Database.QueryLocator Start(Database.BatchableContext BC){

         String query = '';

         Set<String> accIds = new Set<String>();

         //accIds.add('001q000001OZhiPAAT');

         //accIds.add('001q000001Ll1puAAB');

         //accIds.add('001q000001OJZxpAAH');

         //accIds.add('001q000001Ll1puAAB');

        try{

            system.debug('Validate Email Pattern start!');

            //Callout

            HttpRequest req = new HttpRequest();

            HttpResponse res = new HttpResponse();

            Http http = new Http();

                      for(EmailValidationApiKey__mdt record: apiKeys){

               key = record.APIKey__c;

            }

            //Checking credits

            String apiURL =  'https://api.zerobounce.net/v2/getcredits?api_key='+key;

            req.setEndpoint(apiURL);

            req.setHeader('Content-Type', 'application/json');

            req.setMethod('GET');

            String defaultAcc = 'Test Email';

            if (!Test.isRunningTest()) {

                  res = http.send(req);

                  system.debug('--res.getBody--'+res.getBody());

                  if(res.getStatusCode() == 200){

                        system.debug('success status');

                      Map<String, Object> docData = (Map<String, Object>)JSON.deserializeUntyped(res.getBody());

                      string credits =(string)docData.get('Credits');

                      Integer cred = Integer.valueOf(credits);

                      if(cred >= 1){

                          system.debug('Credits'+cred);

                          query = 'SELECT Id, Name FROM Account where DominantEmailPattern__c != null and EmailBatchProcessed__c = true AND ID IN :accIds';

                      }else{

                          query = 'Select Id,Name From Account where Name =: defaultAcc';

                          noCredit = true;

                      }

                  }

            }else{

                query='Select Id,Name From Account where Name =: defaultAcc';

            }

                      }catch (Exception e) {        

            System.debug('Error:' + e.getMessage() + 'LN:' + e.getLineNumber() );

        }

        return Database.getQueryLocator(query);

    }

   

    Global void execute(Database.BatchableContext BC, List<Account> scope) {

         system.debug('scope'+scope);

            String endpoint;

         Map<Id,String> DominantEmailContactMap = new Map<Id,String>();

                      List<String> ListemailList = new List<String>();

         List<List<String>> listWrapper =  new List<List<String>>();

         Set<string> allAccountIds = new set<string>();

         Map<string, list<Contact>> AccountIdContactMap = new Map<string, list<Contact>>();

         List<Contact> conToUpdate = new List<Contact>();

         List<Contact> allConToUpdate = new List<Contact>();

         Set<string> conIds = new set<string>();

         Set<string> catchAllConIds = new set<string>();

         try {

             if((scope.size() > 0)&& (scope!=null)){

                     system.debug('scope size greater than 0');

                     for(Account a: scope){

                         allAccountIds.add(a.Id);

                     }

                     system.debug('allAccountIds'+allAccountIds);

                     for(Contact con : [SELECT Id, Email, FirstName, LastName, MatchingEmail1__c, MatchingEmail2__c, accountId from Contact where accountId IN :allAccountIds and EmailValidateFlag__c = False]){

                         if(AccountIdContactMap.containsKey(con.accountId) && AccountIdContactMap.get(con.accountId)!=null){

                             AccountIdContactMap.get(con.accountId).add(con);

                         }else{

                             AccountIdContactMap.put(con.accountId, new list<contact>{con});             

                         }

                     }

                     system.debug('AccountIdcontactmap'+AccountIdContactMap);

                     for(string accId : AccountIdContactMap.keyset()){

                         system.debug('Inside loop');

                         if(accId!=null){

                             for(Contact cont : AccountIdContactMap.get(accId)){

                                 if(cont.MatchingEmail1__c != null)

                                 {  

                                     if( DominantEmailContactMap.containsKey(cont.Id))

                                     {

                                         String mapEmail = DominantEmailContactMap.get(cont.Id);

                                         mapEmail = cont.MatchingEmail1__c;

                                         DominantEmailContactMap.put(cont.Id,mapEmail);

                                     }else{                                   

                                         DominantEmailContactMap.put(cont.Id, cont.MatchingEmail1__c);

                                     }

                                 }

                             }

                         }

                     }         

                     system.debug('DominantEmailContactMap'+DominantEmailContactMap);

                     if(DominantEmailContactMap!=null){

                        

                         List<String> FinalEmailList = new List<String>();

                         ListemailList = DominantEmailContactMap.values();

                         for(String emailString : ListemailList )

                         {

                            FinalEmailList.add(emailString);

                         }

                         for(Integer i = 0 ; i < (FinalEmailList.size()/3)+1 ; i++){

                             List<String> lstTemp = new List<String>();

                             for(Integer j=(i*3);(j<(i*3)+3) && j<FinalEmailList.size() ; j++){

                                 lstTemp.add(FinalEmailList.get(j));

                             }

                            if(lstTemp!=null && lstTemp.size()>0){

                                  listWrapper.add(lstTemp);

                             }

                         }

                     }

                     String firstPart = '{\"api_key\":\"'+key+'\",';

                     String reqPart = '\"email_batch\":[';

                       system.debug('listwrapper'+listWrapper);

                     for(List<String> emailTempList: listWrapper){

                         String emailRequest = '';

                           String matchingEmail = '';

                         if(emailTempList.size() == 1){

                             for(Integer i=0; i<emailTempList.size(); i++){

                                 matchingEmail = emailTempList[i];

                                 if(matchingEmail != ''){

                                    emailRequest += '{\"email_address\": '+'\"'+matchingEmail+'\"'+'}';

                                 }

                             }

                         }

                         else if(emailTempList.size()> 1){

                             for(Integer i=0; i<emailTempList.size(); i++){

                                 matchingEmail = emailTempList[i];

                                  if(matchingEmail != ''){

                                    emailRequest += '{\"email_address\": '+'\"'+matchingEmail+'\"'+'},';

                                  }

                               }

                         }

                         String lastPart = ']}';

                          if (emailRequest.right(1) == ',')

                            emailRequest = emailRequest.removeEnd(',');

                         String request = firstPart + reqPart + emailRequest +lastPart;

                         system.debug('Request'+request);

                         if(request != null)

                         {

                             system.debug('Inside if');

                             HttpRequest req1 = new HttpRequest();

                             HttpResponse res1 = new HttpResponse();

                             Http http1 = new Http();

                             req1.setHeader('Content-Type',  'application/json');

                             req1.setEndpoint('https://bulkapi.zerobounce.net/v2/validatebatch');

                             req1.setMethod('POST');

                             req1.setBody(request);

                              if (!Test.isRunningTest()) {     

                                  res1 = http1.send(req1);

                                  System.debug('Response Validating email' + res1.getBody());

                                  if(res1.getStatusCode() == 200){

                                     EmailValidationBatchJsonParser emailParserResponse = new EmailValidationBatchJsonParser();

                                     emailParserResponse = (EmailValidationBatchJsonParser) JSON.deserialize(res1.getBody(), EmailValidationBatchJsonParser.class);

                                     List<EmailValidationBatchJsonParser.email_batch> etList = emailParserResponse.email_batch;

                                      for(EmailValidationBatchJsonParser.email_batch etObj : etList){

                                          system.debug('etObj.status'+etObj.status);

                                          if(etObj.status == 'Valid'){

                                              system.debug('Email Status Valid');

                                              for(Id conId : DominantEmailContactMap.keySet()){

                                                  if(DominantEmailContactMap.get(conId) == etObj.address){

                                                       conIds.add(conId);

                                                  }

                                              }

                                          }else if(etObj.status == 'catch-all'){

                                              for(Id conId : DominantEmailContactMap.keySet()){

                                                  if(DominantEmailContactMap.get(conId) == etObj.address){

                                                       catchAllConIds.add(conId);

                                                  }

                                              }

                                          }else{

                                              system.debug('Not Valid status');

                                          }

                                      }

                                  }else{

                                      system.debug('Response Failure!!');

                                  }

                              }else{

                                  system.debug('status code: error');

                              }             

                         }         

                    }

                      //Update Contacts Email

                      system.debug('conIds'+conIds);

                     if(conIds!=null){

                         system.debug('Inside');

                         for(Contact con : [SELECT Id, Email, MatchingEmail1__c from Contact where Id IN:conIds]){

                             if(con.MatchingEmail1__c!=null){

                                 system.debug('con'+con.Id);

                                 con.ValidEmail__c = con.MatchingEmail1__c;

                                 system.debug('con updated email'+con.ValidEmail__c);

                             }

                             conToUpdate.add(con);

                         }

                     }

                     if(catchAllConIds!=null){

                         for(Contact cont: [SELECT Id, catchAllEmail__c from Contact where Id IN:catchAllConIds]){

                              cont.catchAllEmail__c = True;

                              conToUpdate.add(cont);

                         }   

                      }

                       for(Id conId : DominantEmailContactMap.keySet()){

                                  Contact cn =  new Contact();

                         cn.Id = conId;

                         cn.EmailValidateFlag__c = True;

                         allConToUpdate.add(cn);

                     }

                     if(conToUpdate!=null && conToUpdate.size()>0){

                        update conToUpdate;

                     }

                      if(allConToUpdate!=null && allConToUpdate.size()>0){

                        update allConToUpdate;

                     }

                      }

             }catch (Exception e) {        

                 System.debug('Error:' + e.getMessage() + 'LN:' + e.getLineNumber() );

             }

        }

        Global void finish(Database.BatchableContext BC) {

            Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();

            String[] toAddresses = new String[] {'shweta.lal@nagarro.com','aditya.pandey@nagarro.com'};

            mail.setToAddresses(toAddresses);

            if(nocredit){

               mail.setSubject('No Credits Found!');

                mail.setPlainTextBody('Credits are not available on this API key');

                Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });

            }else{

                AsyncApexJob a = [Select Id, Status,ExtendedStatus,NumberOfErrors,JobItemsProcessed,TotalJobItems, CreatedBy.Email from AsyncApexJob where Id =: BC.getJobId()];

                mail.setSubject('Dominant Email Pattern Batch ' + a.Status);

                mail.setPlainTextBody('records processed ' + a.TotalJobItems + 'with '+ a.NumberOfErrors + ' failures.');

                Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });

            }

        }

}
test class:
@isTest(SeeAllData=true)

public class TestBatchValidate {

    @istest

    public static void testmet(){

        List<Contact> clist = new List<Contact>();

        List<Account> accounts = new List<Account>();

        Account acc=new Account(name='Account ',SecDomEmailPattern__c  = 'FinitialLastName@va.gov',

                billingcity='Chennai',billingcountry='India',EmailBatchProcessed__c = true,DominantEmailPattern__c='FirstName.LastName@aec.com',RoleProcessed__c=True);

            accounts.add(acc);

       

        contact c = new contact(LastName='sample name',MatchingEmail1__c='samplename@gmail.com',Accountid=acc.Id);

        clist.add(c);

        contact c1 = new contact(LastName='sample' ,MatchingEmail1__c='sample@gah.com',FirstName='sample',Accountid=acc.Id);

        clist.add(c1);

        contact c2 = new contact(LastName='sample',MatchingEmail1__c='',Accountid=acc.Id);

        clist.add(c2);

        contact c3 = new contact(LastName='sample' ,MatchingEmail1__c='sample5@gmail.com',Accountid=acc.Id);

        clist.add(c3);

        contact c4 = new contact(LastName='sample',MatchingEmail1__c='sample6@gmail.com' ,Accountid=acc.Id);

        clist.add(c4);

        contact c5 = new contact(LastName='sample' ,MatchingEmail1__c='sample7@gmail.com',Accountid=acc.Id);

        clist.add(c5);

       

        insert(clist);

 

 

    }

   

        @istest

    public static void testmet2(){

         Test.startTest();

 

            BatchValidateEmailDominantPattern obj = new BatchValidateEmailDominantPattern();

            DataBase.executeBatch(obj);

            

        Test.stopTest();

    }

 

}


 
hii,
i want to write a test class for below apex batch class which covers 75% code coverage.
Apex code:
global class BatchUpdateContactEmail implements Database.Batchable<sObject>

{

           global Database.QueryLocator start(Database.BatchableContext BC)

           {

         String accId = '001q000001Ll27sAAB';

            String query = 'SELECT Id,EmailBatchProcessed__c, Name,(SELECT Id, Email, FirstName, LastName FROM Contacts) FROM Account Where Id =: accId';

         return Database.getQueryLocator(query);

    }

 

    global void execute(Database.BatchableContext BC, List<Account> scope)

    {

        try{

            system.debug('scope'+scope);

            List<Contact> conToUpdate = new List<Contact>();

            List<Account> accToUpdate = new List<Account>();

          List<String> patternList  =  new List <String>();

            List<String> genericPattern = new List<String>();

            List<EmailPattern__mdt> listEmailPattern = [SELECT Id, Pattern__c from EmailPattern__mdt];

            List<GenericEmailPattern__mdt> genericPatternList = [SELECT Id, GenericPattern__c from GenericEmailPattern__mdt];

           

            for(EmailPattern__mdt record: listEmailPattern){

                patternList.add(record.Pattern__c);

            }

         

           for(GenericEmailPattern__mdt record: genericPatternList){

                genericPattern.add(record.GenericPattern__c);

            }

           

            for(Account acc : scope){

                    Map<string,Integer> counterMap = new Map<string,Integer>();

                    Map<Id,string> emailConMap = new Map<Id,string>();

                    Map<Id,string> accountDomainMap = new Map<Id,string>();

                    Map<string,Integer> emailDomainMap = new Map<string,Integer>();

                    boolean emailEmpty = false;

                    Integer countContact = 0;

                    String dominantPattern = '';

                    String secondDominantPattern = '';

                      String maxDomain = '';

                   

                   for(string s1:patternList){

                       counterMap.put(s1,0);

                    }

                    if(acc.Id!=null && acc.EmailBatchProcessed__c!=true){

                        countContact = acc.contacts.size();

                        if(countContact > 1){

                              for(Contact cont : acc.contacts)

                                {

                                    if(emailEmpty == false){

                                        if(cont.Email == null){

                                            system.debug('one empty email found');

                                            //atleast one empty email is found within contacts of Account

                                            emailEmpty = true;

                                            break;

                                        }                                     

                                    }

                                }

                                            }

                       

                            //if atleast one blank email found

                            if(emailEmpty == true){

                                Integer domainCount = 0;

                                boolean validDomain = false;

                                String domainName = '';

                                Map<string,integer> emailMap = new Map<string,integer>();

                                boolean noMatch = false;

                                boolean patternFound = false;

                                for(Contact cont : acc.contacts){

                                    system.debug('contact to be processed'+cont.Id);

                                    Map<string,string> conMap = new Map<string,string>();

                                    String temps = '';

                                    String emailDomain = '';

                                    Integer num = 0;

                                   

                                    if(cont.Email !=null && cont.Email!=''){

                                        temps = cont.Email.split('@')[0];

                                        emailDomain = cont.Email.split('@')[1];

                                        Integer prevValue = 0;

                                        boolean validEmail = true;

                                        boolean genericPatternFound = false;

                                        system.debug('genericPattern List'+genericPattern);

                                        for(String s: genericPattern){

                                            if(cont.Email.contains(s)){

                                                genericPatternFound=true;

                                                break;

                                            }

                                        }

                                        //Finding Maximum repeated Domain

                                        if(!genericPatternFound){

                                            system.debug('Not generic pattern');

                                            if(emailDomain != ''){

                                                prevValue = emailDomainMap.get(emailDomain);

                                                if(prevValue != null){

                                                    num = num + 1;

                                                }

                                                emailDomainMap.put(emailDomain,num);

                                            }

                                            string firstName = '';

                                            string lastName = '';

                                           

                                            if(cont.FirstName != ''){

                                                firstName = cont.FirstName.toLowercase();

                                            }

                                            if(cont.LastName != ''){

                                                lastName = cont.LastName.toLowercase();

                                                String middleName = '';

                                                 if (lastName.containsWhitespace()){

                                                    List<String> names = lastName.split('');

                                                    for(String name :names){

                                                       middleName = names.get(0);

                                                     }

                                                }

                                            }

                                            system.debug('firstname'+firstName);

                                            system.debug('lastname'+lastName);

                                            conMap.put(firstName+'.'+lastName,'FirstName.LastName');

                                            conMap.put(firstName,'FirstName');

                                            conMap.put(firstName+lastName,'FirstNameLastName');

                                            conMap.put(firstName.substring(0,1)+lastName,'FinitialLastName');

                                            conMap.put(firstName+lastName.substring(0,1),'FirstNameLastinitial');

                                            conMap.put(firstName.substring(0,1)+'.'+lastName,'Finitial.LastName');

                                            conMap.put(firstName+'_'+lastName,'FirstName_LastName');

                                            conMap.put(firstName+'-'+lastName,'FirstName-LastName');

                                            conMap.put(firstName.substring(0,1)+'_'+lastName,'Finitial_LastName');

                                           

                                            //replace it with temps

                                            system.debug('temps'+temps);

                                            string pattern = conMap.get(temps);

                                            system.debug('conMap'+conMap);

                                            system.debug('Pattern'+pattern);

                                            if(pattern != null)

                                            {

                                                if(patternFound!= true){

                                                     patternFound = true;

                                                }

                                                integer count = counterMap.get(pattern);

                                                count =  count + 1;

                                                counterMap.put(pattern,count);

                                            }else{

                                                noMatch = true;

                                            }

                                        }

                                    }

                                }

                                //Check the maximum count to find Dominant pattern in an Account

                                if(patternFound){

                                    Integer maxValue = 0;

                                    Integer secondHighestValue = 0;

                                    List<Integer> mapValues =  new List<Integer>();

                                    List<String> patternKeyList = new List<String>();

                                    if(counterMap != null){

                                        mapValues = counterMap.values();

                                        mapValues.sort();

                                        maxValue = mapvalues[mapvalues.size()-1];

                                        secondHighestValue = mapvalues[mapValues.size()-2];

                                        string secondPartEmail = '';

                                        boolean dominantPatternFound = false;

                                        for(String s : counterMap.keySet())

                                        {

                                            Integer pattern_value = counterMap.get(s);

                                            if((pattern_value == maxValue) && (maxValue > 0))

                                            {

                                                if(!dominantPatternFound){

                                                    system.debug(' Dominant Pattern Email for contacts with accountId'+acc.Id+' is ' + s + ' with value' + pattern_value);

                                                    dominantPattern = s;

                                                    dominantPatternFound = true;

                                                }

                                            }

                                            if((pattern_value == secondHighestValue) && (secondHighestValue > 0)){

                                                system.debug(' Second Dominant Pattern Email for contacts with accountId'+acc.Id+' is ' + s + ' with value' + pattern_value);

                                                secondDominantPattern = s;

                                            }

                                        }

                                    }

                                  //Checking Max Domain Name

                                    Integer highestNum = 0;

                                    List<Integer> domainList = new List<Integer>();

                                    if(emailDomainMap != null){

                                        domainList = emailDomainMap.values();

                                        domainList.sort();

                                        if(domainList.size()>0){

                                             highestNum = domainList[domainList.size()-1];

                                         }

                                      

                                    }

                                    for(String domain : emailDomainMap.keySet()){

                                        Integer num = emailDomainMap.get(domain);

                                        if(num == highestNum){

                                            maxDomain = domain;

                                            system.debug('Max Domain for contacts with accountId'+acc.Id+' is ' + maxDomain);

                                        }

                                    }

                                   

                                    //Updating fields in contact with pattern formed email    

                                    for(Contact cont : acc.contacts){

                                      //  cont.MatchingEmail1__c = '';

                                      //  cont.MatchingEmail2__c = '';

                                        string patternString = '';

                                        string emailDomain = '';

                                        List<String> domPatternList = new List<String>();

                                       

                                        domPatternList.add(dominantPattern);

                                        domPatternList.add(secondDominantPattern);

                                      

                                        if(cont.Email == null){

                                           cont.MatchingEmail1__c = '';

                                           cont.MatchingEmail2__c = '';

                                            string firstName = '';

                                            string lastName = '';

                                            string middleName = '';

                                           if(cont.FirstName != null && cont.FirstName != ''){

                                                firstName = cont.FirstName.toLowercase();

                                            }

                                            if(cont.LastName != null && cont.LastName != ''){

                                                lastName = cont.LastName.toLowercase();

                                                List<String> names = new List<string>();

                                                if (lastName.containsWhitespace()){

                                                    names = lastName.split('');

                                                }else if(lastName.contains('.')){

                                                    names = lastName.split('.');

                                                }

                                                for(String name :names){

                                                       middleName = names.get(0);

                                                     }

                                            }

                                            if(middleName != ''){

                                                lastName = middleName;

                                            }

                                          for(string s2:domPatternList){

                                                    switch on s2{

                                                    when 'FirstName.LastName' {

                                                        patternString = firstName+'.'+lastName;

                                                    }when 'FirstName' {

                                                        patternString = firstName;

                                                    }when 'FirstNameLastName' {

                                                        patternString = firstName+lastName;

                                                    }when 'FinitialLastName' {

                                                        patternString = firstName.substring(0,1)+lastName;       

                                                    }when 'FirstNameLastinitial' {

                                                        patternString = firstName+lastName.substring(0,1);       

                                                    }when 'Finitial.LastName' {

                                                        patternString = firstName.substring(0,1)+'.'+lastName;       

                                                    }when 'FirstName_LastName' {

                                                        patternString = firstName+'_'+lastName;       

                                                    }when 'FirstName-LastName' {

                                                        patternString = firstName+'-'+lastName;       

                                                    }when 'Finitial_LastName' {

                                                        patternString = firstName.substring(0,1)+'_'+lastName;       

                                                    }when else{

                                                        system.debug('No Match found');

                                                    }

                                                 }

                                                if(s2.equals(dominantPattern)){

                                                    if(dominantPattern != ''){

                                                            cont.MatchingEmail1__c = patternString+'@'+maxDomain;

                                                       }

                                                }else if (s2.equals(secondDominantPattern)){

                                                    if(secondDominantPattern != ''){

                                                            cont.MatchingEmail2__c = patternString+'@'+maxDomain;

                                                     }

                                                }

                                            }

                                        }

                                        conToUpdate.add(cont);

                                     }

                                             }

                            }

                      }

                                  acc.EmailBatchProcessed__c = true;

                                  if(dominantPattern != ''){

                                 acc.DominantEmailPattern__c = dominantPattern+'@'+maxDomain;

                         }

                                             accToUpdate.add(acc);

                      }

                system.debug('Contact List........ '+conToUpdate);

                      if(conToUpdate.size()>0 && conToUpdate!=null){

                      update conToUpdate;

                }

                      if(accToUpdate.size()>0 && accToUpdate!=null){

                      update accToUpdate;

                }

        }catch(exception e){

                system.debug('e--'+e);

        }     

           }

   

    global void finish(Database.BatchableContext BC)

    {

    }

}