• Jeremy Anderson 14
  • NEWBIE
  • 24 Points
  • Member since 2015

  • Chatter
    Feed
  • 1
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 0
    Questions
  • 1
    Replies
Hello All,
I have written trigger on opportunity, which will display error message if user try to chnage the opportunity stage and for same opportunity there will be Task available with Status not equal to 'Complted'

Trigger
-------------------
trigger ShowErrorMsgOnOpportunity on Opportunity (after update) {
    if(checkRecursive.runOnce()){
        List<Opportunity> countOpenTask = [Select Id, Name, 
                                           (Select Id, Status, WhoId 
                                            From OpenActivities 
                                            Where Status != 'Completed')OppoTask 
                                           From Opportunity 
                                           where Id IN: Trigger.new
                                          ];
        for(Opportunity op : countOpenTask){
            if(op.OpenActivities.size() != 0){
                Trigger.newMap.get(op.Id).addError('Please Close Open Activities to update...');
            }   
        }
        update countOpenTask;
    }
}


And Test Class is
-----------------------
 
@isTest
public class ShowErrorMsgOnOpportunity_Test {
    
    @isTest
    private static void WhenThereAreNoTaskRelatedToOpportunity_ShouldThroughError(){
        String errorMsg = 'Please Close Open Activities to update...';
        
        Test.startTest();
        try{
            
            Account acc = new Account(Name = 'Test Account');
            insert acc;
            
            Opportunity opp = new Opportunity();
            opp.Name = 'Test Opportunity';
            opp.StageName = 'Prospecting';
            opp.CloseDate = Date.today();
            opp.AccountId = acc.Id;
            insert opp;
            
            Task tsk = new Task(WhatId = opp.Id, Subject = 'Test Subject', Status = 'In Progress');
            insert tsk;
            
            update opp;
        }
        
        catch(Exception exc){
            System.assertEquals(exc.getMessage(), errorMsg);
        }
        Test.stopTest();
    }
}

I m not able to cover " if(op.OpenActivities.size() != 0){ Trigger.newMap.get(op.Id).addError('Please Close Open Activities to update...'); } ". Please let me know where I am getting wrong.
Hello All,
I have written trigger on opportunity, which will display error message if user try to chnage the opportunity stage and for same opportunity there will be Task available with Status not equal to 'Complted'

Trigger
-------------------
trigger ShowErrorMsgOnOpportunity on Opportunity (after update) {
    if(checkRecursive.runOnce()){
        List<Opportunity> countOpenTask = [Select Id, Name, 
                                           (Select Id, Status, WhoId 
                                            From OpenActivities 
                                            Where Status != 'Completed')OppoTask 
                                           From Opportunity 
                                           where Id IN: Trigger.new
                                          ];
        for(Opportunity op : countOpenTask){
            if(op.OpenActivities.size() != 0){
                Trigger.newMap.get(op.Id).addError('Please Close Open Activities to update...');
            }   
        }
        update countOpenTask;
    }
}


And Test Class is
-----------------------
 
@isTest
public class ShowErrorMsgOnOpportunity_Test {
    
    @isTest
    private static void WhenThereAreNoTaskRelatedToOpportunity_ShouldThroughError(){
        String errorMsg = 'Please Close Open Activities to update...';
        
        Test.startTest();
        try{
            
            Account acc = new Account(Name = 'Test Account');
            insert acc;
            
            Opportunity opp = new Opportunity();
            opp.Name = 'Test Opportunity';
            opp.StageName = 'Prospecting';
            opp.CloseDate = Date.today();
            opp.AccountId = acc.Id;
            insert opp;
            
            Task tsk = new Task(WhatId = opp.Id, Subject = 'Test Subject', Status = 'In Progress');
            insert tsk;
            
            update opp;
        }
        
        catch(Exception exc){
            System.assertEquals(exc.getMessage(), errorMsg);
        }
        Test.stopTest();
    }
}

I m not able to cover " if(op.OpenActivities.size() != 0){ Trigger.newMap.get(op.Id).addError('Please Close Open Activities to update...'); } ". Please let me know where I am getting wrong.