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
Thanigai Kumaran BalajiThanigai Kumaran Balaji 

Help with test class for exporting object details as CSV file

Please help me with test case for below batch apex



global class exportobjectascsvbatch implements Database.Batchable <SObject>{
global Database.QueryLocator start (Database.BatchableContext bc)
{
    String SobjectApiName = 'Opportunity';
Map<String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe();
Map<String, Schema.SObjectField> fieldMap = schemaMap.get(SobjectApiName).getDescribe().fields.getMap();
String query = 'Select ';
for(String fieldName : fieldMap.keyset() )
    {
        query += fieldname+',';   
        }

query = query.removeEnd(',');
query += ' from Opportunity where lastmodifieddate = today';
    return Database.getQueryLocator(query);
}
   global void execute(Database.BatchableContext bc, List<Opportunity> OppList)
   {
       try{     
String SobjectApiName = 'Opportunity';
Map<String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe();
Map<String, Schema.SObjectField> fieldMap = schemaMap.get(SobjectApiName).getDescribe().fields.getMap();
String generatedCSVFile = '';
for(String fieldName : fieldMap.keyset() )
    {
        generatedCSVFile += fieldName +',';     
        }
generatedCSVFile = generatedCSVFile.removeEnd(',');
generatedCSVFile = generatedCSVFile + '\n'; 
for(Opportunity company: OppList){
  for(String fieldName : fieldMap.keyset() )
    {
        generatedCSVFile += company.get(fieldName)+ ',';     
        }
    generatedCSVFile = generatedCSVFile.removeEnd(',');
    generatedCSVFile = generatedCSVFile + '\n'; 
}
//send email with generated csv file
Messaging.EmailFileAttachment csvAttachment = new Messaging.EmailFileAttachment();
Blob csvBlob = blob.valueOf(generatedCSVFile);
String csvName = 'Opportunitybackup.csv';
csvAttachment.setFileName(csvName);
csvAttachment.setBody(csvBlob);
Messaging.SingleEmailMessage email = new Messaging.SingleEmailMessage();
String[] toAddresses = new String[]{'thanigai.k.balaji@apisero.com'};
String subject = 'Opportunity backup';
email.setSubject(subject);
email.setToAddresses(toAddresses);
email.setPlainTextBody('Opportunity backup');
email.setFileAttachments(new Messaging.EmailFileAttachment[]{csvAttachment});
Messaging.SendEmailResult[] r = Messaging.sendEmail(new Messaging.SingleEmailMessage[]{email});
       }
       catch(exception e)
       {
            system.debug('Exception Caught:'+e.getmessage());
       }
       }
       
    global void finish(Database.BatchableContext bc)
    {
    }  
}
 
Thanigai Kumaran BalajiThanigai Kumaran Balaji
Could you please give me test class for below code ?
public class exportopp { 

    public static void exportopp() {    
List<Opportunity> extractOpplist = new List<Opportunity>();

   List<Opportunity> OpportunityList = new List<Opportunity>();
        
String SobjectApiName = 'Opportunity';
Map<String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe();
Map<String, Schema.SObjectField> fieldMap = schemaMap.get(SobjectApiName).getDescribe().fields.getMap();
String query = 'Select ';
for(String fieldName : fieldMap.keyset() )
    {
        
        query += fieldname+',';
        
        }

query = query.removeEnd(',');
        
        query += ' from Opportunity where lastmodifieddate = yesterday';
       
system.debug(query);
List<Opportunity>  OppList = database.query(query);

system.debug(opplist);


String generatedCSVFile = '';
for(String fieldName : fieldMap.keyset() )
    {
        generatedCSVFile += fieldName +',';     
        }
generatedCSVFile = generatedCSVFile.removeEnd(',');
    generatedCSVFile = generatedCSVFile + '\n'; 


for(Opportunity company: OppList){
  
for(String fieldName : fieldMap.keyset() )
    {
        generatedCSVFile += company.get(fieldName)+ ',';     
        }
    generatedCSVFile = generatedCSVFile.removeEnd(',');
    generatedCSVFile = generatedCSVFile + '\n'; 
}
    
Messaging.EmailFileAttachment csvAttachment = new Messaging.EmailFileAttachment();
Blob csvBlob = blob.valueOf(generatedCSVFile);
String csvName = 'Opportunity backup.csv';
csvAttachment.setFileName(csvName);
csvAttachment.setBody(csvBlob);
Messaging.SingleEmailMessage email = new Messaging.SingleEmailMessage();
String[] toAddresses = new String[]{'thanigai.k.balaji@apisero.com'};
String subject = 'Opportunity backup';
email.setSubject(subject);
email.setToAddresses(toAddresses);
email.setPlainTextBody('Opportunity backup');
email.setFileAttachments(new Messaging.EmailFileAttachment[]{csvAttachment});
Messaging.SendEmailResult[] r = Messaging.sendEmail(new Messaging.SingleEmailMessage[]{email});
}
}
Thanigai Kumaran BalajiThanigai Kumaran Balaji
For some reason the above batch class is not working