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
sona gaikwadsona gaikwad 

test save and cancel method in test class

Controller
public Class LogAcallController{
  private ApexPages.StandardController con;
    public class DataException extends Exception {} 
    public  Boolean isError = FALSE;
    public String whatId = ApexPages.CurrentPage().getParameters().get('what_Id');
    public String leadId = ApexPages.CurrentPage().getParameters().get('lead_id');
    public string WhoID=ApexPages.CurrentPage().getParameters().get('who_id');
    public Lead LeadData;
    public String retURL = ApexPages.CurrentPage().getParameters().get('id');
    public String parentId;
    public Task logACall {get;set;}
    public list<Task> TaskList{get;set;}
    public Task followUpTask {get;set;}
    
    public Boolean createFollowUpTask {get;set;}
    
    public LogAcallController(){
        
         String queryString = GeneralUtilityClass.getQueryString('Lead');
         queryString += ' From Lead WHERE Id =: leadId ';         
         LeadData= dataBase.query(queryString);
         
         
      if(WhoId !=null){
       parentId = LeadData.Id;
   
       }
       else{
        parentId = WhatID;
       }
       
       TaskList =new List<Task>();
  
        logACall = new Task();    
        logACall.WhoID=LeadData.id;
        logACALL.lEAD__C=LeadData.Id;
         logACall.Subject = 'Transferred';
         logACall.Task_Type__c = 'Inbound';  
        followUpTask = new Task(); 
        followUpTask.WhoID=LeadData.id;    
        createFollowUpTask = FALSE;

     
        
           Map<String, String> taskRecordTypeMap = new Map<String, String>();
            for(Schema.RecordTypeInfo r :Task.SObjectType.getDescribe().getRecordTypeInfos()){
            taskRecordTypeMap.put(r.getName(), r.getRecordTypeId());
            }
        
           Task  logACall = new Task();  
                logACall.whatId =whatId;                  
                logACall.RecordTypeId = taskRecordTypeMap.get('Call');
                logACall.WhoId = WhoId;
               }
               
        
    
    public PageReference save(){
    try{
    isError=false;
    
    validateData();
            if(isError == TRUE ){
          
               throw new DataException(ErrorMessages.REVIEW_ERROR_MESSAGE);
            } 
            }
             
        catch(exception e){
          
            ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, e.getMessage()));
            return null;
        }
        
       try{
          Savepoint sp = Database.setSavepoint();   
                
          database.insert(logACall);  // insert logACall ;
         
          
        PageReference pr = new pageReference('/'+leadId);
        pr.setRedirect(true);        
       return pr;
  
        }
        catch(exception e){
            ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, e.getMessage()));
            return null;
        }
       
              
       
    }
    
    
    public PageReference cancel(){
       // PageReference pr = new pageReference(retURL);
        PageReference  pr = new pageReference ('/apex/LeadEditOverridePage?retURL=/'+leadId+'&id='+leadId);
     //  PageReference pr = new pageReference(retURL);
        pr.setRedirect(true);
        return pr;
    }
    
    
    public Boolean validateData() {
        isError =False;
        
           if(logACall.Attended_By__c==null) {
                logACall.Attended_By__c.addError('Please Enter Attended By Fields');
                isError = TRUE;
            }
             if(logACall.Call_Status__c!='Transferred') {
                logACall.Call_Status__c.addError('Please Enter Call Status as Transferred');
                isError = TRUE;
            }
             if(logACall.Call_Status__c=='Transferred' && (logACall.Transferred_To__c==null || logACall.Transferred_To__c=='' )) {
                logACall.Transferred_To__c.addError('Please Enter a value');
                isError = TRUE;
            }
        
              
        return isError;
    }
    
}

TEST CLASSS

@isTest(seeAllData=false)
private class LogAcallController_TestClass


 
    private static Lead newLead;
    private static Campaign newCampaign;
    private static Task newTask;
    private static Task newLogACall;
    private static Task newAnotherTask;
    private static User newUser;
    
      private static void init() {    
        
       newUser = InitializeTestData.createUser('cgpet00D900000010QJQ.test@demmo.com.test');
       database.insert(newUser);
        
       newCampaign = InitializeTestData.createCampaign();
       database.insert(newCampaign);
       
       newLead = InitializeTestData.createLeadWebsite(newCampaign.Id);
       newLead.DecisionMaker__c='Self';
       newLead.IsConverted = FALSE;
       database.insert(newLead);
       
        
       
       newLogACall=InitializeTestData.createLeadLogACall(newLead.Id,newUser.Id);
       database.insert(newLogACall); 
       
       System.debug('@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'+newLead.Id);
          
        }

  private static TestMethod void Test1() {
   
      
         init();
        
         Test.StartTest();
       
      
            PageReference pageRef = Page.LogACallPageNew; // Add your VF page Name here
            pageRef.getParameters().put('who_id', String.valueOf(newLead.Id));
            pageRef.getParameters().put('lead_id', String.valueOf(newLead.Id));
            pageRef.getParameters().put('what_Id','');            
            Test.setCurrentPage(pageRef);

           
          //  PageReference testPage = testAccPlan.save();
             
            LogAcallController taskinfo= new LogAcallController();
            taskInfo.parentId = newLead.Id;
            taskInfo.logACall = newLogACall;
            taskInfo.createFollowUpTask = TRUE;
            taskinfo.save();
            taskinfo.cancel();
            
           // testAccPlan.save();    
        //  testAccPlan.cancel();
           
         
         
    
         
           
       Test.StopTest();
       }
   }
Madhukar_HeptarcMadhukar_Heptarc
Hi sona gaikwad,

If you are trying to cover code coverage try below format.
 
LogAcallController taskinfo= new LogAcallController();
            taskInfo.parentId = newLead.Id;
            taskInfo.logACall = newLogACall;
            taskInfo.createFollowUpTask = TRUE;

	    PageReference pageRef1 = Page.VFPage1; // Add your VF navigation page Name here
            pageRef1.getParameters().put('who_id', String.valueOf(newLead.Id));	
	    Test.setCurrentPage(pageRef1);
            taskinfo.save();

	    PageReference pageRef2 = Page.VFPage2; // Add your VF navigation page Name here
	    pageRef2.getParameters().put('lead_id', String.valueOf(newLead.Id));	
	    Test.setCurrentPage(pageRef2);	
            taskinfo.cancel();
If your are calling same VF page for Save and Cancel try below format.
 
LogAcallController taskinfo= new LogAcallController();
            taskInfo.parentId = newLead.Id;
            taskInfo.logACall = newLogACall;
            taskInfo.createFollowUpTask = TRUE;

	    pageRef = Page.LogACallPageNew; // If your VF page Calling Same page use existing variable.
            pageRef.getParameters().put('who_id', String.valueOf(newLead.Id));
	    Test.setCurrentPage(pageRef);
            taskinfo.save();

	    pageRef = Page.LogACallPageNew; // If your VF page Calling Same page
	    pageRef.getParameters().put('lead_id', String.valueOf(newLead.Id));	
	    Test.setCurrentPage(pageRef);	
            taskinfo.cancel();
Please let me know if it useful.

 
sona gaikwadsona gaikwad
 how to test cancel method if url is diffrent and mapped with leadid
public PageReference cancel(){
 
        PageReference  pr = new pageReference ('/apex/LeadEditOverridePage?retURL=/'+leadId+'&id='+leadId);
   
        pr.setRedirect(true);
        return pr;
    }
sona gaikwadsona gaikwad
@madhukar 
my validate method and save method is not covered
Madhukar_HeptarcMadhukar_Heptarc
Can please try below format to cover ValidateData() method
LogAcallController taskinfo= new LogAcallController();
taskInfo.parentId = newLead.Id;
taskInfo.logACall = newLogACall;
Boolean TestB = taskinfo.validateData();