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
Thiago Barbosa 1Thiago Barbosa 1 

'MaintenanceRequest' trigger does not appear to be handling bulk operations correctly. For the positive use case of inserting and updating more than 200 records, it did not produce the expected outcome.

@isTest
public class MaintenanceRequestTest {
    
	
    @isTest static void testSetup(){
        
        
                List<Product2> equip = new List<Product2>();
        		equip.add(new Product2(Name ='Test Equipament', 
                                         Maintenance_Cycle__c = 10,
                                         Cost__c = 100,
                                         Current_Inventory__c = 10,
                                         Lifespan_Months__c = 10,
                                         Replacement_Part__c = true,
                                         Warehouse_SKU__c = 'abc'));
            
                        
                        insert equip;
        
        System.debug( 'Equip' + equip);
        
        Database.insert(equip, false);
        
        
        
    }
    
    @isTest static void testMaintenanceRequest(){
        
        MaintenanceRequestTest.testSetup();
        
        List<Case> listInsert = new List<Case>();
        
        List<Case> listUpdate = new List<Case>();
        
      	Id equipId = [SELECT Id FROM Product2 LIMIT 1].Id;
         System.debug('Product2' + equipId);
        
        
           for(Integer i = 0 ; i < 300; i++){
            Case caseInsert = new Case(Type='Routine Maintenance', Status = 'New', Origin = 'Phone');
			caseInsert.Equipment__c = equipId;            
        
            listInsert.add(caseInsert);
        }
        Database.insert(listInsert, false);
        
        
        Test.startTest();
        
        System.assertEquals(300, listInsert.size());
        
        
        for(Case c: listInsert){
            c.Status = 'Closed';
            listUpdate.add(c);
        }
        
        Database.update (listUpdate, false);
        
        System.assertEquals(300, listUpdate.size());
       
       
        
        User usuario = [SELECT id FROM User WHERE Id =: UserInfo.getUserId()];
              
    	System.runAs(usuario){
               
        	
             List<Case> ClosedCaseList = [SELECT Type, Status, Equipment__c, Date_Due__c, Date_Reported__c, Vehicle__c FROM Case WHERE status = 'Closed'];    
			
          	 MaintenanceRequestHelper.updateWorkOrders(ClosedCaseList);  
            
            }
        
       Test.stopTest(); 
    }
    
   
   
     	
}

 
RKSalesforceRKSalesforce
Please share your Trigger Code here. It is really hard to provide solution / Comment on your question without your Trigger or Helper Class.

Regards,
Ramakant
Glyn Anderson 3Glyn Anderson 3
If I read your code correctly, your assertions will always be true.  How can you tell that the code is not performing correctly?
Thiago Barbosa 1Thiago Barbosa 1
/*Hello, This being the trigger. Thankyou!


trigger MaintenanceRequest on Case (before update, after update) {
    
   		List<Case> ClosedList = [SELECT Type, Status, Equipment__c, Date_Due__c, Date_Reported__c, Vehicle__c FROM Case WHERE status = 'Closed'];    
		
    	
    
    if(Trigger.isUpdate){
        for(Case c : Trigger.New){
            if(c.Type == 'Repair'  ||  c.Type =='Routine Maintenance'){
        		ClosedList.add(c);
                
                
        	}
            
    	
	    }
         
        
    }
    	MaintenanceRequestHelper.updateWorkOrders(ClosedList); 
               }