function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
shailendra singhaishailendra singhai 

webservices test class need to create for update the lead record

could you please help me to create test class for the below code, as mock test response need to create here, and iam new for this.
here the intraction between web application and salesforce is happning,
getting input from web application to update the record having valid recordID. 
@RestResource(urlMapping='/LeadRestUpdate/*')

Global with sharing class  NS_WS_Lead_update {
    @HttpPost
    Global static String doUpdate()
    {
        RestRequest req = RestContext.request;
        RestResponse res = Restcontext.response;
        System.debug('Params: ' + req.params);
        //String temp = req.requestBody.toString();
        String leadid = req.params.get('lead_id');
        Lead ll = [SELECT Id, FirstName,LastName, Phone, email, company FROM Lead WHERE Id = :leadid];
        if (req.params.get('step') == 'step1' || req.params.get('step') == 'step2' )
        {
            ll.FirstName = req.params.get('first_name');
            ll.LastName = req.params.get('last_name');
            ll.phone = req.params.get('phone');
            ll.Email = req.params.get('email');
            ll.Company = req.params.get('company_name');
            ll.Company_Registration_Number__c = req.params.get('registration_number');
            ll.Company_Status__c = req.params.get('company_status');
            ll.CompanyType__c = req.params.get('company_type');
            if(req.params.get('incorporated_date') != null && req.params.get('incorporated_date') != '' ) {
                ll.Incorporation_Date__c = Date.valueOf(req.params.get('incorporated_date'));
            }
            ll.Street = req.params.get('street');
            ll.City = req.params.get('city');
            ll.State = req.params.get('state');
            ll.Country = req.params.get('country');
            ll.PostalCode = req.params.get('zip');
            
        }
        if (req.params.get('step') == 'step2')
        {
            ll.Industry = req.params.get('industry');
            if(req.params.get('take_card_payment') == 'true')
               {
                ll.Do_you_take_Card_transactions__c = Boolean.valueOf( req.params.get('take_card_payment'));
                ll.Average_monthly_card_takings__c = req.params.get('cardtakings_amount');
                ll.Average_monthly_takings_4_200__c = Boolean.valueOf( req.params.get('cardtakings'));
                ll.Average_monthly_transactions_10__c = Boolean.valueOf( req.params.get('cardtransaction10andmore'));
            }
        }
        if (req.params.get('step') == 'step3')
        {
            Double amount_requested =  Double.valueOf(req.params.get('amount_requested'));
            ll.Amount_Requested__c = amount_requested;
            ll.Term_Requested__c  = Double.valueOf(req.params.get ('loan_term'));
            ll.Purpose_of_Facility__c = req.params.get('puropose_of_funding');
        }
        if (req.params.get('step') == 'step4')     
        {
            //ll.Web_to_Lead__c = Boolean.valueOf(req.params.get('web_to_lead'));
            ll.Residential_Address_City__c = req.params.get('residential_city');
            ll.Residential_Address_Country__c = req.params.get('residential_country');
            ll.Residential_Address_State_Province__c = req.params.get('residential_state');
            ll.Residential_Address_Street__c = req.params.get('residential_street');
            ll.Residential_Address_Zip_Postal_Code__c = req.params.get ('residential_zip');
            if (req.params.get('product_interested') != 'bca') {
                ll.Home_Owner__c = Boolean.valueOf(req.params.get('own_a_property'));
                ll.Ownership_is_of_Residential_Address__c = Boolean.valueOf(req.params.get('same_as_residency'));
                ll.Property_Address_City__c = req.params.get('property_city');
                ll.Property_Address_Country__c = req.params.get('property_country');
                ll.Property_Address_State_Province__c = req.params.get('property_state');
                ll.Property_Address_Street__c = req.params.get('property_street');
                ll.Property_Address_Zip_Postal_Code__c = req.params.get('property_zip');
            }
            if (req.params.get('allow_credit_search') == 'true')
                ll.Allow_searches_on_all_directors__c = Boolean.valueOf( req.params.get('allow_credit_search'));  
            else
                ll.Allow_searches_on_all_directors__c = false;
            if(req.params.get('allow_engaging_card_provider')!=null)
               {
                ll.Authorization_to_contact_card_provider__c = Boolean.valueOf( req.params.get('allow_engaging_card_provider'));
            }
            if(req.params.get('take_card_payment') == 'true')
               {
                ll.Do_you_take_Card_transactions__c = Boolean.valueOf( req.params.get('take_card_payment'));
                ll.Average_monthly_card_takings__c = req.params.get('cardtakings_amount');
                ll.Average_monthly_takings_4_200__c = Boolean.valueOf( req.params.get('cardtakings'));
                ll.Average_monthly_transactions_10__c = Boolean.valueOf( req.params.get('cardtransaction10andmore'));
            }
        }
        update ll;
        string messagesent='Thank You. Salesforce has Successfully Updated'+ll.id+req.params.get('step');
        return messagesent;
    }
}
shailendra singhaishailendra singhai
hi Gokula,

Thanks for the help.
the code which work for me, as below.
@isTest
private class NS_WS_Lead_update_mock_test {
      static testMethod void testdoPost() {
      Lead inslead=new Lead();
      inslead.FirstName ='test1firstname';
      inslead.lastname = 'test1lastname';
      inslead.Company = 'test1abc';
      inslead.Phone='9879879878';
      inslead.Email='test11@gmail.com'; 
      insert inslead;
      list<lead> leadli=new list<lead>();
      leadli= [select ID from lead where  FirstName ='test1firstname' and lastname = 'test1lastname'and Company = 'test1abc' limit 1];
      Lead findlead=new Lead();
      findlead=leadli[0];
      String lead_id = findlead.Id;
      for(integer i=1;i<=4;i++)
      { 
  RestRequest req = new RestRequest();
        req.addHeader('Content-Type', 'application/json'); // Add a JSON Header as it is validated
        req.requestURI = '/services/apexrest/LeadRestUpdate/';
        req.httpMethod = 'POST';
       
        req.addParameter('lead_id',lead_id);
        req.addParameter('step','step'+i);
        req.addParameter('first_name','Ramesh');
        req.addParameter('last_name','Parekh');
        req.addParameter('phone','020202020200');
        req.addParameter('email','ss@ssho.com');
        req.addParameter('company_name','Myown company');
        req.addParameter('registration_number','3456256');
        req.addParameter('company_status','active');
        req.addParameter('company_type','limited');
        req.addParameter('incorporated_date','2016-12-12');
        req.addParameter('street','my street');
        req.addParameter('city','lonodn');
        req.addParameter('state','london');
        req.addParameter('country','uk');
        req.addParameter('industry','Banking');
        req.addParameter('take_card_payment','true');
        req.addParameter('cardtakings_amount','');
        req.addParameter('cardtakings','false');
        req.addParameter('cardtransaction10andmore','false');
        req.addParameter('amount_requested','10000');
        req.addParameter('loan_term','12');
        req.addParameter('puropose_of_funding','Other');
        req.addParameter('residential_city','London');
        req.addParameter('residential_country','UK');
        req.addParameter('residential_state','Herts');
        req.addParameter('residential_street','home street');
        req.addParameter('residential_zip','sl21dp');
        req.addParameter('own_a_property','false');
        req.addParameter('same_as_residency','false');
        req.addParameter('property_city','');
        req.addParameter('property_country','');
        req.addParameter('property_state','');
        req.addParameter('property_street','');
        req.addParameter('property_zip','');
        req.addParameter('allow_credit_search','true');
        req.addParameter('allow_engaging_card_provider','true');
        RestResponse res = new RestResponse();
        RestContext.request = req;
        RestContext.response = res;
        NS_WS_Lead_update.doUpdate();
      }
  }
}