• John Deo 10
  • NEWBIE
  • 0 Points
  • Member since 2018

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 0
    Questions
  • 1
    Replies
Hi All,

I am writing a test class for a batch class but my current code coverage is 0% and not able to cover. I am geetting error as:
System.DmlException: Insert failed. First exception on row 0; first error: FIELD_FILTER_VALIDATION_EXCEPTION, Value does not exist or does not match filter criteria.: [Account__c]
Batch class is as belows:
global class UpdatePickUpstatusBatch implements 
    Database.Batchable<sObject>, Database.Stateful {
    

    global Database.QueryLocator start(Database.BatchableContext bc) {
        return Database.getQueryLocator('SELECT ID, Pickup_Date__c, Pickup_Status__c, Name FROM Pickup_Request__c Where Pickup_Date__c != null and Pickup_Status__c==\'Waitlisted\'');

    }

    global void execute(Database.BatchableContext bc, List<Pickup_Request__c> PRScope){
        // process each batch of records
        List<Pickup_Request__c> updateprlist = new List<Pickup_Request__c>();
        for (Pickup_Request__c pr : PRScope) {
           if(Date.today()==pr.Pickup_Date__c-Integer.valueof(Label.PickDateDaysforBatch))
           {
               pr.Pickup_Status__c = 'Open';
               updateprlist.add(pr);
                // make http callouts here Start
                
                
                // End              
           }
        }
        if(!updateprlist.IsEmpty()){
            update updateprlist;
        }
    }    

    global void finish(Database.BatchableContext bc){
        
    }    

}

My test class is as belows:
 
@isTest
public class UpdatePickUpstatusBatch_Test {
    static testMethod void UpdatePickUpstatusBatchtest1(){
    
    Schema.DescribeSObjectResult ACCobj1 = Schema.SObjectType.Account;
    Map<String,Schema.RecordTypeInfo> rtMapByName = ACCobj1 .getRecordTypeInfosByName();
    Schema.RecordTypeInfo rtByName = rtMapByName.get('Site');
    ID ACCSiteRecTypeid = rtByName.getRecordTypeId(); 
    
    Schema.DescribeSObjectResult ACCobj2 = Schema.SObjectType.Account;
    Map<String,Schema.RecordTypeInfo> rtMapByName2 = ACCobj2 .getRecordTypeInfosByName();
    Schema.RecordTypeInfo rtByName2 = rtMapByName2.get('Customer');
    ID ACCCustRecTypeid = rtByName2.getRecordTypeId(); 
    
    Schema.DescribeSObjectResult ACCobj3 = Schema.SObjectType.Account;
    Map<String,Schema.RecordTypeInfo> rtMapByName3 = ACCobj3 .getRecordTypeInfosByName();
    Schema.RecordTypeInfo rtByName3 = rtMapByName3.get('Billing');
    ID ACCBillingRecTypeid = rtByName3.getRecordTypeId(); 
    
        
        
        Account AccRecCustomer = new Account();
            AccRecCustomer.Name = 'Acme';
            AccRecCustomer.Phone = '1234';            
            AccRecCustomer.RecordTypeId= ACCCustRecTypeid;
            AccRecCustomer.Password__c = 'test data';
            AccRecCustomer.Status__c = 'Active';
        insert AccRecCustomer;
        
        Account AccRec = new Account();
            AccRec.Name = 'Acme';
            AccRec.Phone = '1234';
            AccRec.Parent = AccRecCustomer;
        
           //AccRec.Parent =  AccRecCustomer.id;
            AccRec.Status__c = 'Active';
            AccRec.RecordTypeId= ACCSiteRecTypeid;
            AccRec.Password__c = 'test data';
        insert AccRec;
        
        Account AccRecBilling = new Account();
            AccRecBilling.Name = 'Acme';
            AccRecBilling.Parent = AccRecCustomer;
            AccRecBilling.Phone = '1234';
            AccRecBilling.Status__c = 'Active';
            AccRecBilling.RecordTypeId= ACCBillingRecTypeid;
            
        insert AccRecBilling;

               
        Contact ConRec = new Contact();
            ConRec.FirstName = 'John';
            ConRec.LastName = 'Smith';
            ConRec.Phone = '1234';
            ConRec.Email = 'abc@gmail.com';
            
        insert ConRec;
        
         Contact ConRec1 = new Contact();
            ConRec1.FirstName = 'John1';
            ConRec1.LastName = 'Smith1';
            ConRec1.Phone = '12345';
            ConRec1.Email = 'abc1@gmail.com';
            
        insert ConRec1;
        
        Address__c AddRec = new Address__c();
            AddRec.Address1__c = 'G  370 Docklands Dr';
            AddRec.Country__c = 'AUSTRALIA';
            AddRec.State__c = 'VIC';
            AddRec.Suburb__c = 'Docklands';
            AddRec.Zipcode__c = 3008;
            AddRec.Shipping_Address_Validation_Status__c = 'Verified by Experian';
            AddRec.Shipping_Address_Validation_Timestamp__c = system.today();
            
        Insert AddRec;
        String AddRecId = AddRec.id; 
        CustAddrAssoc__c  CustAddRec = new CustAddrAssoc__c ();
            CustAddRec.Account__c = AccRec.id;
            CustAddRec.Address__c = AddRec.id; 
            CustAddRec.Type__c = 'Site';
            CustAddRec.InActive__c = false;
        
        Insert CustAddRec;
        
        Suburbs__c  SuburRec = new Suburbs__c ();
            SuburRec.Name = 'DOCKLANDS';
            SuburRec.Post_Code__c = '3008';
            SuburRec.State__c = 'VIC';
            SuburRec.Depot__c = 'MEL';
            SuburRec.City__c = '818 Bourke Street';
         
        insert SuburRec; 
        
        Holiday__c  HolRec = new Holiday__c ();
            HolRec.Name = 'ADELAIDE CUP DAY';
            HolRec.Type__c = 'Normal';
            HolRec.State_Name__c = 'VIC';
            HolRec.Start_Date__c = System.today();
            HolRec.End_Date__c = System.today()+2;
        Insert HolRec ;
        
        Pickup_Request__c  PickReqRec = new Pickup_Request__c();
        
           /** PickReqRec.Pickup_Type__c = 'Pickup';
            PickReqRec.Pickup_Status__c = 'Draft';
            PickReqRec.Source__c = 'Email';
            PickReqRec.Third_Party_Contact__c = ConRec1.id;
            PickReqRec.Contact__c = ConRec.id;
            PickReqRec.Billing_A_c__c = AccRecBilling.id;
            PickReqRec.Ready_Time__c = '12:00';
            PickReqRec.Close_Time__c = '19:00';
            PickReqRec.SuburbT__c = 'DOCKLANDS';
            PickReqRec.Pickup_Date__c = System.today()+1;
            PickReqRec.State__c = 'test Sate';
            PickReqRec.Service__c ='Priority';
            PickReqRec.Total_Wt__c = 3000;
            //PickReqRec.Address__c = AddRec.id;
            PickReqRec.password__c = 'test data';
            
        Insert PickReqRec;**/
       
            PickReqRec.Pickup_Type__c = 'Pickup';
            PickReqRec.Pickup_Status__c = 'Waitlisted';
            PickReqRec.Source__c = 'Email';
            PickReqRec.Third_Party_Contact__c = ConRec1.id;
            PickReqRec.Contact__c = ConRec.id;
            PickReqRec.Billing_A_c__c = AccRecBilling.id;
            PickReqRec.Ready_Time__c = '12:00';
            PickReqRec.Close_Time__c = '19:00';
            PickReqRec.SuburbT__c = 'DOCKLANDS';
            PickReqRec.Pickup_Date__c = System.today()+1;
            PickReqRec.State__c = 'test Sate';
            PickReqRec.Service__c ='Priority';
            PickReqRec.Total_Wt__c = 3000;
            PickReqRec.Address__c = CustAddRec.id;
            PickReqRec.password__c = 'test data';
            PickReqRec.Destination_SuburbL__c = SuburRec.id;
            PickReqRec.H_cm__c = 444;
            PickReqRec.Item_Description__c ='Item';
            PickReqRec.L_cm__c = 44;
            PickReqRec.No_of_Items__c =4;
            PickReqRec.Customer__c = AccRecCustomer.id;
            //PickReqRec.Customer__c = AccRec.id;
        	PickReqRec.Account__c =AccRec.id;

            PickReqRec.W_cm__c = 400;
            PickReqRec.Food_Stuff__c  = 'Yes';
            
        Insert PickReqRec;
        
        
       
        Pickup_Request__c PickReqRecObj = [Select id ,Pickup_Status__c ,Pickup_Date__c from Pickup_Request__c  where id =:PickReqRec.id LIMIT 1];
        
        System.debug('----->'+PickReqRecObj );

        //PickReqRec.Pickup_Status__c = 'Open';
        //update PickReqRec;
        
        Test.startTest();

        UpdatePickUpstatusBatch UpdateBatch = new UpdatePickUpstatusBatch();
          //DataBase.executeBatch(UpdateBatch);
        ID batchprocessid = Database.executeBatch(UpdateBatch);
        Test.stopTest();
    }
}

Below is the look up filter:
Object-Pickup Request
Field label: Site
Field API: Account__c
User-added image

When I removed the filter then my code coverage becomes 72% but that is not a correct approach. I need not have to remove the filter infact I do need to cover the same in my test class which I am not getting.

Kindly help me

Thanks & Regards,
Harjeet