• nicodem
  • NEWBIE
  • 0 Points
  • Member since 2013

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 1
    Questions
  • 2
    Replies

Hello all.

 

I'm working since a few time on apex and I develloped a trigger witch works well but My test class is a problem.

 

This is the error message :

 

System.DmlException: Insert failed. First exception on row 0; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, TR04Objectifcompte: execution of BeforeInsert
caused by: System.NullPointerException: Attempt to de-reference a null object
Trigger.TR04Objectifcompte: line 6, column 1: []

 

This is my trigger :

 

 

trigger TR04Objectifcompte on Account (before update, before insert) 
{

    for (Account a : trigger.new)
    {
    List<Objectifs_commerciaux_annuels__c> listobj = new List<Objectifs_commerciaux_annuels__c> ([select Id from Objectifs_commerciaux_annuels__c where Nom_du_VRP__r.Id =: a.OwnerId and recordtype.name = 'Objectifs liés au compte' and debut_periode__c <=: a.createddate.date() and fin_periode__c >=: a.createddate.date()]);
   
        if ( listobj.isEmpty() == false && (a.Nouveau_client__c == true || a.Commercialement_inactif__c == false) )
        {
            Objectifs_commerciaux_annuels__c obj = [select Id from Objectifs_commerciaux_annuels__c where Nom_du_VRP__r.Id =: a.OwnerId and recordtype.name = 'Objectifs liés au compte' and debut_periode__c <=: a.createddate.date() and fin_periode__c >=: a.createddate.date()]; 
            a.Objectifs_commerciaux_annuels__c = obj.id;
        }    
    
    }

}

 

This is my test class :

 

@isTest
public class ObjectifcompteTestClass{
  
  
    static testMethod void validateObjectifcompte() 
    {
    
// Creation of the user
Profile p = [select id from profile where name='Administrateur système'];
User u1 = new User(alias = 'standt2', email='standarduser@test12.com',
emailencodingkey='UTF-8', lastname='Testing1', languagelocalekey='en_US',
localesidkey='en_US', profileid = p.Id,firstname='Heather',
timezonesidkey='America/Los_Angeles', username='standarduser@test12.com');
insert u1;  

date mydate = date.today();

 

// Creation of the custom object "Objectifs_commerciaux_annuels__c"
String objRecordTypeId = [Select Id From RecordType Where SobjectType = 'Objectifs_commerciaux_annuels__c' and Name = 'Objectifs liés au compte'].Id;
Objectifs_commerciaux_annuels__c obj = new Objectifs_commerciaux_annuels__c(); 
obj.debut_periode__c = mydate.addDays(-15) ; 
obj.fin_periode__c = mydate.addDays(15);
obj.Nom_du_VRP__c = u1.Id;

obj.RecordTypeId = objRecordTypeId;
insert obj;

 

//Creation of the account witch respects conditions trigger
String strRecordTypeId1 = [Select Id From RecordType Where SobjectType = 'Account' and Name = 'Client'].Id;
Account accnt = new Account();
accnt.Name = 'test account';
accnt.RecordTypeId  = strRecordTypeId1;
accnt.OwnerId = u1.Id;
accnt.Nouveau_client__c = true;
accnt.Commercialement_inactif__c = false;
insert accnt ;

 

// Test       

System.assertEquals(obj.Id, accnt.Objectifs_commerciaux_annuels__c );

}
    
}

 

Defintly I know I didn't follow Apex bestpratcices because I have a Soql in a loop in my Trigger.

However, I spend a long time to try to stay in bestpratices and work my test class but I did not succes, so it would be wonderfull if somebody could help me to finish my development.

 

Hello all.

 

I'm working since a few time on apex and I develloped a trigger witch works well but My test class is a problem.

 

This is the error message :

 

System.DmlException: Insert failed. First exception on row 0; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, TR04Objectifcompte: execution of BeforeInsert
caused by: System.NullPointerException: Attempt to de-reference a null object
Trigger.TR04Objectifcompte: line 6, column 1: []

 

This is my trigger :

 

 

trigger TR04Objectifcompte on Account (before update, before insert) 
{

    for (Account a : trigger.new)
    {
    List<Objectifs_commerciaux_annuels__c> listobj = new List<Objectifs_commerciaux_annuels__c> ([select Id from Objectifs_commerciaux_annuels__c where Nom_du_VRP__r.Id =: a.OwnerId and recordtype.name = 'Objectifs liés au compte' and debut_periode__c <=: a.createddate.date() and fin_periode__c >=: a.createddate.date()]);
   
        if ( listobj.isEmpty() == false && (a.Nouveau_client__c == true || a.Commercialement_inactif__c == false) )
        {
            Objectifs_commerciaux_annuels__c obj = [select Id from Objectifs_commerciaux_annuels__c where Nom_du_VRP__r.Id =: a.OwnerId and recordtype.name = 'Objectifs liés au compte' and debut_periode__c <=: a.createddate.date() and fin_periode__c >=: a.createddate.date()]; 
            a.Objectifs_commerciaux_annuels__c = obj.id;
        }    
    
    }

}

 

This is my test class :

 

@isTest
public class ObjectifcompteTestClass{
  
  
    static testMethod void validateObjectifcompte() 
    {
    
// Creation of the user
Profile p = [select id from profile where name='Administrateur système'];
User u1 = new User(alias = 'standt2', email='standarduser@test12.com',
emailencodingkey='UTF-8', lastname='Testing1', languagelocalekey='en_US',
localesidkey='en_US', profileid = p.Id,firstname='Heather',
timezonesidkey='America/Los_Angeles', username='standarduser@test12.com');
insert u1;  

date mydate = date.today();

 

// Creation of the custom object "Objectifs_commerciaux_annuels__c"
String objRecordTypeId = [Select Id From RecordType Where SobjectType = 'Objectifs_commerciaux_annuels__c' and Name = 'Objectifs liés au compte'].Id;
Objectifs_commerciaux_annuels__c obj = new Objectifs_commerciaux_annuels__c(); 
obj.debut_periode__c = mydate.addDays(-15) ; 
obj.fin_periode__c = mydate.addDays(15);
obj.Nom_du_VRP__c = u1.Id;

obj.RecordTypeId = objRecordTypeId;
insert obj;

 

//Creation of the account witch respects conditions trigger
String strRecordTypeId1 = [Select Id From RecordType Where SobjectType = 'Account' and Name = 'Client'].Id;
Account accnt = new Account();
accnt.Name = 'test account';
accnt.RecordTypeId  = strRecordTypeId1;
accnt.OwnerId = u1.Id;
accnt.Nouveau_client__c = true;
accnt.Commercialement_inactif__c = false;
insert accnt ;

 

// Test       

System.assertEquals(obj.Id, accnt.Objectifs_commerciaux_annuels__c );

}
    
}

 

Defintly I know I didn't follow Apex bestpratcices because I have a Soql in a loop in my Trigger.

However, I spend a long time to try to stay in bestpratices and work my test class but I did not succes, so it would be wonderfull if somebody could help me to finish my development.