You need to sign in to do that
Don't have an account?

Can anyone help me why I get only 15% coverage??
public class CreateInvoice{ public CreateInvoice(){ List<Training__c> trainingList = new List<Training__c>(); List<Facturatie__c> facturatieList = new List<Facturatie__c>(); try { trainingList = [SELECT id , NAME, Startdatum__c,factuur_bedrijf__c, (SELECT Cursist_Prijs__c, Training__c, Cursist__c,CreatedDate,Prijs_training__c, korting__c,Id FROM Trainingen_Volgen__r ) FROM Training__c WHERE id NOT IN (SELECT Training__c FROM Facturatie__c)]; }catch (Exception e) { System.debug('The following exception has occurred' + e.getMessage() + 'At line number :' + e.getLineNumber() + 'Error' + e.getStackTraceString()); } if(!trainingList.IsEmpty()){ for(Training__c trainingRecord : trainingList){ if(!trainingRecord.Trainingen_Volgen__r.IsEmpty()){ for(Cursist__c cursistRecord : trainingRecord.Trainingen_Volgen__r){ Facturatie__c facturatieRecord = checkDate(cursistRecord,trainingRecord); facturatieList.add(facturatieRecord); } } } if(!facturatieList.IsEmpty()){ try { insert facturatieList; }catch (Exception e) { System.debug('The following exception has occurred' + e.getMessage() + 'At line number :' + e.getLineNumber() + 'Error' + e.getStackTraceString()); } } } } public Facturatie__c checkDate(Cursist__c cursistRecord,Training__c trainingRecord){ if(cursistRecord != null && trainingRecord != null){ Date todaysDate = system.today(); if( todaysDate.addDays(-21) >= trainingRecord.Startdatum__c && todaysDate >= cursistRecord.CreatedDate && todaysDate.addDays(-1) >= trainingRecord.Startdatum__c){ Facturatie__c facturatieRecord = new Facturatie__c(); facturatieRecord.Training__c = trainingRecord.Id; facturatieRecord.Factuur_Datum__c = todaysDate; facturatieRecord.Verval_datum__c = todaysDate.addDays(30); if(cursistRecord.Prijs_training__c != null && cursistRecord.korting__c != null){ facturatieRecord.Factuur_Bedrag__c = cursistRecord.Prijs_training__c - cursistRecord.korting__c; }else if(cursistRecord.Prijs_training__c != null && cursistRecord.korting__c == null){ facturatieRecord.Factuur_Bedrag__c = cursistRecord.Prijs_training__c; }else if(cursistRecord.Prijs_training__c == null && cursistRecord.korting__c != null){ facturatieRecord.Factuur_Bedrag__c = cursistRecord.korting__c ; } facturatieRecord.Korting__c = cursistRecord.korting__c; facturatieRecord.cursist_prijs__c= cursistRecord.Cursist_Prijs__c ; facturatieRecord.Contactpersoon__c = cursistRecord.Cursist__c; facturatieRecord.Account__c = trainingRecord.factuur_bedrijf__c; return facturatieRecord; } } return null; } }
@isTest public class CreateInvoiceTestClass{ // Creating Test Data @isTest public static void testData(){ Account account = new Account(Name = 'TestAccount1'); insert account; List<Training__c> trainingList = new List<Training__c>(); for(integer counter=0;counter<20;counter++){ Training__c trainingRecord = new Training__c(); trainingRecord.name = 'TestRecord'+counter; trainingRecord.Startdatum__c = System.today().addDays(+2); trainingRecord.factuur_bedrijf__c = account.Id; trainingList.add(trainingRecord); } insert trainingList; List<Facturatie__c> facturatieList = new List<Facturatie__c>(); for(integer counter=0;counter<20;counter++){ Facturatie__c facturatieRecord = new Facturatie__c(); facturatieRecord.name = 'TestRecord'+counter; facturatieRecord.Factuur_Bedrag__c = 1000; facturatieRecord.Training__c = trainingList[counter].Id; facturatieList.add(facturatieRecord); } for(integer counter=0;counter<20;counter++){ Facturatie__c facturatieRecord = new Facturatie__c(); facturatieRecord.name = 'TestRecord2'+counter; facturatieRecord.Factuur_Bedrag__c = 1000; facturatieRecord.Training__c = trainingList[counter].Id; facturatieList.add(facturatieRecord); } insert facturatieList; List<Cursist__c> cursistList = new List<Cursist__c>(); for(integer counter=0;counter<20;counter++){ Cursist__c cursistRecord = new Cursist__c(); cursistRecord.Training__c = trainingList[counter].Id; cursistRecord.Prijs_training__c = 10; cursistRecord.korting__c = 10; cursistRecord.CreatedDate = System.today(); cursistList.add(cursistRecord); } insert cursistList; system.debug(facturatieList[0].Account__c); Test.StartTEst(); CreateInvoice createInv = new CreateInvoice(); Test.stopTest(); System.assertEquals(facturatieList[0].Account__c,null); } }
I think your code needs some improvement. While fetching the trainingList in the constructor do not put it in a try/catch as try catch is always needed when you do a DML or webservice call. For SOQL - do not use try/catch. I understand, you might be anticipating zero records. When using SOQL and then you can check the size of the list to be greater than zero before proceeding.
I also notice that in your test class at line 27 and 36 while creating the records for child test object - I doubt below line holds the Salesforce Id of the Training object because inserting the record using the list does not updates list back again - it only inserts into database and list remains the same.