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
NHameedNHameed 

Need help writing Test Class for this Trigger Please

Trigger will prevent addition or deletion of Opportunity Team Member if "Opportunity_Team_Locked__c" on Opportunity =True. 

Trigger:

"Trigger OpptyTeamLock on OpportunityTeamMember (Before Insert,Before Delete){
set<Id> oppIdSet = new set<id>();
    If(Trigger.IsBefore){
        If(Trigger.IsInsert){
            for(OpportunityTeamMember otm : trigger.new){
            oppIdSet.add(otm.OpportunityId);
            }
}
        If(Trigger.IsDelete){
            for(OpportunityTeamMember otm : trigger.old){
            oppIdSet.add(otm.OpportunityId);
            }
            }
    }
    list<Opportunity>lstOpp = [select Id,Name,Opportunity_Team_Locked__c from opportunity where Id In :oppIdSet and Opportunity_Team_Locked__c = true];
    If(Trigger.IsBefore){
        If(Trigger.IsInsert){
            for(OpportunityTeamMember otm : trigger.new){
                if(lstOpp.Size()>0){
                otm.AddError('Error Message');
                }
            }
        }
        If(Trigger.IsDelete){
            for(OpportunityTeamMember otm : trigger.old){
                if(lstOpp.Size()>0){
                otm.AddError('Opportunity Team is locked. Contact Commission Team');
                }
            }
        }
    }
}"

This is my test class so far. Not only it's failing but it also needs the Before Delete part added. 

"@isTest
Public class OpptyTeamLock_Test{
public static testmethod void OpptyTeamTest()
{
 Opportunity Opp = new Opportunity (Name ='TestOTMOpportunity',StageName ='Prospecting', Type = 'New Customer',License_Type__c= 'Direct');
    insert Opp;
    List <OpportunityTeamMember> OTM = new List <OpportunityTeamMember> {
        new OpportunityTeamMember (TeamMemberRole = 'TSE Owner',OpportunityAccessLevel='Read Only')
        }; 
    insert OTM;
}        
}"

Thanks in advance. 
Best Answer chosen by NHameed
Sai PraveenSai Praveen (Salesforce Developers) 
Hi Hameed,

The below test class covered around 94% of the code. If required we can make to 100% as well by inserting another team member in second method.
 
@isTest
Public class OpptyTeamLock_Test{
public static testmethod void OpptyTeamTest()
{
     Profile p = [SELECT Id FROM Profile WHERE Name='Standard User']; 
        User u = new User(Alias = 'standt', Email='standarduser@testorg.com', 
            EmailEncodingKey='UTF-8', LastName='Testing', LanguageLocaleKey='en_US', 
            LocaleSidKey='en_US', ProfileId = p.Id, 
            TimeZoneSidKey='America/Los_Angeles', UserName='standardusedasdasdsaadr@testorg.com');
    insert u;
 Opportunity Opp = new Opportunity (Name ='TestOTMOpportunity',StageName ='Prospecting', Type = 'New Customer',CloseDate=date.today(),Opportunity_Team_Locked__c=true);
    insert Opp;
    OpportunityTeamMember opm = new OpportunityTeamMember(TeamMemberRole  = 'TSE Owner',OpportunityId=opp.id,UserId=u.id);
try {
            insert opm;
        }
        catch(Exception e) {
            System.assert(e.getMessage().contains('Error Message'));
        }
    
    
        }
    
    public static testmethod void OpptyTeamTest1()
{
     Profile p = [SELECT Id FROM Profile WHERE Name='Standard User']; 
        User u = new User(Alias = 'standt', Email='standarduser@testorg.com', 
            EmailEncodingKey='UTF-8', LastName='Testing', LanguageLocaleKey='en_US', 
            LocaleSidKey='en_US', ProfileId = p.Id, 
            TimeZoneSidKey='America/Los_Angeles', UserName='standardusedasdasdsaadr@testorg.com');
    insert u;
 Opportunity Opp = new Opportunity (Name ='TestOTMOpportunity',StageName ='Prospecting', Type = 'New Customer',CloseDate=date.today());
    insert Opp;
    OpportunityTeamMember opm = new OpportunityTeamMember(TeamMemberRole  = 'TSE Owner',OpportunityId=opp.id,UserId=u.id);
try {
            insert opm;
        }
        catch(Exception e) {
            System.assert(e.getMessage().contains('Error Message'));
        }
    opp.Opportunity_Team_Locked__c=true;
    
    try {
            delete opm;
        }
        catch(Exception e) {
            System.assert(e.getMessage().contains('Opportunity Team is locked. Contact Commission Team'));
        }
    
        }
}

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

Thanks,

All Answers

Sai PraveenSai Praveen (Salesforce Developers) 
Hi Hameed,

The below test class covered around 94% of the code. If required we can make to 100% as well by inserting another team member in second method.
 
@isTest
Public class OpptyTeamLock_Test{
public static testmethod void OpptyTeamTest()
{
     Profile p = [SELECT Id FROM Profile WHERE Name='Standard User']; 
        User u = new User(Alias = 'standt', Email='standarduser@testorg.com', 
            EmailEncodingKey='UTF-8', LastName='Testing', LanguageLocaleKey='en_US', 
            LocaleSidKey='en_US', ProfileId = p.Id, 
            TimeZoneSidKey='America/Los_Angeles', UserName='standardusedasdasdsaadr@testorg.com');
    insert u;
 Opportunity Opp = new Opportunity (Name ='TestOTMOpportunity',StageName ='Prospecting', Type = 'New Customer',CloseDate=date.today(),Opportunity_Team_Locked__c=true);
    insert Opp;
    OpportunityTeamMember opm = new OpportunityTeamMember(TeamMemberRole  = 'TSE Owner',OpportunityId=opp.id,UserId=u.id);
try {
            insert opm;
        }
        catch(Exception e) {
            System.assert(e.getMessage().contains('Error Message'));
        }
    
    
        }
    
    public static testmethod void OpptyTeamTest1()
{
     Profile p = [SELECT Id FROM Profile WHERE Name='Standard User']; 
        User u = new User(Alias = 'standt', Email='standarduser@testorg.com', 
            EmailEncodingKey='UTF-8', LastName='Testing', LanguageLocaleKey='en_US', 
            LocaleSidKey='en_US', ProfileId = p.Id, 
            TimeZoneSidKey='America/Los_Angeles', UserName='standardusedasdasdsaadr@testorg.com');
    insert u;
 Opportunity Opp = new Opportunity (Name ='TestOTMOpportunity',StageName ='Prospecting', Type = 'New Customer',CloseDate=date.today());
    insert Opp;
    OpportunityTeamMember opm = new OpportunityTeamMember(TeamMemberRole  = 'TSE Owner',OpportunityId=opp.id,UserId=u.id);
try {
            insert opm;
        }
        catch(Exception e) {
            System.assert(e.getMessage().contains('Error Message'));
        }
    opp.Opportunity_Team_Locked__c=true;
    
    try {
            delete opm;
        }
        catch(Exception e) {
            System.assert(e.getMessage().contains('Opportunity Team is locked. Contact Commission Team'));
        }
    
        }
}

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

Thanks,
This was selected as the best answer
NHameedNHameed
Hello Sai
Thanks for your prompt help but both tests are failing. Can you please help me refine this a bit more. Thanks  

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

Can you check the error and confirm where it is failing so can modify accordingly.

Thanks,
 
NHameedNHameed
Errors

Thanks again. 
mukesh guptamukesh gupta
Hi NHameed,

Are you sure, Do you have profile name Jason Todd  in your org.

if you need any assistanse, Please let me know!!

Kindly mark my solution as the best answer if it helps you.

Thanks
Mukesh 


 
Sai PraveenSai Praveen (Salesforce Developers) 
Hi Hameed,

I hope you dont have profile with name Jason Todd. You can use the standard user profile only as it is given by salesforce.

Thanks,
 
NHameedNHameed
Thanks Mukesh and Sai for your time. Tests passed!