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
Andreea TAndreea T 

Please help me with creation of a test class

Hello friends, 
Please help me to write a test class for this class
public class TriggerTaskUpdateLastNextTask implements Triggers.Handler  {
	public void handle(){
        Map <id,List <Task>> mapAcc = new Map <id,List <Task>> (); 
        Map <id,List <Task>> mapLead = new Map <id,List <Task>> ();  
        List <Account> AtoUpdate = new List <Account>();
        List <Account> TasktoAccUpdate = new List <Account>();
        List <Lead> LtoUpdate = new List <Lead> ();
        Map<id,Account> accounts = new Map<id,Account>();
        Map <id,Task> mapTasks = new Map <id,Task> ();
        for(Task T: (List <Task>) Trigger.new) {
            if(T.whoid != NULL && ((string)T.whoid).startswith('00Q')) mapLead.put(T.whoid,new List <Task> {T});
            if(T.whatid!= NULL && ((string)T.whatid).startswith('001')) mapAcc.put(T.whatid,new List <Task> {T});
            if(T.whatid!= NULL && ((string)T.whatid).startswith('006')) mapAcc.put(T.whatid,new List <Task> {T});
        }
        Map <id,Account> mapAccounts = new Map <id,Account> ();
        Map <id,Account> mapAccTaskCompleted = new Map <id,Account> ();
        Map <id,Lead> mapLeads = new Map <id,Lead> ();
        for(Account A :[SELECT id,True_last_activity__c,Next_Activity_Date__c FROM Account WHERE id in: mapAcc.keySet()]) {
            mapAccounts.put(A.id,A);
        }
        for(Account Acc :[SELECT id,True_last_activity__c,(select id,activitydate from tasks where status = 'Completed' and activitydate != null order by activitydate desc limit 1) FROM Account WHERE id in: mapAcc.keySet()]) {
            mapAccTaskCompleted.put(Acc.id,Acc);
        }

        for(account acct:mapAccTaskCompleted.values()){
           	List <Task> auxT = mapAcc.get(Acct.id);
            if(auxT == NULL) auxT = new List <Task> ();
            for(Task Ts: auxT) {
          if(Ts.ActivityDate !=null && Ts.Status=='Completed') acct.True_last_activity__c = acct.tasks[0].activitydate;
            }
            TasktoAccUpdate.add(Acct);
            
        }
        
        for(Lead L : [SELECT id,True_last_activity__c,Next_Activity_Date__c,Last_Sales_interaction__C FROM Lead WHERE id in: maplead.keySet()]) {
            mapLeads.put(L.id,L);
        }
        for(Account A: MapAccounts.values()) {
           	List <Task> auxT = mapAcc.get(A.id);
            if(auxT == NULL) auxT = new List <Task> ();
            for(Task T: auxT) {
                if(T.ActivityDate > System.Now() && (A.Next_Activity_date__C == NULL || T.activityDate < A.Next_Activity_date__c)) A.Next_Activity_date__c = T.ActivityDate;
        
            }
            Atoupdate.add(A);
        }
        for(Lead L: MapLeads.values()) {
           	List <Task> auxT = mapLead.get(L.id);
            if(auxT == NULL) auxT = new List <Task> ();
            for(Task T: auxT) {
                if(T.ActivityDate > System.Now() && (L.Next_Activity_date__C == NULL || T.activityDate < L.Next_Activity_date__c)) {
                    L.Next_Activity_date__c = T.ActivityDate;                  
                } 
                else if(T.ActivityDate < System.now() && (L.True_last_activity__c == NULL|| T.activityDate > L.True_Last_Activity__c)) {
                    L.True_Last_Activity__c = T.ActivityDate;
                    L.Last_Sales_interaction__C = T.Type;      
                    } 
            }
            Ltoupdate.add(L);
        }
        update Atoupdate;
        update TasktoAccUpdate; 
        update Ltoupdate;
	}    
}