You need to sign in to do that
Don't have an account?
Collen Mayer 6
System.NullPointerException in Test Class
Hi All,
I'm getting an error when trying to write my test class for my controller extension:
System.NullPointerException: Attempt to de-reference a null object//Class.Invoice.<init>: line 20, column 1
Class.TestClassforInvoice.testmyInvoices: line 25, column 1
Here's my test class:
ApexPages.StandardController sc = new ApexPages.StandardController(testcase); Invoice controller = new Invoice(sc);
This is my extension:
Collen
I'm getting an error when trying to write my test class for my controller extension:
System.NullPointerException: Attempt to de-reference a null object//Class.Invoice.<init>: line 20, column 1
Class.TestClassforInvoice.testmyInvoices: line 25, column 1
Here's my test class:
@istest public class TestClassforInvoice { public static testMethod void testmyInvoices(){ Account testAccount = new Account (Name = 'MyHousehold'); Insert testAccount; Contact testContact = new Contact (LastName= 'smith'); insert testContact; AECaseMgmt__Program__c programNew = new AECaseMgmt__Program__c(Name= 'test prg'); insert programNew; AECaseMgmt__Program_Case__c testCase = new AECaseMgmt__Program_Case__c (AECaseMgmt__Open_Date__c = System.now().date(), Program__c = programNew.Id, BypassValidationForProcessBuilder__c = true); testCase.AECaseMgmt__Household__c = testAccount.id; insert testCase; Case_Member_Enrollments__c testmember = new Case_Member_Enrollments__c (Name = 'testCM', Case_ID__c = testCase.id, BypassValidationForProcessBuilder__c=true ); testmember.Case_Member__c = testContact.id; insert testmember; Client_Billing__c clientbill = new Client_Billing__c (Entry_Type__c = 'Planned Expense', Billing_Item__c = 'Court Report', Client_Case__c = testCase.Id); ApexPages.StandardController sc = new ApexPages.StandardController(testcase); Invoice controller = new Invoice(sc); PageReference pageRef = Page.SingleInvoice; Test.setCurrentPage(pageRef); } }The problem seems to be here:
ApexPages.StandardController sc = new ApexPages.StandardController(testcase); Invoice controller = new Invoice(sc);
This is my extension:
public class Invoice { public ApexPages.StandardController stdCntrlr {get; set;} public list <CasewInvoices> caselist {get; set;} public list <Client_Billing__c> tempinvoicelist {get; set;} public String currentRecordId {get;set;} public decimal thirtydayold {get; set;} public decimal sixtydayold {get;set;} public decimal ninetydayold {get;set;} public Invoice(ApexPages.StandardController controller) { stdCntrlr = controller; if (caselist==null){ caselist = new List <CasewInvoices>(); } tempinvoicelist = [Select ID, Client_Case__c, Name, Amount__c, Date__c,Transaction_Description__c, Amount_Credit_Debit__c from Client_Billing__c Where Include_on_Invoice__c = true ]; currentRecordId = ApexPages.CurrentPage().getparameters().get('id'); String pageName = ApexPages.currentPage().getUrl().substringAfter('apex/'); system.debug('-----current page name----'+pagename); // populate case list; if from single invoice, just get one case; otherwise get all If (pageName.contains('SingleInvoice')) { for (AECaseMgmt__Program_Case__c record: [Select ID, AECaseMgmt__Household__r.BillingSTreet, AECaseMgmt__Household__r.BillingCity, AECaseMgmt__Household__r.BillingState,AECaseMgmt__Household__r.BillingPostalCode, AECaseMgmt__Household__r.npe01__One2OneContact__r.name, Program__r.name, Name,Account_Balance__c from AECaseMgmt__Program_Case__c where Id =: currentRecordId]) { caselist.add(New CasewInvoices (record)); } } Else { for (AECaseMgmt__Program_Case__c record: [Select ID, AECaseMgmt__Household__r.BillingSTreet, AECaseMgmt__Household__r.BillingCity, AECaseMgmt__Household__r.BillingState,AECaseMgmt__Household__r.BillingPostalCode, AECaseMgmt__Household__r.npe01__One2OneContact__r.name, Program__r.name, Name,Account_Balance__c from AECaseMgmt__Program_Case__c where Id IN (SELECT Client_Case__c FROM Client_Billing__c)]) { caselist.add(New CasewInvoices (record)); } } for (CasewInvoices caseincrement:caselist) { Decimal thirtydayold = 3; for(Integer i = 0; i <tempinvoicelist.size(); i++){ if (tempinvoicelist[i].client_case__c ==caseincrement.clientcase.id) { caseincrement.billinglist.add (tempinvoicelist[i]); If (tempinvoicelist[i].Amount_Credit_Debit__c>0) { If (tempinvoicelist[i].date__c.daysBetween(date.today())> 90) caseincrement.ninetydayold = caseincrement.thirtydayold + tempinvoicelist[i].Amount_Credit_Debit__c; If (tempinvoicelist[i].date__c.daysBetween(date.today())> 60) caseincrement.sixtydayold = caseincrement.thirtydayold + tempinvoicelist[i].Amount_Credit_Debit__c; If (tempinvoicelist[i].date__c.daysBetween(date.today())> 30) caseincrement.thirtydayold = caseincrement.thirtydayold + tempinvoicelist[i].Amount_Credit_Debit__c; } Else { caseincrement.ninetydayold = caseincrement.ninetydayold + tempinvoicelist[i].Amount_Credit_Debit__c; caseincrement.sixtydayold = caseincrement.sixtydayold + tempinvoicelist[i].Amount_Credit_Debit__c; caseincrement.thirtydayold = caseincrement.thirtydayold + tempinvoicelist[i].Amount_Credit_Debit__c; } } } } } Public class CasewInvoices { public List<Client_Billing__c> billingList {get;set;} public AECaseMgmt__Program_Case__c Clientcase {get;set;} public decimal thirtydayold {get;set;} public decimal sixtydayold {get;set;} public decimal ninetydayold {get;set;} public CasewInvoices (AECaseMgmt__Program_Case__c cc) { Clientcase = cc; billingList = new list<Client_Billing__c>(); thirtydayold = 0; sixtydayold = 0; ninetydayold = 0; } } }Can someone help me troubleshoot this error, please? Many thanks.
Collen
Let us know if this will help you