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
Lokesh Rayapati4Lokesh Rayapati4 

Need help developing a test class for 100 percent code coverage. Can someone please help???

public with sharing class Auracsv {
    @AuraEnabled
    public static void processData(String fileData,String sobjectName,List<String> fields) {
        
        Schema.SObjectType targetType = Schema.getGlobalDescribe().get(sobjectName);
        try{
            if(fileData!=null){ 
                String[] fileLines = new String[]{};
                    fileLines = fileData.split('\n');
                    
                List<sObject> myList = new List<sObject>();
                for (Integer i=1,j=fileLines.size();i<j;i++){
                    String[] inputvalues = new String[]{};
                        inputvalues = fileLines[i].split(',');
                    sObject obj = targetType.newSObject();
                    integer rowsize=inputvalues.size();
                    
                    for(integer l=0;l<rowsize-1;l++){
                        system.debug('fields.get(l)'+fields.get(l)); 
                        if(String.isNotBlank(inputvalues[l]) )
                        {
                            String value= inputvalues[l].length()>255 ? inputvalues[l].substring(0,254) : inputvalues[l];
                            obj.put(fields.get(l),value);
                        }else{
                            obj.put(fields.get(l),'');
                        }
                           
                    }
                    myList.add(obj);   
                }
                insert myList;
            
            }
            
        }catch(Exception e){
            System.debug('exception'+e);   
        }  
    }
    
    @AuraEnabled
    public static List<Map<string,string>> getObjectList()
    {
        List<Map<string,string>> SObjectList = new List<Map<string,string>>();
        
        for(Schema.SObjectType objTyp : Schema.getGlobalDescribe().Values()){
            String name = objTyp.getDescribe().getName();
            SObjectList.add(new Map<string,string>{'label'=>name,'value'=>name});
            System.debug('name'+name);
            
        }
        return SObjectList;  
        
    }
    
    @AuraEnabled
    public static List<Sobject> updateData(string objectName, string file){
        system.debug('Json : '+file+'----------'+objectName);
        Blob json = EncodingUtil.base64Decode(file);
        system.debug('Json file : '+json.tostring());
        String[] fileLines = json.tostring().split('\n');
        string[] headers = fileLines[0].split(',');
        List<Sobject> objectList = new List<Sobject>();
        for(integer i=1; i<fileLines.size() ;i++){
            string[] rows = fileLines[i].split(',');
            sObject sObj = Schema.getGlobalDescribe().get(objectName).newSObject();
            for(integer j=0;j<headers.size();j++){
                sObj.put(headers[j].trim(), rows[j].trim());
            }
            objectList.add(sObj);
            
        }
        system.debug('Object : '+objectList);
        insert objectList;
        return objectList;
    }
}

Heres my WIP test class code====

@isTest
public class TestAuracsv {
    public static String[] csvFileLines;
    public static Blob csvFileBody;
    
     @TestSetup
    static void Accountdata(){
        Account acc = new Account();
        acc.Name = 'Lokesh';
        acc.AccountNumber = '56293723';
        acc.Type = 'Other';
        acc.Industry = 'Chemicals';
        insert acc; 
    }
    @IsTest
    static void testmethod1(){
        Account acc = new Account();
        acc.Name = 'Lokesh';
        insert acc;
        
        Test.startTest();       
        csvFileBody = Blob.valueOf(str);
        String csvAsString = csvFileBody.toString();
     
        AccountListController.updateData('Account', EncodingUtil.base64Encode(Blob.valueOf(str)));
        AccountListController.getObjectList();
         
    }
}

As I'm newbiee.There are some errors in test class and I'm trying to clear that.

 
Best Answer chosen by Lokesh Rayapati4
Suraj Tripathi 47Suraj Tripathi 47

Hi,

Please find the solution.

@isTest
public class YAauraApexTest {
    static String str = 'Name,AccountNumber,Type,Accountsource,Industry\n Esha Patharabe,10001,Prospect,Test,Banking\n Trupti Nimje,10002,Prospect,Test,Banking';       

    public static String[] csvFileLines;
    public static Blob csvFileBody;
    
    @isTest
    public static void processDataTest()
    {
	List<String> fieldList=new List<String>();
	fieldList.add('Name');
	fieldList.add('Phone');
    
	Test.startTest();
         csvFileBody = Blob.valueOf(str);
        String csvAsString = csvFileBody.toString();
      
	Auracsv.processData(csvAsString,'Account',fieldList);
	Auracsv.getObjectList();
         String fileDateBase64 = EncodingUtil.base64Encode(csvFileBody);        
	Auracsv.updateData('Account',fileDateBase64);
	Test.stopTest();
	
	}
    
}

Please let me know it is working or not?

Please mark it as the Best Answer so that other people would take references from it.

Thank You

All Answers

AbhinavAbhinav (Salesforce Developers) 
Hi Lokesh,

Please mention the error which you are getting or highlight the part where you getting stuck to get the coverage so that community can help you better.

Thanks!
Suraj Tripathi 47Suraj Tripathi 47

Hi,

Please find the solution.

@isTest
public class YAauraApexTest {
    static String str = 'Name,AccountNumber,Type,Accountsource,Industry\n Esha Patharabe,10001,Prospect,Test,Banking\n Trupti Nimje,10002,Prospect,Test,Banking';       

    public static String[] csvFileLines;
    public static Blob csvFileBody;
    
    @isTest
    public static void processDataTest()
    {
	List<String> fieldList=new List<String>();
	fieldList.add('Name');
	fieldList.add('Phone');
    
	Test.startTest();
         csvFileBody = Blob.valueOf(str);
        String csvAsString = csvFileBody.toString();
      
	Auracsv.processData(csvAsString,'Account',fieldList);
	Auracsv.getObjectList();
         String fileDateBase64 = EncodingUtil.base64Encode(csvFileBody);        
	Auracsv.updateData('Account',fileDateBase64);
	Test.stopTest();
	
	}
    
}

Please let me know it is working or not?

Please mark it as the Best Answer so that other people would take references from it.

Thank You

This was selected as the best answer
Lokesh Rayapati4Lokesh Rayapati4
Thank you so much @Suraj Tripathi. Your answer helped me a lot.