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
NiknitNiknit 

why is my test class failing

@istest

private class StudentupdatehandlerTestClass {
    
      
      @testSetup
           static void testData(){
        
                list<student_details__c> studlist = new list<student_details__c>();
                list<department__c> deptlist = new list<department__c>();
                for(integer i=0;i<2;i++){
                    Department__c  newdept = new department__c();   
                    newdept.name='dept'+i;
                    newdept.no_of_students__c=0;  
                    deptlist.add(newdept);
                }
            insert deptlist;
                   
                for(integer i=0;i<2;i++){
                   student_details__c newstudent = new Student_details__c();
                   newstudent.Name='Student'+i;   
                   newstudent.department__c = deptlist[i].id;    
                   studlist.add(newstudent);
                  }
            insert studlist;
           
           
           }
    
    
      @istest
           static void validateinsert() {
      
      
                  list<department__c> deptlist = [SELECT Id, no_of_students__c FROM Department__c];
 
                  list<student_details__c> studlist = [SELECT Id, name,department__c FROM student_details__c]; 

                  deptlist = [SELECT Id,name, no_of_students__c FROM Department__c];  
  
                    for(integer i=0;i<2;i++){
                       System.assertEquals('dept'+i , deptlist[i].name);
                       System.assertEquals(1 , deptlist[i].no_of_students__c);
                               }
                  }
     
     
       @istest
           static void validateupdate() {
                  list<department__c> deptlist = [SELECT Id, name,no_of_students__c FROM Department__c];
                  list<student_details__c> studlist = [SELECT Id,name, department__c FROM student_details__c];    
 
                       System.assertEquals(1 , deptlist[0].no_of_students__c);
                       System.assertEquals(1 , deptlist[1].no_of_students__c);
                    
                       studlist[1].department__c = deptlist[0].id;
                      
                       update studlist; 
 
                       deptlist = [SELECT Id, name,no_of_students__c FROM Department__c ];
                       
                       System.assertEquals('dept0' , deptlist[0].name);
                       System.assertEquals(2 , deptlist[0].no_of_students__c);
                       System.assertEquals('dept1' , deptlist[1].name);
                       System.assertEquals(0 , deptlist[1].no_of_students__c);        
                  }
            
            }


iin the last 3 lines,          

System.assertEquals(2 , deptlist[0].no_of_students__c);
  its failing as actual value is showing 1, it should be 2.

I don't understand why.

 

Amit Chaudhary 8Amit Chaudhary 8

Can you please post your code in which class you added logic to calculate no_of_students__c

 
NiknitNiknit

This test class is working

@istest
private class validateupdatehandlerClass {
    
 @istest
    static void validateupdatehandler() {
     

      Department__c  newdept = new department__c();   
      newdept.name='CSE';
      newdept.no_of_students__c=0;
      
      insert newdept;

       newDept = [SELECT Id, no_of_students__c FROM Department__c LIMIT 1 ];
       student_details__c newstudent = new Student_details__c();
       newstudent.Name='FromTestClass';   
       newstudent.department__c = newdept.id;    
       insert newstudent;

 
       newDept = [SELECT Id, no_of_students__c FROM Department__c where id=:newdept.id ];  
 
       System.assertEquals(1 , newdept.no_of_students__c);

 
      Department__c  anotherDept = new department__c();   
      anotherDept.name='Another Department';
      anotherDept.no_of_students__c=0;

      insert anotherDept;

      newstudent.department__c = anotherDept.Id;
      update newstudent;

       newDept = [SELECT Id, no_of_students__c FROM Department__c where id=:newdept.id];  
 
       System.assertEquals(0 , newdept.no_of_students__c);

       anotherDept = [SELECT Id, no_of_students__c FROM Department__c where id=:anotherdept.id];  
 
       System.assertEquals(1 , anotherDept.no_of_students__c);

        
      delete newstudent; 
       newDept = [SELECT Id, no_of_students__c FROM Department__c where id=:newdept.id];  
 
       System.assertEquals(0 , newdept.no_of_students__c);

       anotherDept = [SELECT Id, no_of_students__c FROM Department__c where id=:anotherdept.id];  
 
       System.assertEquals(0 , anotherDept.no_of_students__c);
    }
}



The following is the trigger and class

Trigger Class

 

public class studentupdatehandler{

     set<id> deptid = new set<id>();  
      
  
  
public void afterinsert(student_details__c[] newstudentslist) {
             
         list<department__c> newdeptlist = [select id,name,no_of_students__c from department__c where id in:forids(newstudentslist)];
        toinsert(newdeptlist);
 

 } 
 
 
     public void afterdelete(student_details__c[] oldstudentslist) {
         list<department__c> olddeptlist = [select id,name,no_of_students__c from department__c where id in:forids(oldstudentslist)];
       
        toupdate(olddeptlist);
 

 }

  


    public void afterupdate(student_details__c[] newstudentslist,student_details__c[] oldstudentslist) {
 
        list<department__c> newdeptlist = [select id,name,no_of_students__c from department__c where id in:forids(newstudentslist)];
        toinsert(newdeptlist);
        
         
        list<department__c> odeptlist= [select id,name,no_of_students__c from department__c where id in:forids(oldstudentslist)];
        toupdate(odeptlist);  
        
}



Public set<id> forids(student_details__c[] deptlist ){


        set<id> ids = new set<id>();
        
         for(student_Details__c record: deptlist){
        
             ids.add(record.Department__c);
           
            }
return ids;}

Public void toinsert(department__c[] deptlist ){

        System.debug('@@@@@deplist ' + deptlist);

        for(department__c dept : deptlist){

                   dept.no_of_students__c = dept.no_of_students__c + 1;
        }  
        System.debug('after increment @@@@@deplist ' + deptlist);               
   update deptlist;      
        } 

Public void toupdate(department__c[] odeptlist ){


        for(department__c dept : odeptlist){
                 dept.no_of_students__c = dept.no_of_students__c -1;
             } 
         update odeptlist; 
}



}

Trigger

trigger Test on Student_Details__c (after insert, after update,after delete) {

        
       
        studentupdatehandler studobj = new studentupdatehandler();

        


        if(trigger.isinsert)
        {
        studobj.afterinsert(trigger.new);
        }
        
        if(trigger.isdelete)
        {
        studobj.afterdelete(trigger.old);
        }
        
       if(trigger.isupdate)
       {
       studobj.afterupdate(trigger.new,trigger.old);
       }    
}