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
Praveen BonaluPraveen Bonalu 

Test class for the dynamic controller (Please help)

Hi ,

I have written a visual force page and a controller  to search the records dynamically when the string is given in the box. 
I am not pretty much sure how to write a test class for it.

Here is the controller :
 
public with sharing class TW_SearchEngineController{
    
    public String selectedObject{get;set;}
    
    public pagereference retrieveObjName() {
        
        return null;
    }
    
    public String testresult{get; set; }

    private String queryFields_position = 'Branch__c,Department__c,Id,Name,Recruiter__c,Region__c,Status__c ';
    
    private String queryFields_applicant = 'City__c,Email__c,First_Name__c,Id,Last_Name__c,Position__c,Progess__c,Province__c ';
    
    private String queryFields_recruiting = 'Id,Confidential_Posting__c,Location__c,Name__c,Notes__c ';
    
    //Retrieve Applicant fields
    public String a_fName{get; set;}
    public String a_lName{get; set;}
    public String a_province{get; set;}
    
    //Retrive Position fields
    public String p_Title {get;set;}
    public String p_Dept  {get;set;}
    public String p_reg   {get;set;}
    
    //Retrive the Recruiting Resource fields
    public String r_ResName {get;set;}
    public String  r_ResLoc {get;set;}
    
    
    public pageReference retrieveApplicants() {
        system.debug('Applicant Entered');
        selectedObject = 'Applicant';
        runQuery();
        return null;
    }
      public pageReference retrievePositions() {
          system.debug('title: '+p_Title+' Dept: '+p_Dept+' region: '+p_reg);
          system.debug('Position Entered');
          selectedObject = 'Position';
          runQuery();
          return null;
    }
    
      public pageReference retrieveRecruitingResources() {
          system.debug('Recruiting Resources Entered');
          selectedObject = 'Recruiting Resources';
          runQuery();
          return null;
    }
    
    
    // get locations picklist values locations from recruiting Resources
    public List<SelectOption> getlocations() {
        List<SelectOption> options = new List<SelectOption>();
        
        Schema.DescribeFieldResult fieldResult = Job_Posting_Site__c.Location__c.getDescribe();
        List<Schema.PicklistEntry> ple = fieldResult.getPicklistValues();
        
        for( Schema.PicklistEntry f : ple) {
            options.add(new SelectOption(f.getLabel(), f.getValue()));
        }       
        return options;
    }   
    
    // get regions picklist values from positions
    public List<SelectOption> getRegions() {
        List<SelectOption> options = new List<SelectOption>();
        
        Schema.DescribeFieldResult fieldResult = Position__c.Region__c.getDescribe();
        List<Schema.PicklistEntry> ple = fieldResult.getPicklistValues();
        
        for( Schema.PicklistEntry f : ple) {
            options.add(new SelectOption(f.getLabel(), f.getValue()));
        }       
        return options;
    }
    
    // get regions picklist values from positions
    public List<SelectOption> getbranches() {
        List<SelectOption> options = new List<SelectOption>();
        
        Schema.DescribeFieldResult fieldResult = Position__c.Branch__c.getDescribe();
        List<Schema.PicklistEntry> ple = fieldResult.getPicklistValues();
        
        for( Schema.PicklistEntry f : ple) {
            options.add(new SelectOption(f.getLabel(), f.getValue()));
        }       
        return options;
    }    
    
    //get department picklist values from position
    public List<SelectOption> getDepartments() {
        List<SelectOption> options = new List<SelectOption>();
        
        Schema.DescribeFieldResult fieldResult = Position__c.Department__c.getDescribe();
        List<Schema.PicklistEntry> ple = fieldResult.getPicklistValues();
        
        for( Schema.PicklistEntry f : ple) {
            options.add(new SelectOption(f.getLabel(), f.getValue()));
        }       
        return options;
    }
    
    //get Type picklist values from Recruting Resources
    //
     public List<SelectOption> getRecRes() {
        List<SelectOption> options = new List<SelectOption>();
        
        Schema.DescribeFieldResult fieldResult = Job_Posting_Site__c.Type__c.getDescribe();
        List<Schema.PicklistEntry> ple = fieldResult.getPicklistValues();
        
        for( Schema.PicklistEntry f : ple) {
            options.add(new SelectOption(f.getLabel(), f.getValue()));
        }       
        return options;
    }
    
    
    public List<Job_Posting_Site__c> rList {get; set;}
    public List<Candidate__c> aList {get; set;}
    public List<Position__c> pList {get; set;}
    
    
    public void runQuery() {
        system.debug('Entered runQuery');
        rList = new List<Job_Posting_Site__c>();
        aList = new List<Candidate__c>();
        pList = new List<Position__c>();
        system.debug('*****'+selectedObject);
        if(selectedObject == '--None--') {
            system.debug('None entered');
            if(aList != null)aList.clear();
            if(pList != null)pList.clear();
            if(rList != null)rList.clear();
        } else if(selectedObject == 'Applicant') {
            system.debug('Applicant entering');
            if(String.isEmpty(a_fName) && String.isEmpty(a_lName) && String.isEmpty(a_province)) return;
            system.debug('****'+(String.isEmpty(a_fName) || String.isEmpty(a_lName) || String.isEmpty(a_province)));
            setCon = null;
            //aList = Database.query('select '+queryFields_applicant + ' from Candidate__c limit 20');
            aList = (List<Candidate__c>) setCon.getRecords();
            
            if(pList != null)pList.clear();
            if(rList != null)rList.clear();
        } else if (selectedObject == 'Position'){
            system.debug('position entering1');
            system.debug('title: '+p_Title +' Dept: '+p_Dept+' Region: '+p_reg);
            if(String.isEmpty(p_Title) && String.isEmpty(p_Dept) && String.isEmpty(p_reg)) return;
            system.debug('position entering2');
            setCon = null;
            pList = (List<Position__c>) setCon.getRecords();
            //pList = Database.query('select '+queryFields_position + ' from Position__c limit 20');
            if(aList != null)aList.clear();
            if(rList != null)rList.clear();
        } else if (selectedObject == 'Recruiting Resources'){
            system.debug('Recruiting Resources entering');
            if(String.isEmpty(r_ResName) && String.isEmpty(r_ResLoc)) return;
            setCon = null;
            rList = (List<Job_Posting_Site__c>) setCon.getRecords();
            //rList = Database.query('select '+queryFields_recruiting + ' from Job_Posting_Site__c limit 20');
            if(pList != null)pList.clear();
            if(aList != null)aList.clear();
        }
        if(aList != null) system.debug('applicant records retrieved'+ aList.size());
        if(rList != null) system.debug('recruiting records retrieved'+ rList.size());
        if(pList != null) system.debug('position records retrieved'+ pList.size());
    }
     
    
    private String prepareQuery(String obj, String fields, String[] fieldNames, String[] fieldValues) {
        String str = '';
        Integer a = fieldNames.size();
        Integer b = fieldValues.size();
        if(a == b){
            str += 'Select '+fields+ ' from '+obj+' where ';
            for(Integer i = 0; i < a; i++){
                str += fieldNames[i] + ' like \''+fieldValues[i]+'%\' ';
                if(i != a-1) str+= ' and ';
            }
        }        
        return str;
    }
    
    
    
    public ApexPages.StandardSetController setCon {
    
        get {
            String soql = '';
            List<String> selectedFields = new List<String>();
            List<String> fieldValues = new List<String>();
            if(selectedObject == 'Applicant'){
                selectedFields = new String[]{'First_Name__c','Last_Name__c', 'Province__c'};
                fieldValues = new String[]{a_fName,a_lName,a_province};
                soql = prepareQuery('Candidate__c', queryFields_applicant, selectedFields, fieldValues);  
                system.debug('Applicant'+soql);
            } else if(selectedObject == 'Position') {
                selectedFields = new String[]{'name','Department__c', 'Region__c'};
                if(p_reg!= null) p_reg = p_reg.contains('None') ? '' : p_reg;
                if(p_Dept!= null) p_Dept = p_Dept.contains('None') ? '' : p_Dept;
                fieldValues = new String[]{p_Title,p_Dept,p_reg};
                soql = prepareQuery('Position__c', queryFields_position, selectedFields, fieldValues);                
            } else if(selectedObject == 'Recruiting Resources') {           
                selectedFields = new String[]{'Name__c'};
                fieldValues = new String[]{r_ResName};
                soql = prepareQuery('Job_Posting_Site__c', queryFields_recruiting, selectedFields, fieldValues);                
            }

            if(setCon == null) {
                try{
                    system.debug('soql prepared: '+soql);
                    setCon = new ApexPages.StandardSetController(Database.getQueryLocator(soql));  
                    setCon.setPageSize(5);
                } catch (Exception e){
                    system.debug(e.getMessage());
                }
            }
            return setCon;
        }
        set;
    }      
       
    // returns the first page of records
     public void first() {
         setCon.first();
         if (selectedObject == 'Position')pList = setCon.getRecords();
         else if (selectedObject == 'Recruiting Resources')rList = setCon.getRecords();
         else if (selectedObject == 'Applicant')aList = setCon.getRecords();
     }

     // returns the last page of records
     public void last() {
         setCon.last();
         if (selectedObject == 'Position')pList = setCon.getRecords();
         else if (selectedObject == 'Recruiting Resources')rList = setCon.getRecords();
         else if (selectedObject == 'Applicant')aList = setCon.getRecords();
     }

     // returns the previous page of records
     public void previous() {
         setCon.previous();
         if (selectedObject == 'Position')pList = setCon.getRecords();
         else if (selectedObject == 'Recruiting Resources')rList = setCon.getRecords();
         else if (selectedObject == 'Applicant')aList = setCon.getRecords();
     }

     // returns the next page of records
     public void next() {
         setCon.next();
         if (selectedObject == 'Position')pList = setCon.getRecords();
         else if (selectedObject == 'Recruiting Resources')rList = setCon.getRecords();
         else if (selectedObject == 'Applicant')aList = setCon.getRecords();
     }

    public list<Schema.Picklistentry> getEntries(){
        return Position__c.fields.Region__c.getDescribe().getpicklistvalues();
    }
 
}