+ Start a Discussion

Test Code Not Covering Class

The testr class below is not covering the class at all. Why and what do I need to change for the test class to cover the apex class?


Test code

@IsTest public class TestAddCustomerProductStage1create {

    /* This is a basic test which simulates the primary positive case for the 
       save method in the AddCustomerProduct class. */

public static testMethod void myUnitTest() {

    PageReference pageRef = Page.CustomerProductStage1create;
    Customer_Product_Line_Item__c c = new Customer_Product_Line_Item__c(name='Apple');
    insert c;
    System.assert (true, [select name from Customer_Product_Line_Item__c where name = 'Apple']);
    Account acc=new Account(Name='test', BillingStreet='test', BillingCity='NY', BillingState='test',
                BillingCountry='US', BillingPostalCode='test', ShippingStreet='test', ShippingCity='test',
                ShippingState='NY', ShippingCountry='US', ShippingPostalCode='test');
insert acc;                

Opportunity testOpp = new Opportunity(Name='TestOppty',closedate=date.parse('1/1/2222'),
                    stagename = 'prospecting',AccountID=acc.id,Equip_Services_Options_to_be_quoted__c='test', 
insert testOpp;   

Customer_Product_Line_Item__c testcp = new Customer_Product_Line_Item__c(Name='Apple',Opportunity__c = testOpp.id);
insert testcp;

               ApexPages.StandardController sc = new ApexPages.StandardController(testCP);     
     String cpUrl = '/apex/customerproductstage1create?oppid=' + testOpp.id;
     PageReference ref = new PageReference(cpUrl);
     Customer_Product_Line_Item__c cl = new Customer_Product_Line_Item__c(name='Apple');
    insert cl;

     /* Construct the standard controller for Customer Product. */

    Account ac=new Account(Name='test', BillingStreet='test', BillingCity='NY', BillingState='test',
                    BillingCountry='US', BillingPostalCode='test', ShippingStreet='test', ShippingCity='test',
                    ShippingState='NY', ShippingCountry='US', ShippingPostalCode='test');
    insert ac;
     Opportunity testpp = new Opportunity(Name='TestOppty',closedate=date.parse('1/1/2222'),
                        stagename = 'prospecting',AccountID=acc.id,Equip_Services_Options_to_be_quoted__c='test', 
    insert testpp;
    Customer_Product__c cp = new Customer_Product__c(Name='apple');
    insert cp;
    Customer_Product_Line_Item__c cpli = new Customer_Product_Line_Item__c (Name= cp.name, Opportunity__c=testpp.id);
    insert cpli;
          ApexPages.StandardController con = new ApexPages.StandardController(new Customer_Product_Line_Item__c());
    //  Customer_Product_Line_Item__c cplitem = Testaddcustomerproductstage1create.setupTest();
       PageReference p = new PageReference('/apex/CustomerProductStage1create');
       p.getParameters().put('oppid', testpp.id);
       ApexPages.currentPage().getParameters().put('oppid', testpp.id);

     public static void setupTest() {

        /* Create an account */
        Account a = new Account();
        a.name    = 'TEST';

        /* Get the standard pricebook. There must be a standard pricebook already 
           in the target org.  */
        Pricebook2 pb = [select name, isactive from Pricebook2 where IsStandard = true limit 1];

        if(!pb.isactive) {
            pb.isactive = true;

        /* Get a valid stage name */
        OpportunityStage stage = [select MasterLabel from OpportunityStage limit 1];

        /* Setup a basic opportunity */
        Opportunity o  = new Opportunity();
        o.Name         = 'TEST';
        o.AccountId    = a.id;
        o.CloseDate    = Date.today();
        o.StageName    = stage.masterlabel;
        o.Pricebook2Id = pb.id;

        /* Create the opportunity */
        Customer_Product_Line_Item__c cpli = new Customer_Product_Line_Item__c();
        cpli.name = 'Apple';
        cpli.Opportunity__c = o.id;

        PageReference pref = Page.CustomerProductStage1create;

   //     return null;


 Apex class

public class AddCustomerProductStage1create{

/* Constructor Function. The CustomerProduct id is captured in this function */

public Customer_Product_Line_Item__c cpl {get;set;}
public Opportunity o;
public AddCustomerProductStage1create(ApexPages.StandardController c)
            o = [select id from Opportunity where id =

      public Opportunity getOpportunity() {
            return o;

/* Variable declarations */

public List<cCustomer> cpList {get; set;}                              // Wrapper class which stores customer product data and a boolean flag.
public List<cCustomer> cpsel{get; set;}
public ID oid {get; set;}

String userinput;                                                               // cp Name
String userinp;  

Public List<Customer_Product__c> results = new List<Customer_Product__c>();                 // Customer_Product__c search results.

Public List<Customer_Product__c> selproduct = new List<Customer_Product__c>();                 // Customer_Product__c selectedproduct.

/* End of Variable declarations */

/* Getter and setter methods for getting the user input ie. Customer_Product__c name from the UI */

public String getuserinput(){return userinput;}
public void setuserinput(String userinp)


public String getselproduct(){return null;}

/*End of Getter and Setter methods */

/* Method to Search the Customer_Product__c database to return the query results */
public List<Customer_Product__c> cpsearch()
     cpList = new List<cCustomer>();
     for(Customer_Product__c c : [select id, name from Customer_Product__c where Name like :userinput+'%'order by Name asc])
         cpList.add(new cCustomer(c));
 return null;
/* End of method */

/* Method for returning the Customer Product search results to the UI */
public List<cCustomer> getresults(){
 return cpList;

    public PageReference processSelected() {

                //We create a new list of Customer Products that we be populated only with Customer Products if they are selected
        List<Customer_Product__c> selectedProduct = new List<Customer_Product__c>();

        //We will cycle through our list of cCustomer and will check to see if the selected property is set to true, 
        //if it is we add the Customer Product to the selectedProduct list
        for(cCustomer cCon : getresults()) {
            if(cCon.selected == true) {
        // Now we have our list of selected products and can perform any type of logic we want
        System.debug('These are the selected Products...');
        for(Customer_Product__c cCon : SelectedProduct ) {

    cpsel = new List<cCustomer>();
     for(Customer_Product__c p : [select name from Customer_Product__c where id =:selproduct])
       cpsel.add(new cCustomer(p));
        Customer_Product_Line_Item__c cpli = new Customer_Product_Line_Item__c(Name = cpsel[0].con.name, 
                Opportunity__c = o.id);
      insert cpli;
      system.debug('*****test cpli.name**********'+cpli.name);     
         PageReference home = new PageReference('/' + o.id);
        return home;

        return null;

/* Wrapper class to contain contact record and a boolean flag */
public class cCustomer{
 public Customer_Product__c con {get; set;}
 public Boolean selected {get; set;}

 /*This is the contructor method. When we create a new cContact object we pass a
 Contact that is set to the con property. We also set the selected value to false*/
 public cCustomer (Customer_Product__c c)
     con = c;
     selected = false;

/* end of Wrapper class */    


 Thank you

Best Answer chosen by Admin (Salesforce Developers) 

You probably need to pass parameters after creating the page reference


       pageRef.getParameters().put('oppid', <variable holding id>);