+ Start a Discussion
Samadhan DaudSamadhan Daud 

How to write test class in this class?

ublic class MyUploadStatementController {
    public String LeadsId {get;set;}
    public List<Attachment> docs{get;set;}
    public List<Attachment> insertedDocs{get;set;}
    public string attNames{get;set;}
    public MyUploadStatementController(){
        LeadsId = ApexPages.currentPage().getParameters().get('Id');
        system.debug('LeadId -->'+LeadsId);
        attNames = '';
        docs = new List<Attachment>();
        insertedDocs = new List<Attachment>();
    public pagereference prepareSFDocuments(){           
            attNames = attNames.removeEnd('\n');
            List<string> atts = attNames.split('\n');        
            //sfDocs = new List<SFDocument>();       
            for(String attName:atts){
                List<string> nameSplit = attName.split('\t');
                system.debug('Attname just '+attName);
                Attachment doc = new Attachment(Name=nameSplit[0], ParentId=LeadsId );
                system.debug('Debug Docs '+docs);
                //SFDocument d = new SFDocument(nameSplit[0], leadobj.id,Long.valueOf(nameSplit[1]),getDisplaySize(Long.valueOf(nameSplit[1])));
            System.debug('Attachment List-->'+docs);
        }catch(Exception ex){ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.ERROR, ex.getMessage()+'\n'+ex.getStackTraceString());
        return null;
    public pagereference updateDocs(){
            system.debug('Dropbox docs '+docs);
            for(Attachment da : docs){
                system.debug('Inside For Loop DropBox '+da);
                da.ParentId = LeadsId;
                insert docs;
            docs = new List<Attachment>();
        }catch(Exception ex){
            ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.ERROR, ex.getMessage());
        return null;
    public static void UploadAttachment(String LeadId){
Best Answer chosen by Samadhan Daud
Since writing a test class to cover all of the facets of this class is not something that anyone on here will do for you, I can give you some pointers and hopefully get you started.  I would recommend that you do some reading on testing [1] [2] [3] [4] to get a better understanding.  Each of your individual tests should only tests one specific portion of you class (ie a constructor test, sendEmail test, contactSelected test, etc).  You should also have both a postitive (everything works perfectly) and a negative (things are not right) test.

Each test should follow the following structure:
  • Setup of test data. This includes creation of any data needed by your class.  Account, Contacts etc
  • Starting the test. This is calling Test.startTest() to reset the governor limits
  • Calling your class / method
  • Stopping the test.This is calling Test.stopTest() to reset the governor limits and allow for any async jobs to finish
  • Asserting that your changes have worked
    • If you have inserted/updated/deleted data, you need to query for the updates
    • Run System.assert, System.assertEquals, System.assertNotEquals to verify that you got the correct data back
If you have any specific problems with your tests, feel free to create a new post with the part of the class you are trying to test and your current test method, and you will more likely get a better response then asking for someone to essentially write an entire test class for you.

[1] http://www.sfdc99.com/2013/05/14/how-to-write-a-test-class/
[2] http://pcon.github.io/presentations/testing/
[3] http://blog.deadlypenguin.com/blog/2014/07/23/intro-to-apex-auto-converting-leads-in-a-trigger/
[4] http://blog.deadlypenguin.com/blog/testing/strategies/