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
Sai ThejaSai Theja 

Help me in Code Coverage of webservice test class

Hello, i want test class for the below Apex Webservice Class:


Global Class AgileClient{ 
public AgileClient(ApexPages.StandardController controller) {
}
webservice static void SyncClient()
{   
String currentRecordId;
currentRecordId  = ApexPages.CurrentPage().getparameters().get('id');
Account a = [SELECT Id,Name,Client_City__c,Payroll_Contact__c,client_Id__c, Client_Address__C,Client_Zip__c ,Primary_Contact__c,Primary_Contact_Text__c,Primary_Contact__r.Phone,Primary_Contact__r.Email,Payroll_Contact_Text__c,Phone__c,Client_State__c , Contact_Name__c, Phone,(select Name, Email from contacts),(select Name from location__r)  from Account where id =: currentRecordId] ;  
//if(a.client_Id__c != null){
//ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, 'Already Synced with Agile'));
//}
//else{
JSONGenerator gen = JSON.createGenerator(true);    
gen.writeStartObject(); 
createJsonRequest.writeStringField(gen, 'name', a.name);
createJsonRequest.writeStringField(gen, 'city',a.Client_City__c);
createJsonRequest.writeStringField(gen, 'address_line_1',a.Client_Address__C);
createJsonRequest.writeStringField(gen, 'state_code',a.Client_State__c);
createJsonRequest.writeStringField(gen, 'zip_code',a.Client_Zip__c );
createJsonRequest.writeStringField(gen, 'sf_id',a.Id);
gen.writeFieldName('primary_contact_attributes');
gen.writeStartObject();        
createJsonRequest.writeStringField(gen, 'name',  a.Primary_Contact_Text__c);
createJsonRequest.writeStringField(gen, 'email', a.Primary_Contact__r.Email);
createJsonRequest.writeStringField(gen, 'phone', a.Primary_Contact__r.Phone);
gen.writeEndObject();    
gen.writeFieldName('payroll_contact_attributes');
gen.writeStartObject();        
createJsonRequest.writeStringField(gen, 'name', a.Payroll_Contact_Text__c);
createJsonRequest.writeStringField(gen, 'phone', a.Phone__c);  
gen.writeEndObject();    
    String jsonS = gen.getAsString();
System.debug('Client Data'+jsonS);

Http http = new Http();
HttpRequest request = new HttpRequest();
request.setEndpoint('https://api-qa.retrotax-aci.com/clients');
request.setMethod('POST');
request.setHeader('X-AUTH-TOKEN','xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
request.setHeader('X-API-KEY', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
request.setHeader('Content-Type', 'application/json;charset=UTF-8');
// Set the body as a JSON object
request.setBody(jsonS );
HttpResponse response = http.send(request);
// Parse the JSON response
if (response.getStatusCode() == 200) {
try {
    Account result = (Account)JSON.deserialize(response.getBody(), Account.class);
    a.client_Id__c = String.valueOf(result.id);
Update a;
ApexPages.addMessage(new ApexPages.message(ApexPages.severity.CONFIRM,'Client Created Successfully'));

} catch(DmlException e) {
    ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, e.getMessage()));
}

//System.debug('Account:'+result.id);
// System.debug('Client Created Successfully: ' +
//   response.getStatusCode() + ' ' + response.getBody());
} else {
    System.debug('Unable to create Client: ' +
        response.getStatusCode() + ' ' + response.getBody());
     ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, response.getBody()));
}
//}
}
}
Raj VakatiRaj Vakati
Use this
 
@isTest
global class AgileClientMock implements HttpCalloutMock {
    // Implement this interface method
    global HTTPResponse respond(HTTPRequest request) {
        // Create a fake response
        HttpResponse response = new HttpResponse();
        response.setHeader('Content-Type', 'application/json');
        response.setBody('JSON BODY HERE ');
        response.setStatusCode(200);
        return response; 
    }
}
 
@isTest public class AgileClientTest {
 
 
public static testmethod void testMethodExecution(){
   
   Account accoObj = new Account();
    accoObj.Name  = 'testAcc';
    accoObj.Location__c = 'testLocation';
    accoObj.Type = 'CM';
    accoObj.BillingCountry = 'United States';
    insert  accoObj;
	
	 Contact conObj = new Contact();
    conObj.FirstName = 'test';
    conObj.LastName = 'testLastname';
    conObj.AccountId = accoObj.Id;
    conObj.Email = 'abc@gmail.com';
	conObj.Phone ='1231231232';
	insert conObj ;
	
	Case caseObj = new Case();
    caseObj.ContactId = conObj.Id;
    caseObj.Status = 'Open';
	caseObj.Client_City__c ='Test' ;
	caseObj.Client_Address__C='Test' 
	caseObj.Client_State__c='Test' 
	caseObj.Client_Zip__c ='12323' 
	
	
    caseObj.Subject = 'TestSubject';
    caseObj.Description = 'TestDescription';
    // Add all other fields 
	insert caseObj;
	
	  ApexPages.StandardController sc = new ApexPages.StandardController(pay);
     AgileClient cln = new AgileClient(sc);
    Test.setMock(HttpCalloutMock.class, new AgileClientMock()); 

     PageReference pageRef = Page.YOURPAGENAME;
     pageRef.getParameters().put('Id', String.valueOf(caseObj.Id));
     Test.setCurrentPage(pageRef);  
	 cln.SyncClient();
	 
	}
}

 
ForceRookieForceRookie
Hi Raj Vakati, you are the most API brilliant here.. can you help me with my question here, please? https://developer.salesforce.com/forums?id=9062I000000IGicQAG
Raj VakatiRaj Vakati
CLose this thread if its solved