Advertisement
Learnify_Rectify

Test automation logic

Jul 10th, 2024 (edited)
11,070
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.38 KB | Source Code | 0 0
  1. Test automation logic from (Superbadge - Apex Specialist)
  2.  
  3.  
  4. ---------------------------------------------------------------
  5. SOURCE CODE1 : MaintenanceRequestHelperTest
  6.  
  7. @istest
  8. public with sharing class MaintenanceRequestHelperTest {
  9.  
  10. private static final string STATUS_NEW = 'New';
  11. private static final string WORKING = 'Working';
  12. private static final string CLOSED = 'Closed';
  13. private static final string REPAIR = 'Repair';
  14. private static final string REQUEST_ORIGIN = 'Web';
  15. private static final string REQUEST_TYPE = 'Routine Maintenance';
  16. private static final string REQUEST_SUBJECT = 'Testing subject';
  17.  
  18. PRIVATE STATIC Vehicle__c createVehicle(){
  19. Vehicle__c Vehicle = new Vehicle__c(name = 'SuperTruck');
  20. return Vehicle;
  21. }
  22.  
  23. PRIVATE STATIC Product2 createEq(){
  24. product2 equipment = new product2(name = 'SuperEquipment',
  25. lifespan_months__C = 10,
  26. maintenance_cycle__C = 10,
  27. replacement_part__c = true);
  28. return equipment;
  29. }
  30.  
  31. PRIVATE STATIC Case createMaintenanceRequest(id vehicleId, id equipmentId){
  32. case cs = new case(Type=REPAIR,
  33. Status=STATUS_NEW,
  34. Origin=REQUEST_ORIGIN,
  35. Subject=REQUEST_SUBJECT,
  36. Equipment__c=equipmentId,
  37. Vehicle__c=vehicleId);
  38. return cs;
  39. }
  40.  
  41. PRIVATE STATIC Equipment_Maintenance_Item__c createWorkPart(id equipmentId,id requestId){
  42. Equipment_Maintenance_Item__c wp = new Equipment_Maintenance_Item__c(Equipment__c = equipmentId,
  43. Maintenance_Request__c = requestId);
  44. return wp;
  45. }
  46.  
  47.  
  48. @istest
  49. private static void testMaintenanceRequestPositive(){
  50. Vehicle__c vehicle = createVehicle();
  51. insert vehicle;
  52. id vehicleId = vehicle.Id;
  53.  
  54. Product2 equipment = createEq();
  55. insert equipment;
  56. id equipmentId = equipment.Id;
  57.  
  58. case somethingToUpdate = createMaintenanceRequest(vehicleId,equipmentId);
  59. insert somethingToUpdate;
  60.  
  61. Equipment_Maintenance_Item__c workP = createWorkPart(equipmentId,somethingToUpdate.id);
  62. insert workP;
  63.  
  64. test.startTest();
  65. somethingToUpdate.status = CLOSED;
  66. update somethingToUpdate;
  67. test.stopTest();
  68.  
  69. Case newReq = [Select id, subject, type, Equipment__c, Date_Reported__c, Vehicle__c, Date_Due__c
  70. from case
  71. where status =:STATUS_NEW];
  72.  
  73. Equipment_Maintenance_Item__c workPart = [select id
  74. from Equipment_Maintenance_Item__c
  75. where Maintenance_Request__c =:newReq.Id];
  76.  
  77. system.assert(workPart != null);
  78. system.assert(newReq.Subject != null);
  79. system.assertEquals(newReq.Type, REQUEST_TYPE);
  80. SYSTEM.assertEquals(newReq.Equipment__c, equipmentId);
  81. SYSTEM.assertEquals(newReq.Vehicle__c, vehicleId);
  82. SYSTEM.assertEquals(newReq.Date_Reported__c, system.today());
  83. }
  84.  
  85. @istest
  86. private static void testMaintenanceRequestNegative(){
  87. Vehicle__C vehicle = createVehicle();
  88. insert vehicle;
  89. id vehicleId = vehicle.Id;
  90.  
  91. product2 equipment = createEq();
  92. insert equipment;
  93. id equipmentId = equipment.Id;
  94.  
  95. case emptyReq = createMaintenanceRequest(vehicleId,equipmentId);
  96. insert emptyReq;
  97.  
  98. Equipment_Maintenance_Item__c workP = createWorkPart(equipmentId, emptyReq.Id);
  99. insert workP;
  100.  
  101. test.startTest();
  102. emptyReq.Status = WORKING;
  103. update emptyReq;
  104. test.stopTest();
  105.  
  106. list<case> allRequest = [select id
  107. from case];
  108.  
  109. Equipment_Maintenance_Item__c workPart = [select id
  110. from Equipment_Maintenance_Item__c
  111. where Maintenance_Request__c = :emptyReq.Id];
  112.  
  113. system.assert(workPart != null);
  114. system.assert(allRequest.size() == 1);
  115. }
  116.  
  117. @istest
  118. private static void testMaintenanceRequestBulk(){
  119. list<Vehicle__c> vehicleList = new list<Vehicle__c>();
  120. list<Product2> equipmentList = new list<Product2>();
  121. list<Equipment_Maintenance_Item__c> workPartList = new list<Equipment_Maintenance_Item__c>();
  122. list<case> requestList = new list<case>();
  123. list<id> oldRequestIds = new list<id>();
  124.  
  125. for(integer i = 0; i < 300; i++){
  126. vehicleList.add(createVehicle());
  127. equipmentList.add(createEq());
  128. }
  129. insert vehicleList;
  130. insert equipmentList;
  131.  
  132. for(integer i = 0; i < 300; i++){
  133. requestList.add(createMaintenanceRequest(vehicleList.get(i).id, equipmentList.get(i).id));
  134. }
  135. insert requestList;
  136.  
  137. for(integer i = 0; i < 300; i++){
  138. workPartList.add(createWorkPart(equipmentList.get(i).id, requestList.get(i).id));
  139. }
  140. insert workPartList;
  141.  
  142. test.startTest();
  143. for(case req : requestList){
  144. req.Status = CLOSED;
  145. oldRequestIds.add(req.Id);
  146. }
  147. update requestList;
  148. test.stopTest();
  149.  
  150. list<case> allRequests = [select id
  151. from case
  152. where status =: STATUS_NEW];
  153.  
  154. list<Equipment_Maintenance_Item__c> workParts = [select id
  155. from Equipment_Maintenance_Item__c
  156. where Maintenance_Request__c in: oldRequestIds];
  157.  
  158. system.assert(allRequests.size() == 300);
  159. }
  160. }
  161.  
  162. ----------------------------------------------------------------------------------------------------------
  163.  
  164.  
  165. SOURCE CODE2 : MaintenanceRequestHelper
  166.  
  167. public with sharing class MaintenanceRequestHelper {
  168. public static void updateworkOrders(List<Case> updWorkOrders, Map<Id,Case> nonUpdCaseMap) {
  169. Set<Id> validIds = new Set<Id>();
  170.  
  171.  
  172. For (Case c : updWorkOrders){
  173. if (nonUpdCaseMap.get(c.Id).Status != 'Closed' && c.Status == 'Closed'){
  174. if (c.Type == 'Repair' || c.Type == 'Routine Maintenance'){
  175. validIds.add(c.Id);
  176.  
  177.  
  178. }
  179. }
  180. }
  181.  
  182. if (!validIds.isEmpty()){
  183. List<Case> newCases = new List<Case>();
  184. Map<Id,Case> closedCasesM = new Map<Id,Case>([SELECT Id, Vehicle__c, Equipment__c, Equipment__r.Maintenance_Cycle__c,(SELECT Id,Equipment__c,Quantity__c FROM Equipment_Maintenance_Items__r)
  185. FROM Case WHERE Id IN :validIds]);
  186. Map<Id,Decimal> maintenanceCycles = new Map<ID,Decimal>();
  187. AggregateResult[] results = [SELECT Maintenance_Request__c, MIN(Equipment__r.Maintenance_Cycle__c)cycle FROM Equipment_Maintenance_Item__c WHERE Maintenance_Request__c IN :ValidIds GROUP BY Maintenance_Request__c];
  188.  
  189. for (AggregateResult ar : results){
  190. maintenanceCycles.put((Id) ar.get('Maintenance_Request__c'), (Decimal) ar.get('cycle'));
  191. }
  192.  
  193. for(Case cc : closedCasesM.values()){
  194. Case nc = new Case (
  195. ParentId = cc.Id,
  196. Status = 'New',
  197. Subject = 'Routine Maintenance',
  198. Type = 'Routine Maintenance',
  199. Vehicle__c = cc.Vehicle__c,
  200. Equipment__c =cc.Equipment__c,
  201. Origin = 'Web',
  202. Date_Reported__c = Date.Today()
  203.  
  204. );
  205.  
  206. If (maintenanceCycles.containskey(cc.Id)){
  207. nc.Date_Due__c = Date.today().addDays((Integer) maintenanceCycles.get(cc.Id));
  208. }
  209.  
  210. newCases.add(nc);
  211. }
  212.  
  213. insert newCases;
  214.  
  215. List<Equipment_Maintenance_Item__c> clonedWPs = new List<Equipment_Maintenance_Item__c>();
  216. for (Case nc : newCases){
  217. for (Equipment_Maintenance_Item__c wp : closedCasesM.get(nc.ParentId).Equipment_Maintenance_Items__r){
  218. Equipment_Maintenance_Item__c wpClone = wp.clone();
  219. wpClone.Maintenance_Request__c = nc.Id;
  220. ClonedWPs.add(wpClone);
  221.  
  222. }
  223. }
  224. insert ClonedWPs;
  225. }
  226. }
  227. }
  228.  
  229. -------------------------------------------------------------------------------------------------------------
  230.  
  231. SOURCE CODE3 : MaintenanceRequest (trigger)
  232.  
  233. trigger MaintenanceRequest on Case (before update, after update) {
  234. if(Trigger.isUpdate && Trigger.isAfter) {
  235. MaintenanceRequestHelper.updateworkOrders(Trigger.New, Trigger.OldMap);
  236. }
  237. }
  238.  
  239.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement