You need to sign in to do that
Don't have an account?
Test Case for Trigger(after insert, after update)
Hi All,
This is my trigger
trigger ETicketAirlineUrlTrigger on E_Ticket__c (after insert, after update) {
List<E_Ticket__c> listEt = new List<E_Ticket__c>();
for(E_Ticket__c et : Trigger.New)
{
E_Ticket__c etNew = [SELECT Id,Airline__c FROM E_Ticket__c WHERE Id =:et.id];
if(etNew.Airline__c =='Virgin Australia')
{
etNew.Airlines_Url__c = '<a href="http://www.virginaustralia.com/Personal/Bookings/Managebookings/index.htm">Virgin Australia</a>';
}
else if(etNew.Airline__c =='Virgin Atlantic')
{
etNew.Airlines_Url__c = '<a href="https://www.virgin-atlantic.com/en/us/manageyourflights/updatebooking/index.jsp">Virgin Atlantic</a>';
}
listEt.add(etNew);
}
if(listEt.size()>0)
update listEt;
}
And test case is
@isTest
private class ETicketAirlineUrlTestCase {
static testMethod void myUnitTest() {
Opportunity oppNew = new Opportunity();
oppNew.Name = 'Test Opp';
oppNew.StageName = 'To Be Searched';
oppNew.CloseDate = System.now().date();
insert oppNew;
E_Ticket__c et = new E_Ticket__c();
et.Airline__c = 'Virgin Australia';
et.Opportunity__c = oppNew.Id;
insert et;
List<E_Ticket__c> listEt = new List<E_Ticket__c>();
E_Ticket__c etOld = [SELECT Id,Airline__c FROM E_Ticket__c WHERE Id =:et.Id];
etOld.Airline__c = 'Virgin Atlantic';
listEt.add(etOld);
if (listEt != null && !listEt.isEmpty())
{
Database.update(listEt);
}
}
}
Getting following error
System.DmlException: Insert failed. First exception on row 0; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, ETicketAirlineUrlTrigger: execution of AfterInsert
What is wrong here?
Thanks
Hi,
In test class just create the record that will cover your trigger conditions.
Try the below test class snippet:
@isTest
private class ETicketAirlineUrlTestCase
{
static testMethod void myUnitTest()
{
List<E_Ticket__c> listEt = new List<E_Ticket__c>();
Opportunity oppNew = new Opportunity();
oppNew.Name = 'Test Opp';
oppNew.StageName = 'To Be Searched';
oppNew.CloseDate = System.now().date();
insert oppNew;
E_Ticket__c et = new E_Ticket__c();
et.Airline__c = 'Virgin Australia';
et.Opportunity__c = oppNew.Id;
listEt.add(et);
E_Ticket__c et1 = new E_Ticket__c();
et1.Airline__c = 'Virgin Atlantic';
et1.Opportunity__c = oppNew.Id;
listEt.add(et1);
insert listEt;
}
}
Did this answer your question? If not, let me know what didn't work, or if so, please mark it solved.
All Answers
Hi,
In test class just create the record that will cover your trigger conditions.
Try the below test class snippet:
@isTest
private class ETicketAirlineUrlTestCase
{
static testMethod void myUnitTest()
{
List<E_Ticket__c> listEt = new List<E_Ticket__c>();
Opportunity oppNew = new Opportunity();
oppNew.Name = 'Test Opp';
oppNew.StageName = 'To Be Searched';
oppNew.CloseDate = System.now().date();
insert oppNew;
E_Ticket__c et = new E_Ticket__c();
et.Airline__c = 'Virgin Australia';
et.Opportunity__c = oppNew.Id;
listEt.add(et);
E_Ticket__c et1 = new E_Ticket__c();
et1.Airline__c = 'Virgin Atlantic';
et1.Opportunity__c = oppNew.Id;
listEt.add(et1);
insert listEt;
}
}
Did this answer your question? If not, let me know what didn't work, or if so, please mark it solved.
Thanks Ankit, it works
I just wanted to add that I was having the same problem but when I put @isTest(SeeAllData=true)
at the top of my Test class everything worked and I got an initial 75% coverage.