You need to sign in to do that
Don't have an account?
Akshay 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
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
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
It's done.
Thanks for replying.