1

I am trying to cover this class but unable to cover url = '/servlet/servlet.FileDownload?file='+lstDocument[0].id; and pagereference method. Need help in increasing test coverage.

Class:

public class documentctr {

public String docName{get;set;}
public String url{get;set;}

public documentctr(){

    if(ApexPages.CurrentPage().getParameters().get('doc') != null){

        docName =  ApexPages.CurrentPage().getParameters().get('doc');
        List<Document> lstDocument = [select id from Document where DeveloperName =: docName];    
        if(lstDocument.size() > 0){
            url = '/servlet/servlet.FileDownload?file='+lstDocument[0].id;
        }
    }
}

public pagereference returnUrl(){

    if(url != null){
        pagereference page = new pagereference(url);
        page.setRedirect(true);
        return page;
    }
    return null;
}

}

Test Class:

@isTest

public class documentctrTracker{

static Folder objFolder;
public String url;

static testMethod void firstMethod() {

    loadData();


    documentctr ob1 = new documentctr();
    PageReference pageRef = ob1 .returnUrl();
    //ob1.returnUrl();

    PageReference newPage = Page.pvdocload;
    Test.setCurrentPage(newPage);
    newPage.getParameters().put('doc','newFile');
    //ApexPages.currentPage().getParameters().put('doc','newFile');
    documentctr ob = new documentctr();
    ob.returnUrl();
}

static void loadData(){

    insertFolder();
    insertDocument();
}

static void insertFolder(){

    objFolder = [select id from Folder where Type = 'Document' limit 1];        
}

static void insertDocument(){  

    Document obj = new Document();
    obj.Name = 'newFile';
    obj.FolderId = objFolder.Id;
    insert obj;


   // ApexPages.currentPage().getParameters().put('doc','newFile');
    ApexPages.Standardcontroller sc = new ApexPages.Standardcontroller(obj);
    documentctr ob1 = new documentctr();

    try{
    PageReference newPage = Page.pvdocload;
    Test.setCurrentPage(newPage);
    newPage.getParameters().put('doc','newFile');
    ob1.returnUrl();
    }
    catch(DmlException e){
    }
}
  • Have you tried adding `Test.setCurrentPage(ob1)'; right above the 'returnURL' call in your test class? – Sebastian Kessel Apr 18 '16 at 15:13
  • yes but its not working. – rajat bhatia Apr 18 '16 at 15:22
  • I posted an answer. If it still doesn't work make sure to update your sample code so others (and I) can see what your new code looks like,. – Sebastian Kessel Apr 18 '16 at 15:25
0

Do the following:

Add the line below right above the 'returnURL':

PageReference newPage = Page.pvdocload;
Test.setCurrentPage(newPage);

Change the parameter line to

newPage.getParameters().put('doc','newFile');

In your code, change System.currentPageReference() to ApexPages.CurrentPage()

  • its throwing Error: Compile Error: Method does not exist or incorrect signature: [documentctr].getParameters() at line 42 column 9 – rajat bhatia Apr 18 '16 at 15:37
  • You're right. My Bad. Can you please share with me the name of your VF page? (The one documentctr is the controller for) – Sebastian Kessel Apr 18 '16 at 15:38
  • its "apex/pvdocload – rajat bhatia Apr 18 '16 at 15:41
  • Just updated my code samples – Sebastian Kessel Apr 18 '16 at 15:46
  • pvdocload newPage = Page.pvdocload; it will throw Compile Error: Invalid type: pvdocload – rajat bhatia Apr 18 '16 at 15:55
0

It seems you are searching a document by its developer name in class and no value is provided for developer name of document in test class. Therefore, Please provide the same value that you are looking for and it's better to have logged in user / running user's id as folder id of the document you are querying for. So the snippet of insert document function will look like this:-

Document recordDocument = new Document ( Name = 'newFile', DeveloperName = 'newFile', FolderId = UserInfo.getUserId() ); insert recordDocument;

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.