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
Austin GutzAustin Gutz 

Test Class - Help (APEX Trigger)

trigger UpdateOppEmail on OpportunityTeamMember (after insert) {

    List<OpportunityTeamMember> memberList = new List<OpportunityTeamMember>();
    List<Opportunity> oppToUpdateList = new List<Opportunity>();
    List<Id> idUserList = new List<Id>();
    
    for(OpportunityTeamMember member : trigger.new) {
        
        if(member.TeamMemberRole != 'Program Manager') continue;
        
        memberList.add(member);
        idUserList.add(member.UserId);
    }
    
    if(memberList.isEmpty()) return;
    
    Map<Id, User> userMap = new Map<Id, User>([SELECT Id, Email FROM User WHERE Id IN :idUserList]);
    
    for(OpportunityTeamMember member : memberList) {
        
        Opportunity oppToUpdate = new Opportunity(Id = member.OpportunityId);
        oppToUpdate.PM_Email__c = userMap.get(member.UserId).Email;
        
        oppToUpdateList.add(oppToUpdate);
    }

    update oppToUpdateList;
}
Can anyone help me start writing a test class for this Trigger? I'm not a developer so I really don't have any APEX experience. I think I understand the idea is to create a test record(s) to cause the trigger to go off thus testing its functionality... I just don't know how to start writing that. Any help would be greatly appreciated. 
 
Abdul KhatriAbdul Khatri
try this
 
@isTest
public class UpdateOpportunityPM {
    
    static testMethod void test_update_PM(){
        
		Id stdProfId = [Select id from Profile WHERE Name=:'Standard User'].Id;
        User stdUser = new User();
        stdUser.FirstName = 'Admin';
        stdUser.LastName = 'testUser';
        stdUser.Email = 'stdtestUserak@test.com';
        stdUser.Username = 'stdtestUserak@test.com';
        stdUser.ProfileId = stdProfId;
        stdUser.IsActive = true;
        stdUser.LanguageLocaleKey = 'en_US';
        stdUser.LocaleSidKey = 'en_US';
        stdUser.Alias = stdUser.FirstName.substring(0,1) + stdUser.LastName.substring(0,4);
        stdUser.EmailEncodingKey = 'UTF-8';
        stdUser.TimeZoneSidKey = 'GMT';        
        insert stdUser;        
       
        Opportunity opportunity = new Opportunity (Name = 'Test', CloseDate = date.today(), StageName = 'Prospecting');
        insert opportunity;
        
        OpportunityTeamMember member = new OpportunityTeamMember();
        member.TeamMemberRole = 'Program Manager';
        member.OpportunityId = opportunity.Id;
        member.UserId = stdUser.Id;
        insert member;
        
        Opportunity opp = [SELECT PM_Email__c FROM Opportunity WHERE Id = : opportunity.Id];
        system.assert(opp.PM_Email__c == stdUser.Id);
    }

}

 
Abdul KhatriAbdul Khatri
sorry small correction
 
@isTest
public class UpdateOpportunityPM {
    
    static testMethod void test_update_PM(){
        
		Id stdProfId = [Select id from Profile WHERE Name=:'Standard User'].Id;
        User stdUser = new User();
        stdUser.FirstName = 'Admin';
        stdUser.LastName = 'testUser';
        stdUser.Email = 'stdtestUserak@test.com';
        stdUser.Username = 'stdtestUserak@test.com';
        stdUser.ProfileId = stdProfId;
        stdUser.IsActive = true;
        stdUser.LanguageLocaleKey = 'en_US';
        stdUser.LocaleSidKey = 'en_US';
        stdUser.Alias = stdUser.FirstName.substring(0,1) + stdUser.LastName.substring(0,4);
        stdUser.EmailEncodingKey = 'UTF-8';
        stdUser.TimeZoneSidKey = 'GMT';        
        insert stdUser;        
       
        Opportunity opportunity = new Opportunity (Name = 'Test', CloseDate = date.today(), StageName = 'Prospecting');
        insert opportunity;
        
        OpportunityTeamMember member = new OpportunityTeamMember();
        member.TeamMemberRole = 'Program Manager';
        member.OpportunityId = opportunity.Id;
        member.UserId = stdUser.Id;
        insert member;
        
        Opportunity opp = [SELECT PM_Email__c FROM Opportunity WHERE Id = : opportunity.Id];
        system.assert(opp.PM_Email__c == stdUser.Email);
    }

}