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
FinneyFinney 

HELP Please - Apex Test Class help.

Hi,

I have a trigger and I have also written a test class to test the trigger but only 20% of the trigger code is covered leaving 134 lines uncovered. My overall coverage is 60% and I'm trying to increase the coverage to 75%.

I am posting the trigger and the test class I've written. Can someone please help me.

trigger ShowingNotesAdded on pb__Showing__c (after insert, before update) {
    Account[] a = new Account[6];
    pb__InventoryItem__c[] i = new pb__InventoryItem__c[6];
    integer index = 0;
    integer c = 0;
    string response;
    Recordtype r;
    Date duedate;
    String[] toAddresses = new String[] {};
    for (pb__Showing__c s : trigger.new){
        //r = [select name from recordtype where sobjecttype = 'pb__Showing__c' and id = :s.RecordTypeId];
       
       
       if(trigger.IsInsert){
                  
            response = s.record_type_name__c;
            if (response.contains('Lettings')){
                r = [select id, Name from recordtype where sobjecttype = 'Event' and Name = 'Lettings Viewing'];
            }
            if (response.contains('Sales')){
                r = [select id, Name from recordtype where sobjecttype = 'Event' and Name = 'Sales Viewing'];
            }  
            if (response.contains('Lease')){
                r = [select id, Name from recordtype where sobjecttype = 'Event' and Name = 'Lease Viewing'];
            }  
         
            Event e = new Event();
            e.OwnerId = s.OwnerId;
            e.Subject = r.Name;
            e.RecordTypeId = r.Id;
            e.Description = 'Event created through Showing/Viewing';
            e.WhatId = s.Id;
            e.StartDateTime = s.start_time__c;
            e.EndDateTime = s.end_time__c;
            insert e;
      }
     
       
        if (trigger.IsUpdate){
            pb__Showing__c olds = Trigger.oldMap.get(s.ID);
            Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
           
            //create date from datetime
            duedate = Date.newInstance(s.Start_Time__c.year(),s.Start_Time__c.month(),s.Start_Time__c.day());
           
            if (s.pb__Inventory__c != null && s.Inventory_A_Notes__c != null && s.Send_Feedback_to_Vendor_A__c != false ){
                toAddresses.clear();
                i[index] = [select id, Unit_No__c, AreaUAE__c, Project__c, sellerid__c from pb__InventoryItem__c where id =: s.pb__Inventory__c];
                a[index] = [select Id, Name, PersonEmail from Account where Id =: i[index].SellerId__c];
               
                mail.setPlainTextBody('Dear ');
                toAddresses.add(a[index].PersonEmail);
                mail.setToAddresses(toAddresses);                             
                mail.setUseSignature(false);
                mail.setSenderDisplayName('Smith & Ken');                           
                mail.setSubject('Viewing Feedback');
               
                try{
                    Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
                    }
                catch(System.EmailException ex){
                    system.debug('============== email exception caught!!!=============');
                    response = ex.getMessage();
                }    
                Task t = new Task();
                t.OwnerId = s.OwnerId;
                t.Subject = 'Viewing Feedback';
                t.Description = s.Inventory_A_Notes__c;
                t.WhatId = i[index].Id;
                t.ActivityDate = duedate;
                t.Status = 'Completed';
   
                insert t;
                index++;
            }
           
           if (s.Inventory_B__c != null && s.Inventory_B_Notes__c != null  && s.Send_Feedback_to_Vendor_B__c != false ){
                toAddresses.clear();
                i[index] = [select id, Unit_No__c, AreaUAE__c, Project__c, sellerid__c from pb__InventoryItem__c where id =: s.Inventory_B__c];
                a[index] = [select Id, Name,PersonEmail from Account where Id =: i[index].SellerId__c];
               
                mail.setPlainTextBody('Dear ');
                toAddresses.add(a[index].PersonEmail);
                mail.setToAddresses(toAddresses);                             
                mail.setUseSignature(false);
                mail.setSenderDisplayName('Smith & Ken');                           
                mail.setSubject('Viewing Feedback');
               
                try{
                    Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
                    }
                catch(System.EmailException ex){
                    system.debug('============== email exception caught!!!=============');
                    response = ex.getMessage();
                }
                Task t = new Task();
                t.OwnerId = s.OwnerId;
                t.Subject = 'Viewing Feedback';
                t.Description = s.Inventory_B_Notes__c;
                t.ActivityDate = duedate;
                t.WhatId = i[index].Id;
                t.Status = 'Completed';
   
                insert t;
                index++;
            }
           
            if (s.Inventory_C__c != null && s.Inventory_C_Notes__c != olds.Inventory_C_Notes__c && s.Send_Feedback_to_Vendor_C__c != false ){
                toAddresses.clear();
                i[index] = [select id, Unit_No__c, AreaUAE__c, Project__c, sellerid__c from pb__InventoryItem__c where id =: s.Inventory_C__c];
                a[index] = [select Id, Name,PersonEmail from Account where Id =: i[index].SellerId__c];
       
                mail.setPlainTextBody('Dear');
                toAddresses.add(a[index].PersonEmail);
                mail.setToAddresses(toAddresses);                             
                mail.setUseSignature(false);
                mail.setSenderDisplayName('Smith & Ken');                           
                mail.setSubject('Viewing Feedback');
               
                try{
                    Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
                    }
                catch(System.EmailException ex){
                    system.debug('============== email exception caught!!!=============');
                    response = ex.getMessage();
                }
                Task t = new Task();
                t.OwnerId = s.OwnerId;
                t.Subject = 'Viewing Feedback';
                t.ActivityDate = duedate;
                t.Description = s.Inventory_C_Notes__c;
                t.WhatId = i[index].Id;
                t.Status = 'Completed';
   
                insert t;
                index++;
            }
           
            if (s.Inventory_D__c != null && s.Inventory_D_Notes__c != olds.Inventory_D_Notes__c && s.Send_Feedback_to_Vendor_D__c != false ){
                toAddresses.clear();
                i[index] = [select id, Unit_No__c, AreaUAE__c, Project__c, sellerid__c from pb__InventoryItem__c where id =: s.Inventory_D__c];
                a[index] = [select Id, Name,PersonEmail from Account where Id =: i[index].SellerId__c];
               
                mail.setPlainTextBody('Dear');
                toAddresses.add(a[index].PersonEmail);
                mail.setToAddresses(toAddresses);                             
                mail.setUseSignature(false);
                mail.setSenderDisplayName('Smith & Ken');                           
                mail.setSubject('Viewing Feedback');
               
                try{
                    Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
                    }
                catch(System.EmailException ex){
                    system.debug('============== email exception caught!!!=============');
                    response = ex.getMessage();
                }
                Task t = new Task();
                t.OwnerId = s.OwnerId;
                t.ActivityDate = duedate;
                t.Subject = 'Viewing Feedback';
                t.Description = s.Inventory_D_Notes__c;
                t.WhatId = i[index].Id;
                t.Status = 'Completed';
   
                insert t;
                index++;
            }
           
            if (s.Inventory_E__c != null && s.Inventory_E_Notes__c != olds.Inventory_E_Notes__c && s.Send_Feedback_to_Vendor_E__c != false){
                toAddresses.clear();
                i[index] = [select id, Unit_No__c, AreaUAE__c, Project__c, sellerid__c from pb__InventoryItem__c where id =: s.Inventory_E__c];
                a[index] = [select Id, Name,PersonEmail from Account where Id =: i[index].SellerId__c];
           
                mail.setPlainTextBody('Dear');
                toAddresses.add(a[index].PersonEmail);
                mail.setToAddresses(toAddresses);                             
                mail.setUseSignature(false);
                mail.setSenderDisplayName('Smith & Ken');                           
                mail.setSubject('Viewing Feedback');
               
                try{
                    Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
                    }
                catch(System.EmailException ex){
                    system.debug('============== email exception caught!!!=============');
                    response = ex.getMessage();
                }
               Task t = new Task();
                t.OwnerId = s.OwnerId;
                t.Subject = 'Viewing Feedback';
                t.ActivityDate = duedate;
                t.Description = s.Inventory_E_Notes__c;
                t.WhatId = i[index].Id;
                t.Status = 'Completed';
   
                insert t;
                index++;
            }
           
            if (s.Inventory_F__c != null && s.Inventory_F_Notes__c != olds.Inventory_F_Notes__c && s.Send_Feedback_to_Vendor_F__c != false){
                toAddresses.clear();
                i[index] = [select id, Unit_No__c, AreaUAE__c, Project__c, sellerid__c from pb__InventoryItem__c where id =: s.Inventory_F__c];
                a[index] = [select Id, Name,PersonEmail from Account where Id =: i[index].SellerId__c];
           
                mail.setPlainTextBody('Dear');
                toAddresses.add(a[index].PersonEmail);
                mail.setToAddresses(toAddresses);                             
                mail.setUseSignature(false);
                mail.setSenderDisplayName('Smith & Ken');                           
                mail.setSubject('Viewing Feedback');
               
                try{
                    Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
                    }
                catch(System.EmailException ex){
                    system.debug('============== email exception caught!!!=============');
                    response = ex.getMessage();
                }
              
                Task t = new Task();
                t.OwnerId = s.OwnerId;
                t.Subject = 'Lettings Viewing Feedback';
                t.Description = s.Inventory_F_Notes__c;
                t.ActivityDate = duedate;
                t.WhatId = i[index].Id;
                t.Status = 'Completed';
                insert t;
                index++;
            }
        }
    }
}
 

FinneyFinney
Test Class for the trigger

@isTest
private class UnitTestShowingNotesAdded {

    static testMethod void myUnitTest() {
        // TO DO: implement unit test
    
     
    
    
        User u = [select id from user where Name = 'Benjamin Smith'];
      
        //create test account
        Account a = new Account();
        a.LastName = 'testabcdef';
        a.PersonEmail='test@testsnk.com';
        a.Phone='987654';
        a.OwnerId = u.id;
        a.service_breach__c = false;
        a.pb__Status__c = 'Unqualified';
        insert a;
     
       pb__InventoryItem__c inv = new pb__InventoryItem__c();
        inv.name = 'abc123';
        inv.pb__IsForSale__c = true;
        inv.pb__PurchaseListPrice__c = 12313;
        inv.pb__IsAvailable__c = true;
        inv.Project__c = 'abcdd';
        inv.pb__ItemStatus__c = 'Available';
        inv.pb__IsBlocked__c = false;
        inv.SellerId__c = a.id;
        inv.AreaUAE__c = 'Dubai Marina';
        inv.Unit_No__c = '12test';
        inv.ItemStage__c = 'Available';
        insert inv;
     
     
       inv.OwnerId = u.id;
       update inv;

       //B
     
       pb__InventoryItem__c inv1 = new pb__InventoryItem__c();
        inv1.name = 'abc123';
        inv1.pb__IsForSale__c = true;
        inv1.pb__PurchaseListPrice__c = 12313;
        inv1.pb__IsAvailable__c = true;
        inv1.Project__c = 'abcdd';
        inv1.pb__ItemStatus__c = 'Available';
        inv1.pb__IsBlocked__c = false;
        inv1.SellerId__c = a.id;
        inv1.AreaUAE__c = 'Dubai Marina';
        inv1.Unit_No__c = '12test';
        inv1.ItemStage__c = 'Available';
        insert inv1;
     
     
       inv1.OwnerId = u.id;
       update inv1;
     
     
       pb__InventoryItem__c inv2 = new pb__InventoryItem__c();
        inv2.name = 'abc123';
        inv2.pb__IsForSale__c = true;
        inv2.pb__PurchaseListPrice__c = 12313;
        inv2.pb__IsAvailable__c = true;
        inv2.Project__c = 'abcdd';
        inv2.pb__ItemStatus__c = 'Available';
        inv2.pb__IsBlocked__c = false;
        inv2.SellerId__c = a.id;
        inv2.AreaUAE__c = 'Dubai Marina';
        inv2.Unit_No__c = '12test';
        inv2.ItemStage__c = 'Available';
        insert inv2;
     
     
       inv2.OwnerId = u.id;
       update inv2;
     
       Datetime todays= datetime.now();
     
         pb__Showing__c s = new pb__Showing__c();
         s.Start_Time__c=todays;
         s.End_Time__c=todays.addHours(2);
         s.Account__c=a.id;
         s.pb__Inventory__c=inv2.id;
         s.Status__c = 'Pending';
         insert s;
     
     
     
  
    }
}
Damien Phillippi033905702927186443Damien Phillippi033905702927186443
Your trigger seems extremely large.   Best advice I can give you is to write your tests to test portions of it at a time.