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
Sandesh Vishwakarma 9Sandesh Vishwakarma 9 

Hello Wonderful people, Please help me out with the test class code for this trigger and handler class

Apex Trigger :-


trigger TruckSupplyActual on Truck_Supply_Actual__c (after insert, after update) {
    if(Trigger.isAfter && Trigger.isInsert) 
    {
        TriggerHandler.insertRecord(Trigger.new);
    }
    if(Trigger.isBefore || Trigger.isAfter && Trigger.isUpdate )
    {
        TriggerHandler.updateRecord(Trigger.newMap, Trigger.oldMap);
    }
}

--------------------------------------------------------------------------------------------------------------


Apex Handler Class :-


public class TriggerHandler {
    public static void insertRecord(list<Truck_Supply_Actual__c> recordList ){
        list<Truck_Supply_Booking__c> truckSupplyBookinggList = new list<Truck_Supply_Booking__c>();
        for(Truck_Supply_Actual__c a : recordList){
            if(a.Amount__c != null){
                Decimal i = a.Amount__c;
                for(Integer j=1;j<=i;j++){
                    Truck_Supply_Booking__c truckSupplyBookingList = new Truck_Supply_Booking__c();
                    truckSupplyBookingList.Truck_Supply_Actual__c = a.ID;
                    truckSupplyBookingList.Date__c = system.today();
                    truckSupplyBookingList.Status__c = 'Available';
                    truckSupplyBookingList.truck__c = a.Truck__c;
                    truckSupplyBookinggList.add(truckSupplyBookingList);
                    
                }
            }
              insert truckSupplyBookinggList;
        }    
    }
    
    public static void updateRecord(Map<id,Truck_Supply_Actual__c> newValues , Map <id,Truck_Supply_Actual__c> oldValues){
        list<Truck_Supply_Booking__c> truckSupplyBookinggList = new list<Truck_Supply_Booking__c>(); 
        for(Truck_Supply_Actual__c a : newValues.values())
        { 
            if(oldValues.get(a.Id).Additional_Amount__c != newValues.get(a.Id).Additional_Amount__c)
            {    
                Truck_Supply_Actual__c record = [Select Id, Additional_Amount__c From Truck_Supply_Actual__c WHERE id =: a.Id]; 
                record.Additional_1_Created__c = true;
                update record;
                Decimal i = newValues.get(a.Id).Additional_Amount__c;
                for(Integer j=1;j<=i;j++){
                    Truck_Supply_Booking__c truckSupplyBookingList = new Truck_Supply_Booking__c();
                    truckSupplyBookingList.Truck_Supply_Actual__c = a.Id;
                    truckSupplyBookingList.Date__c = a.Date__c;
                    truckSupplyBookingList.Status__c = 'Available';
                    truckSupplyBookingList.truck__c = a.Truck__c;
                    truckSupplyBookinggList.add(truckSupplyBookingList);
                }
            }
            
            // -------------------------------- 2 -----------------------------------
            
             if(oldValues.get(a.Id).Additional_Amount_2__c != newValues.get(a.Id).Additional_Amount_2__c)
            {    
                Truck_Supply_Actual__c recordd = [Select Id, Additional_Amount_2__c From Truck_Supply_Actual__c WHERE id =: a.Id]; 
                recordd.Additional_2_Created__c = true;
                update recordd;
                Decimal i = newValues.get(a.Id).Additional_Amount_2__c;
                for(Integer j=1;j<=i;j++){
                    Truck_Supply_Booking__c truckSupplyBookingList = new Truck_Supply_Booking__c();
                    truckSupplyBookingList.Truck_Supply_Actual__c = a.Id;
                    truckSupplyBookingList.Date__c = a.Date__c;
                    truckSupplyBookingList.Status__c = 'Available';
                    truckSupplyBookingList.truck__c = a.Truck__c;
                    truckSupplyBookinggList.add(truckSupplyBookingList);
                }
            }
            
            //------------------------------------- 3 ----------------------------
            
                         if(oldValues.get(a.Id).Additional_Amount_3__c != newValues.get(a.Id).Additional_Amount_3__c)
            {    
                Truck_Supply_Actual__c recordd = [Select Id, Additional_Amount_3__c From Truck_Supply_Actual__c WHERE id =: a.Id]; 
                recordd.Additional_3_Created__c = true;
                update recordd;
                Decimal i = newValues.get(a.Id).Additional_Amount_3__c;
                for(Integer j=1;j<=i;j++){
                    Truck_Supply_Booking__c truckSupplyBookingList = new Truck_Supply_Booking__c();
                    truckSupplyBookingList.Truck_Supply_Actual__c = a.Id;
                    truckSupplyBookingList.Date__c = a.Date__c;
                    truckSupplyBookingList.Status__c = 'Available';
                    truckSupplyBookingList.truck__c = a.Truck__c;
                    truckSupplyBookinggList.add(truckSupplyBookingList);
                }
            }
            
        }
        insert truckSupplyBookinggList;
    }
}
Sai PraveenSai Praveen (Salesforce Developers) 
Hi,

Can you confirm what is the relation between Truck_Supply_Actual__c,Truck_Supply_Booking__c so I can share the test class for you.

Thanks,

 
Sandesh Vishwakarma 9Sandesh Vishwakarma 9
Hello Sai , Thanks for the response , Actually There is Master Detail relation betweeen these two.
User-added image
Sai PraveenSai Praveen (Salesforce Developers) 
Hi Vishwakarma,

Is Truck_Supply_Booking__c child ?

Thanks,
 
Sandesh Vishwakarma 9Sandesh Vishwakarma 9
Hello , 
Yes.

Truck_Supplies_Booking is a child.
Sai PraveenSai Praveen (Salesforce Developers) 
Hi Sandesh,
Can you confirm what type of field is Truck__c. As I have to replicate entire structure in my org need these information.

Thanks,
 
Sandesh Vishwakarma 9Sandesh Vishwakarma 9
yes it a lookup realtion with Truck__c object. Below attached snap in on Truck_Supplies_Booking object

User-added image
Sai PraveenSai Praveen (Salesforce Developers) 
Hi Sandeep,

Can you try the below test class it gave me 100% coverage. Make sure you give all the required fields while inserting Truck and Truck_Supply_Actual__c.
 
@isTest
public class TruckSupplyActualTest {
@isTest static void testtrucksupply() {
    Truck__c trk= new Truck__c();
    trk.name='sample truck';
    insert trk;
    Truck_Supply_Actual__c tsa= new Truck_Supply_Actual__c();
    tsa.Amount__c=123;
    tsa.truck__c=trk.id;
    insert tsa;
    
    tsa.Additional_1_Created__c=true;
    tsa.Additional_2_Created__c=true;
    tsa.Additional_3_Created__c=true;
    tsa.Additional_Amount__c=234;
    tsa.Additional_Amount_2__c=567;
    tsa.Additional_Amount_3__c= 890;
    update tsa;
    
    List<Truck_Supply_Booking__c>tsblist = new List<Truck_Supply_Booking__c>();
    tsblist=[select id,name,Truck_Supply_Actual__c from Truck_Supply_Booking__c where Truck_Supply_Actual__c = :tsa.id ];
    system.assertEquals(1814, tsblist.size());
}
}

Let me know if you face any issues.

If this solution helps, Please mark it as best answer.

Thanks,
Sandesh Vishwakarma 9Sandesh Vishwakarma 9
Sorry to say but its not working for me.
 
Sai PraveenSai Praveen (Salesforce Developers) 
Hi,

Can you confirm what is not working. Are you able to save the test class ? Is it failing with some error?

Thanks,