Untitled
unknown
plain_text
3 years ago
6.2 kB
5
Indexable
@istest public with sharing class MaintenanceRequestHelperTest { @istest private static void testMaintenanceRequestPositive(){ //Creo il veicolo su cui farò la maintenance Vehicle__c Vehicle = new Vehicle__C(name = 'SuperTruck'); insert vehicle; id vehicleId = vehicle.Id; //Creo il pezzo del veicolo su cui si farà la maintenance product2 equipment = new product2(name = 'SuperEquipment', lifespan_months__C = 10, maintenance_cycle__C = 10, replacement_part__c = true); insert equipment; id equipmentId = equipment.Id; //Creo la maintenance legandola al veicolo e all'equipment di cui sopra case somethingToUpdate = new case(Type='Repair', Status='New', Origin='Web', Subject='Testing subject', Equipment__c=equipmentId, Vehicle__c=vehicleId); insert somethingToUpdate; //Lego l'equipment e la maintenance tramite l'oggetto Equipment maintenance item Equipment_Maintenance_Item__c workP = new Equipment_Maintenance_Item__c(Equipment__c = equipmentId, Maintenance_Request__c = somethingToUpdate.id); insert workP; //Faccio l'update che fa scattare il trigger mettendo il case a 'Closed' test.startTest(); somethingToUpdate.status = 'Closed'; update somethingToUpdate; test.stopTest(); //Mi prendo il case che ha generato il trigger sapendo che è l'unico con status = 'new' Case newReq = [Select id, subject, type, Equipment__c, Date_Reported__c, Vehicle__c, Date_Due__c from case where status = 'new']; //Mi prendo l'oggetto Equipment maintenance item legato al nuovo case generato Equipment_Maintenance_Item__c workPart = [select id from Equipment_Maintenance_Item__c where Maintenance_Request__c =:newReq.Id]; //Faccio tutti i vari test per vedere se il trigger ha creato i dati nel modo giusto system.assert(workPart != null); system.assert(newReq.Subject != null); system.assertEquals(newReq.Type, 'Routine Maintenance'); SYSTEM.assertEquals(newReq.Equipment__c, equipmentId); SYSTEM.assertEquals(newReq.Vehicle__c, vehicleId); SYSTEM.assertEquals(newReq.Date_Reported__c, system.today()); SYSTEM.assertEquals(newReq.Date_Due__c, system.today()+10); } @istest private static void testMaintenanceRequestNegative(){ //Creo il veicolo su cui farò la maintenance Vehicle__c Vehicle = new Vehicle__C(name = 'SuperTruck'); insert vehicle; id vehicleId = vehicle.Id; //Creo il pezzo del veicolo su cui si farà la maintenance product2 equipment = new product2(name = 'SuperEquipment', lifespan_months__C = 10, maintenance_cycle__C = 10, replacement_part__c = true); insert equipment; id equipmentId = equipment.Id; //Creo la maintenance legandola al veicolo e all'equipment di cui sopra case emptyReq = new case(Type='Repair', Status='New', Origin='Web', Subject='Testing subject', Equipment__c=equipmentId, Vehicle__c=vehicleId); insert emptyReq; //Lego l'equipment e la maintenance tramite l'oggetto Equipment maintenance item Equipment_Maintenance_Item__c workP = new Equipment_Maintenance_Item__c(Equipment__c = equipmentId, Maintenance_Request__c = emptyReq.Id); insert workP; //Faccio un update che NON fa scattare il trigger mettendo il case a 'Working' test.startTest(); emptyReq.Status = 'Working'; update emptyReq; test.stopTest(); //Mi prendo tutti i case dal Database fittizio list<case> allRequest = [select id from case]; //Controllo che non siano stati creati altri case dal trigger system.assert(allRequest.size() == 1); } @istest private static void testMaintenanceRequestBulk(){ //Creo delle liste di appoggio per inserire più oggetti contemporaneamente list<Vehicle__C> vehicleList = new list<Vehicle__C>(); list<Product2> equipmentList = new list<Product2>(); list<Equipment_Maintenance_Item__c> workPartList = new list<Equipment_Maintenance_Item__c>(); list<case> requestList = new list<case>(); list<id> oldRequestIds = new list<id>(); //Inserisco 300 veicoli e 300 pezzi for(integer i = 0; i < 300; i++){ vehicleList.add(new Vehicle__C(name = 'SuperTruck')); equipmentList.add(new product2(name = 'SuperEquipment', lifespan_months__C = 10, maintenance_cycle__C = 10, replacement_part__c = true)); } insert vehicleList; insert equipmentList; //Inserisco 300 maintenance legando i vari veicoli e pezzi delle liste sopra for(integer i = 0; i < 300; i++){ requestList.add(new case(Type='Repair', Status='New', Origin='Web', Subject='Testing subject', Equipment__c=equipmentList.get(i).id, Vehicle__c=vehicleList.get(i).id)); } insert requestList; //Inserisco 300 oggetti Equipment Maintenance Item per legare le Maintenance agli equipment for(integer i = 0; i < 300; i++){ workPartList.add(new Equipment_Maintenance_Item__c(Equipment__c = equipmentList.get(i).id, Maintenance_Request__c = requestList.get(i).id)); } insert workPartList; //Aggiorno 300 oggetti case mettendo lo status closed per far partire il trigger test.startTest(); for(case req : requestList){ req.Status = 'Closed'; oldRequestIds.add(req.Id); //Mi salvo tutti i vecchi ID dei case che sto chiudendo } update requestList; test.stopTest(); //Prendo tutti i case con status='new' che il trigger dovrebbe aver creato list<case> allRequests = [select id from case where status = 'new']; system.assert(allRequests.size() == 300); } }
Editor is loading...