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
SoundarSoundar 

How Can Cover a Test Class For Trigger

Hi Friends,
I am new to the development, can you please explain how can i cover a test class for trigger as well.


-----------------------Code  ----------------------

trigger OI_AgentLogin_FIFOInit on Agent_Availability_Log__c(after Insert, after Update){
    
    // Active Complaint
    Boolean m_CNsetup = false;  

    // Get current profile custom setting.
    Trigger_Controller__c m_CNprofile = Trigger_Controller__c.getvalues(UserInfo.getProfileId()); 
    // Get current Organization custom setting.
    Trigger_Controller__c m_CNOrg = Trigger_Controller__c.getvalues(UserInfo.getOrganizationId());
    // Get current User custom setting.
    Trigger_Controller__c m_CNuser = Trigger_Controller__c.getValues(UserInfo.getUserId());

    if(m_CNuser != null) {
        m_CNsetup = m_CNuser.OI_AgentLogin_FIFOInit__c;
    } 
    else if(m_CNprofile != null) {
        m_CNsetup = m_CNprofile.OI_AgentLogin_FIFOInit__c;
    }
    else if(m_CNOrg != null) {
        m_CNsetup = m_CNOrg.OI_AgentLogin_FIFOInit__c;
    }

    if(!m_CNsetup){
        return;
    }
    
    set<string> st_MgrID = new set<string>(); // Set of Group Manager Id
    set<string> st_RTId = new set<string>(); // Set of Record Type Id
    map<string, list<case>> mp_CasLs2CasOrg = new map<string, list<case>>(); // Mapping List of Case to Case Origin
    Set<string> st_CasOrg = new Set<string>(); // Set of Case Origin
    
    for(Agent_Availability_Log__c irow : trigger.new){
        If(trigger.isInsert && irow.Date__c == System.Today() && irow.IsAvailable__c && irow.Group_Member__r.FIFO_Case_Count__c == 0){
            st_MgrID.add(irow.Assignment_Group__r.Manager__r.id);            
        }
        
        if(trigger.isUpdate && irow.Date__c == System.Today() && irow.IsAvailable__c && irow.Group_Member__r.FIFO_Case_Count__c == 0){
            st_MgrID.add(irow.Assignment_Group__r.Manager__r.id);
        }
    }
    
    if(st_MgrID.size()>0){
        for(Schema.RecordTypeInfo irow : Schema.SObjectType.Case.getRecordTypeInfosByName().values()){
            if(irow.getName() == 'Parent' || irow.getName() == 'Child'){
                st_RTId.add(string.valueof(irow.getRecordTypeId()));
            }
        }
        system.debug(' st_RTId ' + st_RTId);
        
        for(case irow : [Select Id, CaseNumber, Email__c, Origin, OwnerId, OwnerId__c, CreatedDate FROM Case WHERE OwnerId IN: st_MgrID AND IsFIFOAssigned_Agent__c = FALSE AND IsFIFOAssigned_Mgr__c = TRUE AND RecordTypeId IN: st_RTId]){
            AssignGroupName_ModeofAssignment__c Asg = AssignGroupName_ModeofAssignment__c.getvalues(irow.Origin);
            if(Asg.Mode_of_Assignment__c == 'FIFO' && !irow.IsFIFOAssigned_Agent__c && irow.IsFIFOAssigned_Mgr__c){
                if(mp_CasLs2CasOrg.containsKey(irow.Origin)){
                    list<case> Tmp = mp_CasLs2CasOrg.get(irow.Origin);
                    Tmp.add(irow);
                    mp_CasLs2CasOrg.put(irow.Origin, Tmp);
                }else{
                    list<case> Tmp = new list<case>();
                    Tmp.add(irow);
                    mp_CasLs2CasOrg.put(irow.Origin, Tmp);
                }
                st_CasOrg.add(irow.Origin);
            }
        }
        System.debug('st_CasOrg ## i'+st_CasOrg);
        system.debug(' mp_CasLs2CasOrg ### ' + mp_CasLs2CasOrg);
    }
    
    if(St_CasOrg.size() > 0){
        // FIFO
        OI_FIFOAssignment fifo = new OI_FIFOAssignment(St_CasOrg, mp_CasLs2CasOrg);fifo.Assign();
    }
}



--------------------------------------------------------------

*Could You Please Cover above trigger
*Please Explain 

Thanks In Advance

Regards,
Soundar Raj.
RKSalesforceRKSalesforce
Please do following things:
Try inserting record for your custom settings Trigger_Controller__c , AssignGroupName_ModeofAssignment__c. 
Insert appropriate Agent_Availability_Log__c, Group_Member__c, Manager__c, Assignment_Group__c records and associate. 
Update some Agent_Availability_Log__c  records as your coode checks for Update Cases as well.
Insert Case records.

 Let me know if helped.

Regards,
Ramakant
SoundarSoundar
Hi Ramakant,

I am new to development so only i asked to cover a test class, i will try my level best as per your comments(Thanks for your quick response...)


Regards,

Soundar Raj
SoundarSoundar
Hi Ramakant,

i have create a test class as per your comments , Now it's showing below error. Please advice me why this error ??

Error Message : System.TypeException: Invalid id value for this SObject type: a02P00000047567IAA
Stack Trace : Class.OI_AgentLogin_FIFOInitTest.agentLoginTestMethod: line 60, column 1


/*-----------------------------------------------------
Created Date : 12/05/2017.
Refered Trigger : OI_AgentLogin_FIFOInit.
------------------------------------------------------ */
@isTest(SeeAllData = True)
public class OI_AgentLogin_FIFOInitTest{

public static testMethod void agentLoginTestMethod(){

 /* Active Complaint */
 Boolean m_CNsetup = false; 
 
 /* Get current profile custom setting. */
 Trigger_Controller__c m_CNprofile = Trigger_Controller__c.getvalues('00e15000001GFT6');  
 
 /* Get current Organization custom setting. 
 Trigger_Controller__c m_CNOrg = Trigger_Controller__c.getvalues('');*/
 
 /* Get current User custom setting. */
 Trigger_Controller__c m_CNuser = Trigger_Controller__c.getValues('00515000006YW7Y');


  User ownrId = [Select id,name  From User Where  Name = 'Gangajamuna Gudla'];
  system.debug('owner Id:' + ownrId);

  /* Case Duplicate value's Passed */
  Case cs = New Case();
  //cs.Status= 'open';
  //cs.Id = ownrId.id;
  cs.Origin= 'Phone';
  cs.Email__c = 'sourajking@gmail.com';
  cs.Origin= 'Phone';
  cs.OwnerId__c= ownrId.id;
  insert cs;


 /* Assignment groupName */
 AssignGroupName_ModeofAssignment__c  asg = New AssignGroupName_ModeofAssignment__c();
 asg.name = 'Test Name';
 asg.Mode_of_Assignment__c = 'Text Mode';
 insert asg;
 
 /* Agent Availability Log  Insert*/
 Agent_Availability_Log__c avl = New Agent_Availability_Log__c();
 avl.Date__c = date.parse('05/12/2017');
 avl.IsAvailable__c  = true;
 //avl.Group_Member__r.FIFO_Case_Count__c = 0;
 insert avl;
 
 /* Agent Availability Log  update*/
 Agent_Availability_Log__c avl1 = New Agent_Availability_Log__c();
 avl1.Date__c = date.parse('05/12/2017');
 avl1.IsAvailable__c  = true;
 //avl1.Group_Member__r.FIFO_Case_Count__c = 0;
 insert avl1;
 
 /* Manager */
 Assignment_Group__c asgId =[Select id,name,manager__c from Assignment_Group__c LIMIT 1];
 User mngr = new User();
 mngr.id = asgId.id;    // Error Showing In This Line 
 insert mngr;
 
  
 /* Group Member */
 Group_Member__c gm = new Group_Member__c();
 //gm.Name= mngr.id;
 gm.FIFO_Case_Count__c = 0;
 gm.FIFO_Case_Count__c = 0; 
 gm.Assignment_Group__c = mngr.id;
 insert gm;
 
 
 /* Assignment Group */
 Assignment_Group__c asgp = new Assignment_Group__c();
 asgp.Name = 'test Name';
 asgp.Manager__c = asgId .id;
 insert asgp;
    

}
}
 

Thanks a lot...

Regards,

Soundar Raj.
RKSalesforceRKSalesforce
Id is non writable field so you will not be able to that.