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
dharmik thummardharmik thummar 

How to write testclass for below mentioned class.

public class AddDuplicateRuleEntryController {

 
    public list<Duplicate_Rule_Entries__c> listDuplicateRule{ get; set; }
    public String selectedVal{get;set;}
    public map <String,fieldwrapper> fieldmap{get;set;}
    public list<selectoption> fieldListOption {get;set;}
    public Duplicate_Rule__c rule{get;set;}
    public string recordid; 
    public string objectName;
    
    
    public AddDuplicateRuleEntryController()
    {
        fieldmap = new map <String,fieldwrapper>();
        rule = new Duplicate_Rule__c ();
        listDuplicateRule = new list<Duplicate_Rule_Entries__c>();
        fieldListOption = new list<selectoption> ();
        
        
        recordid= ApexPages.currentPage().getParameters().get('id');
        rule = [select Active__c, Object__c,Duplicate_Rule_Entry_Criteria__c,Name, On_Insert__c, On_Update__c from Duplicate_Rule__c where id =: recordid ];
		listDuplicateRule = [SELECT Id, IsDeleted, Name, Entry_Number__c, Field_Name__c, Field_API_Name__c, Field_Data_Type__c, Match__c, Duplicate_Rule__c
                              		FROM Duplicate_Rule_Entries__c
            						WHERE Duplicate_Rule__c =: recordid];
        if(listDuplicateRule.size() ==0) {
        	listDuplicateRule.add(new Duplicate_Rule_Entries__c(Duplicate_Rule__c=recordid,Entry_Number__c=1));
    	}
        if(rule != null) {
            objectName = rule.Object__c;    
        }
        fetchObjectField();
        system.debug(fieldmap);
    }
    
    
    
    Public void addDuplicateRuleEntryRow()
    {
        Duplicate_Rule_Entries__c acc = new Duplicate_Rule_Entries__c(Duplicate_Rule__c=recordid);
        acc.Entry_Number__c = listDuplicateRule.size() + 1;
        listDuplicateRule.add(acc);
       
    }
    public PageReference saveRule() {
        system.debug(fieldmap);
        system.debug(listDuplicateRule);
        list<Duplicate_Rule_Entries__c> duplicateRuleEntrylisttoInsert = new list<Duplicate_Rule_Entries__c> ();
        for(Duplicate_Rule_Entries__c  dc : listDuplicateRule)
        {
            system.debug(dc.Field_API_Name__c);
            if(dc.Field_API_Name__c != '----None----') {
                dc.Field_Data_Type__c= fieldmap.get(dc.Field_API_Name__c).DataType;
                dc.Field_Name__c= fieldmap.get(dc.Field_API_Name__c).FieldName; 
                duplicateRuleEntrylisttoInsert.add(dc);
            }            
           
        }
        upsert duplicateRuleEntrylisttoInsert;
        update rule;
        PageReference reRend = new PageReference('/'+recordid);
        reRend.setRedirect(True);
        return reRend;
    }
    public class fieldwrapper {
            public String FieldName {get; set;}
            public string FieldAPI  {get; set;}
            public string DataType  {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 fieldwrapper(String FieldName, string FieldAPI, string DataType) {
                
                this.FieldName = FieldName;
                this.FieldAPI = FieldAPI;
                this.DataType = DataType;
                
            }
        }
    public void fetchObjectField(){
        try
        {
                fieldListOption.add(new selectoption('----None----','----None----')); 
                if(objectName != null) {
                    for(SObjectField sField: Schema.getGlobalDescribe().get(objectName).getDescribe().fields.getMap().values()) {
                            DescribeFieldResult res = sField.getDescribe();
                                
                            fieldmap.put(res.getName(),new fieldwrapper(res.getLabel(), res.getName(),res.getType().name()));
                            fieldListOption.add(new selectoption(res.getName(),res.getLabel()));
                            System.debug(fieldmap);
                    }
                }
            
            }
        catch(Exception ex)
        {
            System.debug(ex.getMessage());
            System.debug(ex.getStackTraceString());
        }
       
    }

    public PageReference redirect()
    {
            PageReference reRend = new PageReference('/'+recordid);
            reRend.setRedirect(True);
            return reRend;
    }  
  
}

Visualforce Page:
<apex:page Controller="AddDuplicateRuleEntryController">
    
    <script type="text/javascript">
        window.onload = function(){
            var elems = document.querySelectorAll('[id$="setRequired"]');
            for (var i = 0; i < elems.length; i++){
                //elems[i].required = true;
            }
         function cancelJS () {
         	alert (1);
             cancelAF();
         }   
    }
    </script>
    
    <apex:form >
    <apex:pageMessages />
        <apex:pageBlock >
            
            <apex:pageBlockTable value="{!listDuplicateRule}" var="ldr">
               
                <apex:column headerValue="Field" >
                    
                   <apex:selectList size="1" value="{!ldr.Field_API_Name__c}" id="setRequired" >
                       
                       <apex:selectOptions value="{!fieldListOption}"/>

                    </apex:selectList>
                </apex:column>
                <apex:column headerValue="Match">
                    <apex:selectList required="True" size="1" value="{!ldr.Match__c}" id="setRequiredMatch">
                        <apex:selectOption itemValue="Exact" itemLabel="Exact"></apex:selectOption>
                    </apex:selectList>
                </apex:column>
            </apex:pageBlockTable>
            <apex:outputText value="Duplicate rule Criteria: "/>
            <apex:inputField value="{!rule.Duplicate_Rule_Entry_Criteria__c}"/>
            <apex:pageBlockButtons >
                <apex:commandButton value="Add Rules Row" action="{!addDuplicateRuleEntryRow}"/>
                <apex:commandButton value="Save Rules" action="{!saveRule}" />        
               
                <apex:commandButton value="Cancel" action="{!redirect}" immediate="true" />
            </apex:pageBlockButtons>
        </apex:pageBlock>
    </apex:form>
</apex:page>

Raj VakatiRaj Vakati
Try this code
 
@isTest
public class AddDuplicateRuleEntryControllerTest{


static testMethod void test(){

Duplicate_Rule__c d = new Duplicate_Rule__c();
d.Name='Acc1';
 d.Active__c=true;
d. Object__c='Account';
d.Duplicate_Rule_Entry_Criteria__c='Create';
d.On_Insert__c=true ;
d.On_Update__c =true ;
// add other fields 
insert d ; 

Duplicate_Rule_Entries__c dr = new Duplicate_Rule_Entries__c();
dr.Name='aaaaa';
dr.Duplicate_Rule__c=d.id;
dr.Entry_Number__c='Account';
dr.Field_Name__c='Name';
dr.Field_API_Name__c='Name';
dr.Field_Data_Type__c='Text';
dr.Match__c =true ;
//add other fields
insert dr ;


Test.startTest();
OpportunityWithSurgeryBatch obj = new OpportunityWithSurgeryBatch();
DataBase.executeBatch(obj);        
Test.stopTest();
  
  
  PageReference myVfPage = Page.YOURPAGENAME;
Test.setCurrentPage(myVfPage);

// Put Id into the current page Parameters
ApexPages.currentPage().getParameters().put('id',d.Id);

AddDuplicateRuleEntryController dr = new AddDuplicateRuleEntryController();
  dr.addDuplicateRuleEntryRow();
  dr.fetchObjectField();
  dr.saveRule();
  dr.redirect();
  

}



}

 
Raj VakatiRaj Vakati
Try this
 
@isTest
public class AddDuplicateRuleEntryControllerTest{


static testMethod void test(){

Duplicate_Rule__c d = new Duplicate_Rule__c();
d.Name='Acc1';
 d.Active__c=true;
d. Object__c='Account';
d.Duplicate_Rule_Entry_Criteria__c='Create';
d.On_Insert__c=true ;
d.On_Update__c =true ;
// add other fields 
insert d ; 
List<Duplicate_Rule_Entries__c> drList = new List<Duplicate_Rule_Entries__c>();
for(Integer i =0 ;i <10 ; i++){
Duplicate_Rule_Entries__c dr = new Duplicate_Rule_Entries__c();
dr.Name='aaaaa';
dr.Duplicate_Rule__c=d.id;
dr.Entry_Number__c='Account';
dr.Field_Name__c='Name';
dr.Field_API_Name__c='Name';
dr.Field_Data_Type__c='Text';
dr.Match__c =true ;
drList.add(dr);
}
//add other fields
insert drList ;


Test.startTest();
OpportunityWithSurgeryBatch obj = new OpportunityWithSurgeryBatch();
DataBase.executeBatch(obj);        
Test.stopTest();
  
  
  PageReference myVfPage = Page.YOURPAGENAME;
Test.setCurrentPage(myVfPage);

// Put Id into the current page Parameters
ApexPages.currentPage().getParameters().put('id',d.Id);

AddDuplicateRuleEntryController dr = new AddDuplicateRuleEntryController();
  dr.addDuplicateRuleEntryRow();
  dr.fetchObjectField();
  dr.saveRule();
  dr.redirect();
  

}



}