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
Akshay ShrivastavaAkshay Shrivastava 

Test class for Salesforce Rest API

I am trying to create test class of below apex class . can anyone help me on this.

public class SoftWebhookHandler {
    private static final Map<String, Sobject> SOBJECT_LIST_CONST = new Map<String, Sobject>{'Lead'=>new Lead()};
        
        public static void SoftOperationManager(String responseData){
            
        }
    public static Map<String, Object> getSerializeData(String responseData){
        Map<String, Object> returnData = (Map<String, Object>)JSON.deserializeUntyped(responseData);
        return returnData;
    }
    public static wrapper getSobjectFields(String sObjectName){
        String commaSepratedFields = '';
        if(sObjectName != null && sObjectName != ''){
            Map<String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe();
            Map<String, Schema.SObjectField> fieldMap = schemaMap.get(sObjectName).getDescribe().fields.getMap();
            map<string,string> wrapperMap = New Map<String,string>();
            commaSepratedFields = 'Id';
            for(String fieldName : fieldMap.keyset()){
                Schema.DescribeFieldResult a_Field_Description = fieldMap.get( fieldName ).getDescribe();
                wrapperMap.put(fieldName,string.valueof(a_Field_Description.getType()));
               if(fieldName!='Id')
                    commaSepratedFields = commaSepratedFields + ', ' + fieldName;
            }
            system.debug('before'+wrapperMap.size());
            wrapper returnWrapper = new wrapper(commaSepratedFields,wrapperMap);
            system.debug('after'+returnWrapper.metadata.size());
            return returnWrapper;
            
            
        }
        return null;
    }
    
    //Post
    public static String  SoftPostOperation(String responseData,String URI){
        List<String> responseDataList=URI.split('/'); 
        String EasySoft_Lead_Id='';
        Map<String, Object> returnData = (Map<String, Object>)JSON.deserializeUntyped(responseData);
        String SobjName=responseDataList.get(responseDataList.size()-1);
        map<string,string> getMetaData = SoftWebhookHandler.getSobjectFields(SobjName).metadata;
        system.debug(getMetaData.size());
        Schema.SObjectType convertType = Schema.getGlobalDescribe().get(SobjName);
        Sobject genericObject = convertType.newSObject();
        for(string k : getMetaData.keyset()){
        system.debug('post  =  '+k+'==='+getMetaData.get(k));
        }
        for(string ApiName : returnData.keyset()){
            system.debug('ApiName'+ApiName);
            string ApiNametocheck=ApiName.toLowercase();
            system.debug(getMetaData.get(ApiName));
            if(SobjName=='Note__c' && ApiName=='Soft_Lead_Id__c' && (String)returnData.get(ApiName)!=null){
                
                EasySoft_Lead_Id=(String)returnData.get(ApiName);
            }
            if(getMetaData.get(ApiNametocheck)=='DATETIME'){
                genericObject.put(ApiName,Datetime.valueOf(string.valueOf(returnData.get(ApiName))));
            }
            ELSE if(getMetadata.get(ApiNametocheck)=='DATE'){
                genericObject.put(ApiName,Date.valueOf(string.valueOf(returnData.get(ApiName))));
            }
            ELSE if(getMetadata.get(ApiNametocheck)=='BOOLEAN'){
                genericObject.put(ApiName,Boolean.valueOf(string.valueOf(returnData.get(ApiName)))); 
            }
            else
                genericObject.put(ApiName,returnData.get(ApiName));    
        }
        if(SobjName=='Lead')
            Database.upsert(genericObject,Lead.Soft__c);
        else{
            list<Lead> LeadList=new list<Lead>();
            if(Soft_Lead_Id!=null){
                LeadList=[SELECT id from lead where Soft__c=:Soft_Lead_Id];
                if(LeadList.size()>0){
                    genericObject.put('Lead__c',LeadList[0].Id);
                }
            }
            Database.upsert(genericObject,note__c.Soft_Id__c );
        }
        
        return  JSON.serializePretty(genericObject);
    }
    
    //Get
    public static String SoftGetOperation(String responseData){
        List<String> responseDataList=responseData.split('/');  
        Sobject recordDetails;
        String recordId=responseDataList.get(responseDataList.size()-1);
        String sObjectName=responseDataList.get(responseDataList.size()-2);
        if(recordId!=null){
            wrapper wrpperRes  = SoftWebhookHandler.getSobjectFields(sObjectName);
            string fieldsList= wrpperRes.commaSepratedFields;
            String query = 'select ' + fieldsList + ' from ' + sObjectName + ' WHERE EasySoft__c  =:recordId OR Id =:recordId limit 1 ';
            List<Sobject> queryData = Database.query(query);
            if(!queryData.isEmpty()){
                recordDetails = queryData[0];
                return  JSON.serializePretty(recordDetails);
            }else{
                return 'No record found';
            }
        }
        return null;
    }
    public class wrapper {
        public string commaSepratedFields {get;set;}
        public map<string,string> metadata{get;set;}
        public wrapper(string commaSepratedFields1, map<string,string> metadata1){
            commaSepratedFields=commaSepratedFields1;
            metadata=metadata1;
        }
    }
}

Thanks
PriyaPriya (Salesforce Developers) 
Hey Akshay,

Kindly share the test class code you attempted if any.

Note:- 

The developer community recommends providing any attempts/code you've started, any errors you're getting, or where exactly you're struggling in achieving this while posting a question.


Regards,

Priya Ranjan

Akshay ShrivastavaAkshay Shrivastava
Hi Priya,
It's done.

Thanks for replying.