You need to sign in to do that
Don't have an account?
Sfdc Admin
Can anyone help me with the testclass for above code.?
Thank you.
test class for super clone
public class SuperCloneService { public Id doClone(String parentId) { Set<String> querySobject = new Set<String>(); for(Super_Clone_Objects__mdt m : [select Id, DeveloperName, Label, API_Name__c from Super_Clone_Objects__mdt ]){ querySobject.add(m.API_Name__c) ; } Map <String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe(); String objectAPIName = ''; String keyPrefix = parentId.substring(0,3); for( Schema.SObjectType obj : schemaMap.Values() ){ String prefix = obj.getDescribe().getKeyPrefix(); if(prefix == keyPrefix){ objectAPIName = obj.getDescribe().getName(); break; } } Set <String> fieldMap = schemaMap.get(objectAPIName).getDescribe().fields.getMap().keySet(); List<String> finalFields = new List<String>() ; finalFields.addAll(fieldMap); SObjectType objToken = Schema.getGlobalDescribe().get(objectAPIName); DescribeSObjectResult objDef = objToken.getDescribe(); Map<String,String> so = new Map<String,String>(); Map<String,String> so1 = new Map<String,String>(); for (Schema.ChildRelationship cr: objDef.getChildRelationships()) { if(cr.getField().getDescribe().isAccessible()&& cr.getField().getDescribe().isCreateable()&&cr.getField().getDescribe().isAccessible() && cr.getRelationshipName()!=null){ if(querySobject.contains(''+cr.getChildSObject())){ so.put(''+cr.getChildSObject() , ''+cr.getRelationshipName()); so1.put(''+cr.getRelationshipName() , ''+cr.getField()); } } } List<String> subqueries = prepareSubqueries(so, schemaMap); String query = 'SELECT ' + String.join(finalFields, ',')+ ','+String.join(subqueries, ',') + ' FROM ' +objectAPIName + ' WHERE Id = \''+parentId+'\''; List<Sobject> parentObj = Database.query(query); Sobject parentRecordId = parentObj[0]; Sobject clonedRecord = parentRecordId.clone(); insert clonedRecord; List<sObject> childObjects =cloneChildren(parentRecordId, clonedRecord, so ,so1); insert childObjects; List<Attachment> attachmentsToInsert = new List<Attachment>(); insert attachmentsToInsert; System.debug('clonedRecord'+clonedRecord.Id); return clonedRecord.Id ; } private List<sObject> cloneChildren( Sobject parent, Sobject child, Map<String , String> childRelatedListObjects, Map<String , String> childRelatedListObjects1 ){ List<sObject> childObjects = new List<SObject>(); for (String childObjectDefinition : childRelatedListObjects.values()) { List<sObject> parentRecords = parent.getSObjects(childObjectDefinition); System.debug('parentRecords'+parentRecords); if (parentRecords != null) { List<sObject> records = parentRecords.deepClone(); System.debug('records'+records); for (sObject record : records) { record.put(childRelatedListObjects1.get(childObjectDefinition), child.Id); } childObjects.addAll(records); } } return childObjects; } private List<String> prepareSubqueries( Map<String , String> childrelatedListObjects, Map <String, Schema.SObjectType> schemaMap ){ List<String> subqueries = new List<String>(); for(String childObject : childrelatedListObjects.keySet()){ List<String> childFields = new List<String>(); Map <String, Schema.SObjectField> fieldMap = schemaMap.get(childObject).getDescribe().fields.getMap(); System.debug('fieldMap'+fieldMap); for(Schema.SObjectField sof : fieldMap.values()){ DescribeFieldResult dfr = sof.getDescribe(); if(dfr.isCreateable()){ childFields.add(dfr.getName()); } } if(!childFields.isEmpty()){ String query = '(SELECT ' + String.join(childFields, ',') + ' FROM ' + childrelatedListObjects.get(childObject) + ')'; subqueries.add(query); } } return subqueries; } }Hello Everyone,
Can anyone help me with the testclass for above code.?
Thank you.