You need to sign in to do that
Don't have an account?

How to write a Test class for Importing a CSV File ?
Hello,
Here i am tried to write a test class for importing csv file.THere is no code coverage.Plese help me on this.
Controller Class-
public class adminPriorSale {
public list<Sales__c> accon{get;set;}
public Sales__c agnt{get;set;}
public Blob csvFileBody{get;set;}
public string csvAsString{get;set;}
public String[] csvFileLines{get;set;}
public adminPriorSale(apexpages.standardcontroller controller )
{
agnt = new Distributor_Prior_Sales__c();
accon = New List<Distributor_Prior_Sales__c>();
accon=[selectid,Name,SMS_sales_amount__c,SMS_Year__c,Exhibit_A_Customer__c,Calculation_Type__c from Distributor_Prior_Sales__c];
csvFileLines = new String[]{};
}
public void importCSVFile(){
try{
csvAsString = csvFileBody.toString();
csvFileLines = csvAsString.split('\n');
for(Integer i=0;i<csvFileLines.size();i++){
Sales__c prisale = new Sales__c () ;
string[] csvRecordData = csvFileLines[i].split(',');
prisale.Year__c= csvRecordData[0] ;
prisale.sales_amount__c= Decimal.valueof(csvRecordData[1]);
prisale.Customer__c= csvRecordData[2];
prisale.Calculation_Type__c = csvRecordData[3];
accon.add(prisale);
}
upsert accon;
}
catch (Exception e)
{
ApexPages.Message errorMessage = new ApexPages.Message(ApexPages.severity.ERROR,e.getMessage());
ApexPages.addMessage(errorMessage);
}
}
}
Testclass-
@isTest
private class test_ExhibitAadminPriorSale {
static testMethod void test_ExhibitAadminPriorSale4()
{
// Distributor_Prior_Sales__c t1= new Distributor_Prior_Sales__c ();
//t1.Name='test1';
//t1.SMS_sales_amount__c =123;
//t1.SMS_Year__c='2014';
// insert t1;
Document lstDoc = [select id,name,Body from Document where name = 'accttest'];
ExhibitAadminPriorSale file=new ExhibitAadminPriorSale ();
file.fileAccess();
Blob content= lstDoc.Body;
file.csvFileBody = content;
file.importCSVFile();
file.csvAsString =content.toString();
String[] csvFileLines = new String[]{};
List accon;
accon = new List();
for (Integer i=1;i<csvFileLines.size();i++)
{
String[] csvRecordData = new String[]{};
csvRecordData = csvFileLines [i].split(',');
//Distributor_Prior_Sales__c a = new Distributor_Prior_Sales__c ();
Distributor_Prior_Sales__c t1= new Distributor_Prior_Sales__c ();
t1.Name='test1';
t1.SMS_sales_amount__c =123;
t1.SMS_Year__c='2012';
t1.Exhibit_A_Customer__c='I Architects';
t1.Calculation_Type__c='Estimated Prior sales';
t1.RecordTypeId = '0011900000AFc6c';
accon.add(t1);
try{
insert accon;
}
catch (Exception e)
{
ApexPages.Message errormsg = new ApexPages.Message(ApexPages.severity.ERROR,'An error has occured. Please check the template');
ApexPages.addMessage(errormsg);
}
}
}
Here i am tried to write a test class for importing csv file.THere is no code coverage.Plese help me on this.
Controller Class-
public class adminPriorSale {
public list<Sales__c> accon{get;set;}
public Sales__c agnt{get;set;}
public Blob csvFileBody{get;set;}
public string csvAsString{get;set;}
public String[] csvFileLines{get;set;}
public adminPriorSale(apexpages.standardcontroller controller )
{
agnt = new Distributor_Prior_Sales__c();
accon = New List<Distributor_Prior_Sales__c>();
accon=[selectid,Name,SMS_sales_amount__c,SMS_Year__c,Exhibit_A_Customer__c,Calculation_Type__c from Distributor_Prior_Sales__c];
csvFileLines = new String[]{};
}
public void importCSVFile(){
try{
csvAsString = csvFileBody.toString();
csvFileLines = csvAsString.split('\n');
for(Integer i=0;i<csvFileLines.size();i++){
Sales__c prisale = new Sales__c () ;
string[] csvRecordData = csvFileLines[i].split(',');
prisale.Year__c= csvRecordData[0] ;
prisale.sales_amount__c= Decimal.valueof(csvRecordData[1]);
prisale.Customer__c= csvRecordData[2];
prisale.Calculation_Type__c = csvRecordData[3];
accon.add(prisale);
}
upsert accon;
}
catch (Exception e)
{
ApexPages.Message errorMessage = new ApexPages.Message(ApexPages.severity.ERROR,e.getMessage());
ApexPages.addMessage(errorMessage);
}
}
}
Testclass-
@isTest
private class test_ExhibitAadminPriorSale {
static testMethod void test_ExhibitAadminPriorSale4()
{
// Distributor_Prior_Sales__c t1= new Distributor_Prior_Sales__c ();
//t1.Name='test1';
//t1.SMS_sales_amount__c =123;
//t1.SMS_Year__c='2014';
// insert t1;
Document lstDoc = [select id,name,Body from Document where name = 'accttest'];
ExhibitAadminPriorSale file=new ExhibitAadminPriorSale ();
file.fileAccess();
Blob content= lstDoc.Body;
file.csvFileBody = content;
file.importCSVFile();
file.csvAsString =content.toString();
String[] csvFileLines = new String[]{};
List accon;
accon = new List();
for (Integer i=1;i<csvFileLines.size();i++)
{
String[] csvRecordData = new String[]{};
csvRecordData = csvFileLines [i].split(',');
//Distributor_Prior_Sales__c a = new Distributor_Prior_Sales__c ();
Distributor_Prior_Sales__c t1= new Distributor_Prior_Sales__c ();
t1.Name='test1';
t1.SMS_sales_amount__c =123;
t1.SMS_Year__c='2012';
t1.Exhibit_A_Customer__c='I Architects';
t1.Calculation_Type__c='Estimated Prior sales';
t1.RecordTypeId = '0011900000AFc6c';
accon.add(t1);
try{
insert accon;
}
catch (Exception e)
{
ApexPages.Message errormsg = new ApexPages.Message(ApexPages.severity.ERROR,'An error has occured. Please check the template');
ApexPages.addMessage(errormsg);
}
}
}
For importing your CSV files into test classes, try this method.. First, Store your CSV files in Static Resources..Then Include the below line in test class.
consider You are dealing with Account Sobject.
====================================================
List<sObject> acct = Test.loadData(Account.sObjectType, 'acctList');
=====================================================
acctList--> Name of the static Resource.
Thanks
Vignesh P.
Thanks for your reply but I am unable to get u here. Can i Store my CSV files in Static Resources in the Controller class ?
Use @IsTest(seeAllData=true) in test class
Thanks a lot for your reply but it doesnot work.
First you have to store document "accttest" in your org. and add csv file in it .
There is no Error in the code but it covers nothing.
The below is the code coverage shown :