You need to sign in to do that
Don't have an account?
salesforcee
trigger apex test - Auto create record
How do we write a test apex for a trigger that creates a child record when a parent record is created?
trigger AutoCreateInterviewer on Position__c (after insert) { List<Interviewer__c> interviewers = new List<Interviewer__c>(); //For each position processed by the trigger, add a new //interviewer record for the specified hiring manager. //Note that Trigger.New is a list of all the new positions //that are being created. for (Position__c newPosition: Trigger.New) { if (newPosition.Hiring_Manager__c != null) { interviewers.add(new Interviewer__c( Name = '1', Position__c = newPosition.Id, Employee__c = newPosition.Hiring_Manager__c, Role__c = 'Managerial')); } } insert interviewers; }
Hi
Try this code:-
thank you but unfortunately running the test fails.
The test coverage does not include this part
How can I test it?
try this:
@isTest
private class MYTestClass {
static testMethod void AutoCreateInterviewer() {
//Set up the test data
Profile p = [SELECT Id FROM Profile WHERE Name='Standard User'];
User u = new User(Alias = 'standt', Email='standarduser@testorg.com',
EmailEncodingKey='UTF-8', LastName='Testing', LanguageLocaleKey='en_US',
LocaleSidKey='en_US', ProfileId = p.Id,
TimeZoneSidKey='America/Los_Angeles', UserName='noonespecial@testorg.com');
insert u;
//create a new position with a hiring manager
System.Debug('Create new position - validate single insert');
Position__c newposition = new Position__c();
newposition.Name = 'Position1';
newposition.Hiring_Manager__c=u.Id;
//call the trigger
insert newposition;
System.Debug('New Position Hiring Manager is ' + u.id);
Interviewer__c i =[SELECT Position__c, Employee__c, Role__c FROM Interviewer__c
WHERE CreatedDate = TODAY and Role__c !=NULL
LIMIT 1];
//Validate positive test case
System.debug('Role is ' + i.Role__c);
System.assert(i.Role__c=='Managerial');
}
}
Hi
@isTest
private class MYTestClass {
static testMethod void AutoCreateInterviewer() {
Position__c newposition = new Position__c();
newposition.Name = 'Position1';
newposition.Hiring_Manager__c='rest';
insert newposition;
list<Interviewer__c >ld =new list<Interviewer__c>{
Interviewer__c i=new Interviewer__c();
i.Name='123';
//put all your mandatory fields.
ld.add(i);
}
insert ld;
}
}
Thank you guys.
I will see if this works
I was using the initial trigger to create this one :
trigger AutoCreateReview on Phases__c (before insert, before update) {
List< File__c > F=new List< File__c >();
List< Review__c > R =new List< Review__c >();
for (Phases__c newP: Trigger.New) {
if (newP.Phase_Number__c == 'I' && newP.State_Review__c == 'In progress' ) {
R.add(new Review__c(
Phases__c = newP.Id,
File__c = newP. File__c,
Review_Title__c = 'BP',
Description__c = 'BPD',
Validation__c = 'BP Approved.'));
}
if (newP.Phase_Number__c == 'I'&& newP.State_Review__c == 'In progress') {
R.add(new Review__c(
Phases__c = newP.Id,
File__c = newP. File__c,
Review_Title__c = 'Diagnosis',
Description__c = 'DiagnosisD',
Validation__c = 'Diagnosis Approved'));
}
if (newP.Phase_Number__c == 'I'&& newP.State_Review__c == 'In progress'&& (newP File__r.Capital__c<100000)) {
R.add(new Review__c(
Phases__c = newP.Id,
File__c = newP. File__c,
Review_Title__c = 'Certificate',
Description__c = 'Document sent',
Validation__c = 'Certificate approved'));
}
}
insert R;
}
The goal is to create a number of reviews depending on which phase we are in. Reviews and Phases are linked by a master-detail relationship, Phases being the parent. These two are both children to the master grandfather object File__c.
My test is at 66% coverage. I used the same test you guys provided. It still does not cover the adding part. What do you recommend?
Thank you for your help.
Hey salesforcee, your trigger looks like it is inserting two records here: your first two if statements are the same. Is that what you are meaning to do?
There are four phases and for each phase there is a number of records to create. Would that be a problem?