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
Amit_TrivediAmit_Trivedi 

Test class not getting full coverage

public class SurveyCntrl
{
    public Id oppId{get;set;}
    public Opportunity opp{get;set;}
    public Survey__c survey{get;set;}
    public List<QuestionWrapper> queWraList{get;set;}
  // public List<QuestionWrapper> optWraList{get;set;}
    public List<String> optWraList{get;set;}
   public integer srN {get; set;}
    Public Question__c que{get;set;}
    public Integer rowIndex { get; set; } 
    public boolean showAddQuestion {get; set;}
    public boolean showAddQues {get; set;}
    public List<AddOptWrapper> listValueOfTextBox{get;set;}                                      
    public SurveyCntrl(ApexPages.StandardController controller)
    {
           optWraList = new List<String>();
          oppId =  ApexPages.CurrentPage().getParameters().get('id');
          opp = [ Select Id,Name,StageName From Opportunity Where Id=:oppId]; 
          queWraList= new List<QuestionWrapper>();
        //  optWraList = new List<QuestionWrapper>();
          que = new Question__c();
          survey = new Survey__c(); 
          showAddQuestion = true;
          showAddQues = true;
          AddQuestion();
          listvalueOfTextBox = new List<AddOptWrapper>();  
             
         
           
    }
     public PageReference addTextBox()   
     {  
        
             listvalueOfTextBox.add(new  AddOptWrapper('TextBox' + (listvalueOfTextBox.size() +  1)));
             System.debug('####'+listvalueOfTextBox);  
      
     
         return ApexPages.currentPage();  
    } 
       public PageReference removeTextBox()   
            {  
               
                        listvalueOfTextBox.remove(listvalueOfTextBox.size()-1);  
                  
             
                return ApexPages.currentPage();  
            }   
    
    public PageReference oppDetail()
    {
        PageReference pg = new Pagereference('/apex/OpportunityDetail?id='+oppId);
        return pg; 
    }
   /* public Pagereference AddOption()
    { 
          QuestionWrapper qWra = new QuestionWrapper();
      
            qWra.question = new question__c();
            
           qWra.sr = optWraList.size() + 3;
           qWra.sr =  qWra.optWraList.size() + 3;
         // optWraList.add(qWra);
           return null;
      
     }
    public Pagereference RemoveOption()
    {
        //Integer rowNum = Integer.valueOf(ApexPages.currentPage().getParameters().get('rowIndex'));
        //System.debug('######'+rowIndex );
        Integer i=0;
      // i = optWraList.size()-1;
    // optWraList.remove(i);
        return null;
        
    }*/
    public Pagereference save()
    {
        List<question__c> queList = new List<question__c>();
        if(survey.name != null && survey.name != '')
        {
        
           survey.Opportunity__c = OppId;
           insert Survey;
           for(QuestionWrapper queWra : queWraList){
               question__c qs = new question__c();
               if(queWra.question.Question__c != null && queWra.question.Question__c != '')
               {
                  
                       qs.Question__c = queWra.Question.Question__c;
                       qs.Option_1__c = queWra.question.Option_1__c;
                       qs.Option_2__c = queWra.question.Option_2__c;
                      
                       //qs.Option_3__c = queWra.optWraList.get(0);
                       qs.Option_4__c = queWra.question.Option_4__c;
                       qs.Option_5__c = queWra.question.Option_5__c;
                       qs.Option_6__c = queWra.question.Option_6__c;
                       qs.Option_7__c = queWra.question.Option_7__c;
                       qs.Option_8__c = queWra.question.Option_8__c;
                       qs.Option_9__c = queWra.question.Option_9__c;
                       qs.Option_10__c = queWra.question.Option_10__c; 
                       qs.Is_Mandatory__c = queWra.question.Is_Mandatory__c;
                         System.debug('@@@@@'+queWra.question.Is_Mandatory__c) ;  
                       qs.Question_Type__c = queWra.question.Question_Type__c;
                           System.debug('@@@@@'+queWra.question.Question_Type__c); 
                       qs.Survey__c = Survey.id;
                       queList.add(qs);   
                  
                 }
           } 
           if(queList.size() > 0){
               insert queList;
           }   
          }else{
           ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR,'Please enter survey name'));  
        }
        return null;
    }
      
   public Pagereference SaveAndSend()
    {
        
         List<question__c> queList = new List<question__c>();
        if(survey.name  != '' && survey.name != null)
        {
           survey.Opportunity__c = OppId;
           insert Survey;
           for(QuestionWrapper queWra : queWraList){
               question__c qs = new question__c();
               if(queWra.question.Question__c != null && queWra.question.Question__c != ''){
                   qs.Question__c = queWra.Question.Question__c;
                   qs.Option_1__c = queWra.question.Option_1__c;
                   qs.Option_2__c = queWra.question.Option_2__c;
                  // qs.Option_3__c = queWra.optWraList.get(0);
                   qs.Option_4__c = queWra.question.Option_4__c;
                   qs.Option_5__c = queWra.question.Option_5__c;
                   qs.Option_6__c = queWra.question.Option_6__c;
                   qs.Option_7__c = queWra.question.Option_7__c;
                   qs.Option_8__c = queWra.question.Option_8__c;
                   qs.Option_9__c = queWra.question.Option_9__c;
                   qs.Option_10__c = queWra.question.Option_10__c; 
                   System.debug('@@@@@'+queWra.question.Is_Mandatory__c) ;                       
                   qs.Is_Mandatory__c = queWra.question.Is_Mandatory__c;
                   qs.Question_Type__c = queWra.question.Question_Type__c;
                    System.debug('@@@@@'+queWra.question.Question_Type__c);  
                   qs.Survey__c = Survey.id;
                   queList.add(qs);
               }
           } 
           if(queList.size() > 0)
           {
              
               insert queList;
           }  
          
          }
          else
          {
             ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR,'Please enter survey name'));  
          }
       PageReference pg = new Pagereference('/apex/SurveySecondPage?SurveyId='+survey.Id);
            pg.setRedirect(true); 
            return pg;  
    }
     public Pagereference AddQuestion()
    {
        QuestionWrapper qw = new QuestionWrapper();
      
            qw.question = new question__c();
            qw.question.Question_Type__c='Radio';
            qw.srNo = queWraList.size() + 1;
           
            queWraList.add(qw);
        
      
        
        return null;
    }
     public Pagereference RemoveQuestion()
    {
     
       
        Integer i=0;
        i = queWraList.size() - 1;
        queWraList.remove(i);
        return null;
    }
    public class AddOptWrapper
    {  
        public string textBoxLabel{get;set;}  
        public string textBoxValue{get;set;}  
        public AddOptWrapper(String textBoxLabel)  
        {  
            this.textBoxLabel = textBoxLabel;  
        }  
    }  
    public class QuestionWrapper
    {
       public Question__c question {get;set;}
       public List<String> optWraList {get;set;}
       public integer srNo {get; set;}
       public integer sr {get; set;}
     
       public boolean showMand {get; set;}
       public QuestionWrapper()
       {
         
           showMand = false;
          
       }
    }
}


This is my test controller
@isTest
public class SurveyCntrlTest
{
    public static testMethod void surveyC()
    {
        Account acc1 = TestDataGenerator.createAccount('Acme');
        insert acc1;
        Opportunity opp1 = TestDataGenerator.createOpportunity('TM',acc1,Date.today(),'Closed Won');
        insert opp1;
        Profile p = [SELECT Id FROM Profile WHERE Name='Standard User']; 
        User u = new User(Alias = 'standt', Email='A.trivedi@demoorg.com', 
        EmailEncodingKey='UTF-8', LastName='devindrop', LanguageLocaleKey='en_US', 
        LocaleSidKey='en_US', ProfileId = p.Id, 
        TimeZoneSidKey='America/Los_Angeles', UserName='KFCempress31@Nagpurorg.com');
        insert u;
        System.runAs(u)
        {
            System.debug('Current User: ' + UserInfo.getUserName());
            System.debug('Current Profile: ' + UserInfo.getProfileId()); 
        }
        Survey__c sur1 = TestDataGenerator.createSurvey('Test','For testing',Date.today(),opp1,2);
        insert sur1;
        Question__c que1 = TestDataGenerator.createQuestion('Who',false,'Test','Test','Test','Test','Test','Test','Test','Test','Test','Test','Test',sur1);
        insert que1;
        Test.startTest();
       
        ApexPages.CurrentPage().getparameters().put('id', opp1.id);
        ApexPages.StandardController controller = new  ApexPages.StandardController(opp1);
        SurveyCntrl sc = new SurveyCntrl(controller);
        sc.addTextBox();
        sc.removeTextBox();
        sc.oppDetail();
       
        sc.save();
       
       
        sc.SaveAndSend();
        sc.AddQuestion();
        sc.RemoveQuestion();
    }
}

I am not getting coverage for save and save and send functionality
 
bob_buzzardbob_buzzard
If you are getting no coverage, that implies your survey name is empty and the methods simply return.  If you are getting some coverage, can you enlighten us as to which lines are uncovered?
Amit_TrivediAmit_Trivedi
Hello,
Code coverage are uncovered in save() ans saveand Send Method().
bob_buzzardbob_buzzard
Looking at your code that suggests that your survey name is empty - have you added some debug to check it?
Amit_TrivediAmit_Trivedi
Yes 
and i added survey name also
@isTest
public class SurveyCntrlTest
{
    public static testMethod void surveyC()
    {
        Account acc1 = TestDataGenerator.createAccount('Acme');
        insert acc1;
        Opportunity opp1 = TestDataGenerator.createOpportunity('TM',acc1,Date.today(),'Closed Won');
        insert opp1;
        Profile p = [SELECT Id FROM Profile WHERE Name='Standard User']; 
        User u = new User(Alias = 'standt', Email='A.trivedi@demoorg.com', 
        EmailEncodingKey='UTF-8', LastName='devindrop', LanguageLocaleKey='en_US', 
        LocaleSidKey='en_US', ProfileId = p.Id, 
        TimeZoneSidKey='America/Los_Angeles', UserName='KFCempress31@Nagpurorg.com');
        insert u;
        System.runAs(u)
        {
            System.debug('Current User: ' + UserInfo.getUserName());
            System.debug('Current Profile: ' + UserInfo.getProfileId()); 
        }
        //Survey__c sur1 = TestDataGenerator.createSurvey('Test','For testing',Date.today(),opp1);
       // insert sur1;
       // Question__c que1 = TestDataGenerator.createQuestion('Who',false,'Test','Test','Test','Test','Test','Test','Test','Test','Test','Test','Test','Radio',sur1);
        //insert que1;
        Test.startTest();
       
        ApexPages.CurrentPage().getparameters().put('id', opp1.id);
        ApexPages.StandardController controller = new  ApexPages.StandardController(opp1);
        SurveyCntrl sc = new SurveyCntrl(controller);
        sc.survey.name = 'Test';
        sc.survey.Opportunity__c = opp1.Id;
        sc.survey.Survey_Send_Date__c = Date.today();
        sc.survey.Description__c  = 'test';
        sc.que.Question__c = 'Who';
        sc.que.Survey__c = sc.survey.Id;
        sc.que.Keyword__c = 'Test';
        sc.que.Option_1__c = 'Test';
        sc.que.Option_2__c = 'Test';
        sc.que.Option_3__c = 'Test';
        sc.que.Option_4__c = 'Test';
        sc.que.Option_5__c = 'Test';
        sc.que.Option_6__c = 'Test';
        sc.que.Option_7__c = 'Test';
        sc.que.Option_8__c = 'Test';
        sc.que.Option_9__c = 'Test';
        sc.que.Option_10__c = 'Test';
        sc.que.Question_Type__c = 'Radio';
        sc.que.Is_Mandatory__c = false;
        sc.oppDetail();
        sc.addOption();
        sc.removeOption();
        sc.hideOption();
        sc.save();
        sc.SaveAndSend();
        sc.AddQuestion();
        sc.RemoveQuestion();
        Test.stopTest();
    }
}
Amit_TrivediAmit_Trivedi
Now i am geting this error
System.DmlException: Insert failed. First exception on row 0 with id a00280000015vt9AAA; first error: INVALID_FIELD_FOR_INSERT_UPDATE, cannot specify Id in an insert call: [Id]
Stack Trace Class.SurveyCntrl.SaveAndSend: line 106, column 1
Class.SurveyCntrlTest.surveyC: line 58, column 1
bob_buzzardbob_buzzard
That suggests that you should use an upsert statement, as that will handle records with or without ids.  
Amit_TrivediAmit_Trivedi
I also tried that but still getting error
Amit_TrivediAmit_Trivedi
public class SurveyCntrl
{
    public Id oppId{get;set;}
    public Opportunity opp{get;set;}
    public Survey__c survey{get;set;}
    public List<QuestionWrapper> queWraList{get;set;}
    public List<QuestionWrapper> optWraList{get;set;}
    Public Question__c que{get;set;}
    public Integer rowIndex { get; set; } 
    public boolean showAddQuestion {get; set;}
    public boolean showAddQues {get; set;}                                
    public SurveyCntrl(ApexPages.StandardController controller)
    {
          oppId = oppId = ApexPages.CurrentPage().getParameters().get('id');
          opp = [ Select Id,Name,StageName From Opportunity Where Id=:oppId]; 
          queWraList= new List<QuestionWrapper>();
        
          que = new Question__c();
          survey = new Survey__c(); 
          showAddQuestion = true;
          showAddQues = true;
          AddQuestion();
   
              optWraList= new list<QuestionWrapper>();
         
           
    }
    public pagereference hideOption()
    {
      return null;
    }
    public PageReference oppDetail()
    {
        PageReference pg = new Pagereference('/apex/OpportunityDetail?id='+oppId);
        return pg; 
    }
    public Pagereference AddOption()
    { 
           return null;
      
     }
    public Pagereference RemoveOption()
    {
        
    
        //Integer i=0;
        //i = optWraList.size();
       
        return null;
        
    }
    public Pagereference save()
    {
        List<question__c> queList = new List<question__c>();
        if(survey.name != null && survey.name != '')
        {
        
           survey.Opportunity__c = OppId;
           insert Survey;
           for(QuestionWrapper queWra : queWraList){
               question__c qs = new question__c();
               if(queWra.question.Question__c != null && queWra.question.Question__c != '')
               {
                  
                      qs.Question__c = queWra.Question.Question__c;
                       qs.Option_1__c = queWra.question.Option_1__c;
                       qs.Option_2__c = queWra.question.Option_2__c;
                       qs.Option_3__c = queWra.question.Option_3__c;
                       qs.Option_4__c = queWra.question.Option_4__c;
                       qs.Option_5__c = queWra.question.Option_5__c;
                       qs.Option_6__c = queWra.question.Option_6__c;
                       qs.Option_7__c = queWra.question.Option_7__c;
                       qs.Option_8__c = queWra.question.Option_8__c;
                       qs.Option_9__c = queWra.question.Option_9__c;
                       qs.Option_10__c = queWra.question.Option_10__c; 
                       qs.Is_Mandatory__c = queWra.question.Is_Mandatory__c;
                         System.debug('@@@@@'+queWra.question.Is_Mandatory__c) ;  
                       qs.Question_Type__c = queWra.question.Question_Type__c;
                           System.debug('@@@@@'+queWra.question.Question_Type__c); 
                       qs.Survey__c = Survey.id;
                       queList.add(qs);   
                  
                 }
           } 
           if(queList.size() > 0){
               insert queList;
           }   
          }else{
           ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR,'Please enter survey name'));  
        }
        return null;
    }
      
   public Pagereference SaveAndSend()
    {
        
        List<question__c> queList = new List<question__c>();
        if(survey.name != null && survey.name != '')
        {
        
           survey.Opportunity__c = OppId;
           insert Survey;
           for(QuestionWrapper queWra : queWraList){
               question__c qs = new question__c();
               if(queWra.question.Question__c != null && queWra.question.Question__c != '')
               {
                  
                      qs.Question__c = queWra.Question.Question__c;
                       qs.Option_1__c = queWra.question.Option_1__c;
                       qs.Option_2__c = queWra.question.Option_2__c;
                       qs.Option_3__c = queWra.question.Option_3__c;
                       qs.Option_4__c = queWra.question.Option_4__c;
                       qs.Option_5__c = queWra.question.Option_5__c;
                       qs.Option_6__c = queWra.question.Option_6__c;
                       qs.Option_7__c = queWra.question.Option_7__c;
                       qs.Option_8__c = queWra.question.Option_8__c;
                       qs.Option_9__c = queWra.question.Option_9__c;
                       qs.Option_10__c = queWra.question.Option_10__c; 
                       qs.Is_Mandatory__c = queWra.question.Is_Mandatory__c;
                         System.debug('@@@@@'+queWra.question.Is_Mandatory__c) ;  
                       qs.Question_Type__c = queWra.question.Question_Type__c;
                           System.debug('@@@@@'+queWra.question.Question_Type__c); 
                       qs.Survey__c = Survey.id;
                       queList.add(qs);   
                  
                 }
           } 
           if(queList.size() > 0){
               upsert queList;
           }   
           PageReference pg = new Pagereference('/apex/SurveySecondPage?id='+oppId);
           return pg;   
          }
          else
          {
             ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR,'Please enter survey name'));  
          }
        return null;
    }
     public Pagereference AddQuestion()
    {
        QuestionWrapper qw = new QuestionWrapper();
      
            qw.question = new question__c();
            qw.question.Question_Type__c='Radio';
            qw.srNo = queWraList.size() + 1;
           
            queWraList.add(qw);
        
      
        
        return null;
    }
     public Pagereference RemoveQuestion()
    {
     
       
        Integer i=0;
        i = queWraList.size() - 1;
        queWraList.remove(i);
        return null;
    }
  /*  public class OptionWrapper
    {
          public Question__c question {get;set;}
          public list<String> lstOptions{get;set;}
          public List<Integer> iter {get;set;}
    }*/
    public class QuestionWrapper
    {
       public Question__c question {get;set;}
       public integer srNo {get; set;}
      
      
       public boolean showMand {get; set;}
       public QuestionWrapper()
       {
          
           showMand = false;
          
       }
    }
}