Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Test automation logic from (Superbadge - Apex Specialist)
- ---------------------------------------------------------------
- SOURCE CODE1 : MaintenanceRequestHelperTest
- @istest
- public with sharing class MaintenanceRequestHelperTest {
- private static final string STATUS_NEW = 'New';
- private static final string WORKING = 'Working';
- private static final string CLOSED = 'Closed';
- private static final string REPAIR = 'Repair';
- private static final string REQUEST_ORIGIN = 'Web';
- private static final string REQUEST_TYPE = 'Routine Maintenance';
- private static final string REQUEST_SUBJECT = 'Testing subject';
- PRIVATE STATIC Vehicle__c createVehicle(){
- Vehicle__c Vehicle = new Vehicle__c(name = 'SuperTruck');
- return Vehicle;
- }
- PRIVATE STATIC Product2 createEq(){
- product2 equipment = new product2(name = 'SuperEquipment',
- lifespan_months__C = 10,
- maintenance_cycle__C = 10,
- replacement_part__c = true);
- return equipment;
- }
- PRIVATE STATIC Case createMaintenanceRequest(id vehicleId, id equipmentId){
- case cs = new case(Type=REPAIR,
- Status=STATUS_NEW,
- Origin=REQUEST_ORIGIN,
- Subject=REQUEST_SUBJECT,
- Equipment__c=equipmentId,
- Vehicle__c=vehicleId);
- return cs;
- }
- PRIVATE STATIC Equipment_Maintenance_Item__c createWorkPart(id equipmentId,id requestId){
- Equipment_Maintenance_Item__c wp = new Equipment_Maintenance_Item__c(Equipment__c = equipmentId,
- Maintenance_Request__c = requestId);
- return wp;
- }
- @istest
- private static void testMaintenanceRequestPositive(){
- Vehicle__c vehicle = createVehicle();
- insert vehicle;
- id vehicleId = vehicle.Id;
- Product2 equipment = createEq();
- insert equipment;
- id equipmentId = equipment.Id;
- case somethingToUpdate = createMaintenanceRequest(vehicleId,equipmentId);
- insert somethingToUpdate;
- Equipment_Maintenance_Item__c workP = createWorkPart(equipmentId,somethingToUpdate.id);
- insert workP;
- test.startTest();
- somethingToUpdate.status = CLOSED;
- update somethingToUpdate;
- test.stopTest();
- Case newReq = [Select id, subject, type, Equipment__c, Date_Reported__c, Vehicle__c, Date_Due__c
- from case
- where status =:STATUS_NEW];
- Equipment_Maintenance_Item__c workPart = [select id
- from Equipment_Maintenance_Item__c
- where Maintenance_Request__c =:newReq.Id];
- system.assert(workPart != null);
- system.assert(newReq.Subject != null);
- system.assertEquals(newReq.Type, REQUEST_TYPE);
- SYSTEM.assertEquals(newReq.Equipment__c, equipmentId);
- SYSTEM.assertEquals(newReq.Vehicle__c, vehicleId);
- SYSTEM.assertEquals(newReq.Date_Reported__c, system.today());
- }
- @istest
- private static void testMaintenanceRequestNegative(){
- Vehicle__C vehicle = createVehicle();
- insert vehicle;
- id vehicleId = vehicle.Id;
- product2 equipment = createEq();
- insert equipment;
- id equipmentId = equipment.Id;
- case emptyReq = createMaintenanceRequest(vehicleId,equipmentId);
- insert emptyReq;
- Equipment_Maintenance_Item__c workP = createWorkPart(equipmentId, emptyReq.Id);
- insert workP;
- test.startTest();
- emptyReq.Status = WORKING;
- update emptyReq;
- test.stopTest();
- list<case> allRequest = [select id
- from case];
- Equipment_Maintenance_Item__c workPart = [select id
- from Equipment_Maintenance_Item__c
- where Maintenance_Request__c = :emptyReq.Id];
- system.assert(workPart != null);
- system.assert(allRequest.size() == 1);
- }
- @istest
- private static void testMaintenanceRequestBulk(){
- 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>();
- for(integer i = 0; i < 300; i++){
- vehicleList.add(createVehicle());
- equipmentList.add(createEq());
- }
- insert vehicleList;
- insert equipmentList;
- for(integer i = 0; i < 300; i++){
- requestList.add(createMaintenanceRequest(vehicleList.get(i).id, equipmentList.get(i).id));
- }
- insert requestList;
- for(integer i = 0; i < 300; i++){
- workPartList.add(createWorkPart(equipmentList.get(i).id, requestList.get(i).id));
- }
- insert workPartList;
- test.startTest();
- for(case req : requestList){
- req.Status = CLOSED;
- oldRequestIds.add(req.Id);
- }
- update requestList;
- test.stopTest();
- list<case> allRequests = [select id
- from case
- where status =: STATUS_NEW];
- list<Equipment_Maintenance_Item__c> workParts = [select id
- from Equipment_Maintenance_Item__c
- where Maintenance_Request__c in: oldRequestIds];
- system.assert(allRequests.size() == 300);
- }
- }
- ----------------------------------------------------------------------------------------------------------
- SOURCE CODE2 : MaintenanceRequestHelper
- public with sharing class MaintenanceRequestHelper {
- public static void updateworkOrders(List<Case> updWorkOrders, Map<Id,Case> nonUpdCaseMap) {
- Set<Id> validIds = new Set<Id>();
- For (Case c : updWorkOrders){
- if (nonUpdCaseMap.get(c.Id).Status != 'Closed' && c.Status == 'Closed'){
- if (c.Type == 'Repair' || c.Type == 'Routine Maintenance'){
- validIds.add(c.Id);
- }
- }
- }
- if (!validIds.isEmpty()){
- List<Case> newCases = new List<Case>();
- 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)
- FROM Case WHERE Id IN :validIds]);
- Map<Id,Decimal> maintenanceCycles = new Map<ID,Decimal>();
- 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];
- for (AggregateResult ar : results){
- maintenanceCycles.put((Id) ar.get('Maintenance_Request__c'), (Decimal) ar.get('cycle'));
- }
- for(Case cc : closedCasesM.values()){
- Case nc = new Case (
- ParentId = cc.Id,
- Status = 'New',
- Subject = 'Routine Maintenance',
- Type = 'Routine Maintenance',
- Vehicle__c = cc.Vehicle__c,
- Equipment__c =cc.Equipment__c,
- Origin = 'Web',
- Date_Reported__c = Date.Today()
- );
- If (maintenanceCycles.containskey(cc.Id)){
- nc.Date_Due__c = Date.today().addDays((Integer) maintenanceCycles.get(cc.Id));
- }
- newCases.add(nc);
- }
- insert newCases;
- List<Equipment_Maintenance_Item__c> clonedWPs = new List<Equipment_Maintenance_Item__c>();
- for (Case nc : newCases){
- for (Equipment_Maintenance_Item__c wp : closedCasesM.get(nc.ParentId).Equipment_Maintenance_Items__r){
- Equipment_Maintenance_Item__c wpClone = wp.clone();
- wpClone.Maintenance_Request__c = nc.Id;
- ClonedWPs.add(wpClone);
- }
- }
- insert ClonedWPs;
- }
- }
- }
- -------------------------------------------------------------------------------------------------------------
- SOURCE CODE3 : MaintenanceRequest (trigger)
- trigger MaintenanceRequest on Case (before update, after update) {
- if(Trigger.isUpdate && Trigger.isAfter) {
- MaintenanceRequestHelper.updateworkOrders(Trigger.New, Trigger.OldMap);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement