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
Bryan PaldinoBryan Paldino 

Build an Apex Class using the class for test

Hi Everyone,
I'm new to Apex coding and can't seem to wrap my brain around how to create an Apex class to test a trigger I have developed.  I was wondering if anyone can help me.

trigger CreateRenEnrollmentrecord on Case (before update) {
    List<Enrollment__c> enrollments = new List<Enrollment__c>();

    //For each enrollment processed by the trigger, add a new  
    for (Case newEnrollment: Trigger.New) {
        if ((newEnrollment.Proactive_Renewal_override__c == 'Yes' & newEnrollment.Renewal_Enrollment_built__c <> 'Yes') || (newEnrollment.Begin_Reenroll_workflow__c== 'Yes' & newEnrollment.Renewal_Enrollment_built__c <> 'Yes')) {
            newEnrollment.Renewal_Enrollment_built__c = 'Yes';
            enrollments.add(new Enrollment__c(
                        Name = 'Renewal',
                        Case__c = newEnrollment.Id,
                        Type_2__c = 'Renewal',
                        Product__c= newEnrollment.Product__c,
                        Start_Date__c = newEnrollment.Next_Enrollment_Date__c,
                        Account_Manager_2__c = newEnrollment.Account_Manager__c,
                        Status__c = 'Re-enrollment Communication'));
        }
    }
    insert enrollments;
}

Thanks
Best Answer chosen by Bryan Paldino
Maharajan CMaharajan C
Hi Bryan,

use the below test class: 

small update in the steven code to fire the trigger:

@isTest
private class CreateRenEnrollmentrecordTest {

    @isTest static void testHandler(){
        
        Account acct = new Account(Name = 'Test Account');
        insert acct;
        
        Case newCase = new Case();
        newCase.Proactive_Renewal_override__c = 'Yes';
        newCase.Begin_Reenroll_workflow__c = 'No';
        newCase.Renewal_Enrollment_built__c = 'Yes';
        newCase.AccountId = acct.Id;
        newCase.Status = 'New';
        newCase.Subject = 'Test';
        
        insert newCase;
        
        newCase.Renewal_Enrollment_built__c = 'No';
        Test.startTest();
        update newCase;
        Test.stopTest();   

        
        List<Enrollment__c> enrollments = [SELECT Id FROM Enrollment__c];
        System.assert(enrollments.size() > 0);
        
    }
}

Can you please Let me know if it helps or not!!!

If it helps don't forget to mark this as a best answer!!!


Thanks,
Raj

All Answers

Steven NsubugaSteven Nsubuga
A test class tests the logic of your trigger. Here is one that you may need to modify to include additional custom fields you added to the case object.
@isTest
private class CreateRenEnrollmentrecordTest {

    @isTest static void testHandler(){
		
		Account acct = new Account(Name = 'Test Account');
		insert acct;
		
        Case newCase = new Case();
		newCase.Proactive_Renewal_override__c = 'Yes';
		newCase.Begin_Reenroll_workflow__c = 'No';
		newCase.Renewal_Enrollment_built__c = 'No';
		newCase.AccountId = acct.Id;
		newCase.Status = 'New';
		newCase.Subject = 'Test';
		
		insert newCase;
		
		List<Enrollment__c> enrollments = [SELECT Id FROM Enrollment__c];
		System.assert(enrollments.size() > 0);
		
    }
}

 
Maharajan CMaharajan C
Hi Bryan,

use the below test class: 

small update in the steven code to fire the trigger:

@isTest
private class CreateRenEnrollmentrecordTest {

    @isTest static void testHandler(){
        
        Account acct = new Account(Name = 'Test Account');
        insert acct;
        
        Case newCase = new Case();
        newCase.Proactive_Renewal_override__c = 'Yes';
        newCase.Begin_Reenroll_workflow__c = 'No';
        newCase.Renewal_Enrollment_built__c = 'Yes';
        newCase.AccountId = acct.Id;
        newCase.Status = 'New';
        newCase.Subject = 'Test';
        
        insert newCase;
        
        newCase.Renewal_Enrollment_built__c = 'No';
        Test.startTest();
        update newCase;
        Test.stopTest();   

        
        List<Enrollment__c> enrollments = [SELECT Id FROM Enrollment__c];
        System.assert(enrollments.size() > 0);
        
    }
}

Can you please Let me know if it helps or not!!!

If it helps don't forget to mark this as a best answer!!!


Thanks,
Raj
This was selected as the best answer
Ajay K DubediAjay K Dubedi
Hi Bryan,

@isTest
private class CreateRenEnrollmentrecordTest {

    // Here we are inserting account and case.
    
    @testSetup 
    static void setup(){
    
        Account acctObj = new Account();
        acctObj.Name = 'Test Account'
        insert acctObj;
        
        Case caseObj = new Case();
        caseObj.Proactive_Renewal_override__c = 'Yes';
        caseObj.Begin_Reenroll_workflow__c = 'No';
        caseObj.Renewal_Enrollment_built__c = 'Yes';
        caseObj.AccountId = acct.Id;
        caseObj.Status = 'New';
        caseObj.Subject = 'Test';
        
        insert caseObj;

        }
    @isTest 
    static void testMethod1(){
        
        // Here getting the inserted account and fetching the related Case.
        
        Account acct = [SELECT Id FROM Account WHERE Name='Test Account' LIMIT 1];
        
        Case newcaseObj = [SELECT AccountId FROM Case WHERE AccountId=:acct LIMIT 1];
        // Updating the particular field of Case.
        newcaseObj.Renewal_Enrollment_built__c = 'No';
        
        Test.startTest();
        update newcaseObj;
        Test.stopTest();  
        
        }
        
        @isTest 
        static void testMethod2() 
             {
                  List<Enrollment__c> enrollments = [SELECT Id FROM Enrollment__c];
                System.assert(enrollments.size() > 0); // Checking the list of size.
             }

        
    }

Please select as best answer if it helps you.

Thank You,
Ajay Dubedi