function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Anil DuttAnil Dutt 

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

Best Answer chosen by Admin (Salesforce Developers) 
Navatar_DbSupNavatar_DbSup

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

Navatar_DbSupNavatar_DbSup

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. 

 

This was selected as the best answer
Anil DuttAnil Dutt

 

Thanks Ankit, it works

 

 

tonyvia27tonyvia27

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.