You need to sign in to do that
Don't have an account?
Kellan Scheiber
I am trying to complete the Apex Specialist SuperBadge. I am having an issue with passing the Test Class. I am using the below Class which passed but am getting an Null Pointer exception on lines 31 and 32 of my class. Any help would be appreciated.
public class MaintenanceRequestHelper { Public Static List<Case> oldCase = new List<Case>(); Public Static List<Case> case1 = [select ID from Case Where status = 'Closed' and Type IN ('Repair', 'Routine Maintenance')]; Public Static AggregateResult[] minCycleDay2 = [Select min(Equipment__r.Maintenance_Cycle__c) FROM Work_Part__c WHERE Equipment__r.Maintenance_Cycle__c != null AND Maintenance_Request__c IN: case1]; public static void updateWorkOrders(List<Case> closedCase){ oldCase = closedCase; List<Case> newCase = new List<Case>(); for (Case newCase2 : oldCase) { newCase.add(new Case(type = 'Routine Maintenance', status = 'New', origin = 'Web', Subject = null, Date_Reported__c = date.today(), Vehicle__c = newCase2.Vehicle__c, Equipment__c = newCase2.Equipment__c, Date_Due__c = cycleCalc2())); } insert newCase; } private static Date cycleCalc2() { Integer minCycleNum = ((Decimal)minCycleDay2[0].get('expr0')).intValue(); Date returnDate = Date.today().addDays(Integer.valueOf(minCycleNum)); return returnDate; } }
@isTest private class MaintenanceRequestTest { @isTest static void TestWithCycleDays() { Account acct = new Account(Name= 'testAcct'); insert acct; Contact cont = new Contact(LastName = 'contactTest', AccountID = acct.id, email = 'testcont@test.com'); insert cont; Product2 prd1 = new Product2(Name = 'ProductTest1', Maintenance_Cycle__c = 2, Replacement_Part__c = true); insert prd1; Vehicle__c vhcl1 = new Vehicle__c(Name = 'VehicleTest1'); insert vhcl1; Case MntRequest = new Case(description = 'test123', Subject = 'Other', type = 'Repair', status = 'New', origin = 'Web', Date_Reported__c = date.today(), Vehicle__c = vhcl1.id, Equipment__c = prd1.id, Date_Due__c = date.today(), ContactId = cont.id, AccountId = acct.id); insert MntRequest; Work_Part__c wp1 = new Work_Part__c(Equipment__c = prd1.Id, Maintenance_Request__c = MntRequest.id); insert wp1; MntRequest.status = 'Closed'; update MntRequest; } @isTest static void testCaseBulkInsert(){ List<Case> testCaseList = new List<Case>(); For(Integer i=1 ;i<=300 ; i++) { Case MntRequest = new Case( type = 'Routine Maintenance', status = 'Closed', origin = 'Web', Subject = null, Date_Reported__c = date.today(), Vehicle__c = null, Equipment__c = null, Date_Due__c = date.today()); testCaseList.add(MntRequest); } system.assertEquals(testCaseList.size(), 300); } }
trigger MaintenanceRequest on Case (after update, after insert) { Public List<Case> closedCase = new List<Case>(); List<Case> caseA = [select ID, vehicle__c, equipment__c, date_due__c from Case Where Id IN :Trigger.new AND status = 'Closed' and Type IN ('Repair', 'Routine Maintenance')]; for(Case a : caseA) { closedCase.add(a); } MaintenanceRequestHelper.updateWorkOrders(closedCase); }
1) https://developer.salesforce.com/forums/?id=906F0000000kEG5IAM
2) https://developer.salesforce.com/forums/?id=906F0000000kGqUIAU
3) https://developer.salesforce.com/forums/?id=906F0000000kGPsIAM
4) https://developer.salesforce.com/forums/?id=906F0000000kG7AIAU
Let us know if this will help you
Please check answer at:
https://developer.salesforce.com/forums/?id=9060G000000UZQeQAO
//Use this code in your test Class:
If you find your Solution then mark this as the best answer.
Thank you!
Regards
Suraj Tripathi