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
DIVAKAR BABU 15DIVAKAR BABU 15 

i need test class for this trigger

trigger Sumoftotalamount on Opportunity (after insert,after update) {
    set<id>accid = new set<id>();
    List<opportunity> oppList = new List<opportunity>();
    
    for(Opportunity op:Trigger.new){
        
        accid.add(op.Accountid);
        
    }
    list<Account> acc =[select Id,name,Rollup_Amount_Y__c,Rollup_Amount_X__c,Rollup_Amount__c from Account where Id=:accid];
    Map<id,Account> accmap = new Map<id,Account>();
    for(Account ac: acc){
        accmap.put(ac.Id,ac);
    }
    if(trigger.isinsert){
        for(Opportunity op :Trigger.new){
            if(accmap.containskey(op.Accountid)){
                Decimal sum=0;
                Account a = accmap.get(op.Accountid);
                
                
                if(op.type__c== 'positive'){
                    if(op.Amount_X__c!=null){
                        If(a.Rollup_Amount_X__c==null){
                            a.Rollup_Amount_X__c=op.Amount_X__c;
                            accmap.put(op.Accountid,a );
                        }
                        else {
                            a.Rollup_Amount_X__c=a.Rollup_Amount_X__c + op.Amount_X__c;
                            accmap.put(op.Accountid,a );
                        }
                    }
                }
                
                if(op.type__c== 'negative'){
                    if(op.Amount_Y__c!=null){
                        If(a.Rollup_Amount_Y__c==null){
                            a.Rollup_Amount_Y__c=op.Amount_Y__c;
                            accmap.put(op.Accountid,a );
                        }
                        else {
                            a.Rollup_Amount_Y__c=a.Rollup_Amount_Y__c + op.Amount_Y__c;
                            accmap.put(op.Accountid,a );
                        }
                    }
                }
                if(a.Rollup_Amount__c==null)  {
                    a.Rollup_Amount__c=a.Rollup_Amount_Y__c+a.Rollup_Amount_X__c;
                    accmap.put(op.Accountid,a );
                }
                else{
                    a.Rollup_Amount__c=a.Rollup_Amount__c+(a.Rollup_Amount_X__c+a.Rollup_Amount_Y__c);
                    accmap.put(op.Accountid,a );
                }
            }
        }
        update accmap.values();
        
    }
    
    if(trigger.isupdate){
        for(Opportunity op:Trigger.new){
            if(op.AccountId!=trigger.oldmap.get(op.Id).Accountid){
                if(op.type__c==trigger.oldmap.get(op.Id).type__c && op.type__c== 'positive'){
                    //new opportunity 'account id' is not equal to old oppertunity Account id {change Account id}// 
                    if(accmap.containskey(op.Accountid)){
                        Account a = accmap.get(op.Accountid);
                        if(a.Rollup_Amount_X__c==null){
                            a.Rollup_Amount_X__c=op.Amount_X__c;
                        }
                        else{
                            a.Rollup_Amount_X__c =  a.Rollup_Amount_X__c+op.Amount_X__c;
                            accmap.put(op.Accountid,a );
                        }
                        if(accmap.containskey(trigger.oldmap.get(op.Id).Accountid)){
                            Account a1 = accmap.get(trigger.oldmap.get(op.Id).Accountid);
                            a1.Rollup_Amount_X__c =  a1.Rollup_Amount_X__c - op.Amount_X__c;
                            accmap.put(trigger.oldmap.get(op.Id).Accountid,a1 );
                        }
                    }
                }
                else if(op.type__c!=trigger.oldmap.get(op.Id).type__c && op.type__c== 'positive'){//it changed from negative to positive & account is also changed
                    if(accmap.containskey(op.Accountid)){
                        Account a = accmap.get(op.Accountid); 
                        if(a.Rollup_Amount_X__c==null){
                            a.Rollup_Amount_X__c=op.Amount_X__c;
                            accmap.put(op.Accountid,a );
                        }  
                        else
                        {
                            a.Rollup_Amount_X__c= a.Rollup_Amount_X__c + op.Amount_X__c;
                            accmap.put(op.Accountid,a );
                        }
                        
                        if(a.Rollup_Amount__c!=null||op.Amount_Y__c==null||op.Amount_X__c==null){
                            a.Rollup_Amount__c=a.Rollup_Amount__c+(op.Amount_X__c+op.Amount_Y__c);
                            accmap.put(op.Accountid,a );     
                        }
                        else{
                            a.Rollup_Amount__c= (a.Rollup_Amount_X__c+a.Rollup_Amount_Y__c);
                            accmap.put(op.Accountid,a );
                        }              
                        if(accmap.containskey(trigger.oldmap.get(op.Id).Accountid)){
                            Account a1 = accmap.get(trigger.oldmap.get(op.Id).Accountid);
                            If(a1.Rollup_Amount_Y__c!=null){
                                a1.Rollup_Amount_Y__c=a1.Rollup_Amount_Y__c-op.Amount_Y__c;
                                accmap.put(op.Accountid,a1 ); 
                            }
                            a1.Rollup_Amount__c =  a1.Rollup_Amount__c - (trigger.oldmap.get(op.Id).Amount_Y__c+trigger.oldmap.get(op.Id).Amount_X__c);
                            accmap.put(op.Accountid,a1 );
                        }
                    }
                }
                
                if(op.type__c==trigger.oldmap.get(op.Id).type__c && op.type__c== 'negative'){
                    if(accmap.containskey(op.Accountid)){
                        Account a = accmap.get(op.Accountid);
                        if(a.Rollup_Amount_Y__c==null){
                            a.Rollup_Amount_Y__c=op.Amount_Y__c;
                        }
                        
                        else{
                            a.Rollup_Amount_Y__c =  a.Rollup_Amount_Y__c+op.Amount_Y__c;
                            accmap.put(op.Accountid,a );
                        }      
                    }
                    if(accmap.containskey(trigger.oldmap.get(op.Id).Accountid)){
                        Account a1 = accmap.get(trigger.oldmap.get(op.Id).Accountid);
                        a1.Rollup_Amount_Y__c =  a1.Rollup_Amount_Y__c -op.Amount_Y__c;
                        accmap.put(op.Accountid,a1);
                    }
                }
                else if(op.type__c!=trigger.oldmap.get(op.Id).type__c && op.type__c== 'negative'){//changed from positive to negative
                    if(accmap.containskey(op.Accountid)){
                        Account a = accmap.get(op.Accountid); 
                        if(a.Rollup_Amount_Y__c==null){
                            a.Rollup_Amount_Y__c=op.Amount_Y__c;
                            accmap.put(op.Accountid,a );
                        }  
                        
                        else
                        {
                            a.Rollup_Amount_Y__c= a.Rollup_Amount_Y__c + op.Amount_Y__c;
                            accmap.put(op.Accountid,a );
                        }
                        if(a.Rollup_Amount__c!=null){
                            a.Rollup_Amount__c=a.Rollup_Amount__c+(a.Rollup_Amount_X__c+a.Rollup_Amount_Y__c);
                            accmap.put(op.Accountid,a);
                        }
                        else{
                            a.Rollup_Amount__c= (a.Rollup_Amount_X__c+a.Rollup_Amount_Y__c);
                            accmap.put(op.Accountid,a);
                        } 
                        if(accmap.containskey(trigger.oldmap.get(op.Id).Accountid)){
                            Account a1 = accmap.get(trigger.oldmap.get(op.Id).Accountid);
                            If(a1.Rollup_Amount_X__c!=null){
                                a1.Rollup_Amount_X__c= a1.Rollup_Amount_X__c-op.Amount_X__c;
                                accmap.put(op.Accountid,a1 ); 
                            }
                            a1.Rollup_Amount__c =  a1.Rollup_Amount__c - (trigger.oldmap.get(op.Id).Amount_X__c+trigger.oldmap.get(op.Id).Amount_Y__c);
                            accmap.put(op.Accountid,a1 );
                        }
                    }
                    
                }
            }
            else if(op.AccountId==trigger.oldmap.get(op.Id).Accountid){  //same account but change type
                Account a = accmap.get(op.Accountid);
                if(op.type__c!=trigger.oldmap.get(op.Id).type__c && op.type__c== 'positive'){
                    if(a.Rollup_Amount_X__c==null){
                        a.Rollup_Amount_X__c= op.Amount_X__c;
                        accmap.put(op.Accountid,a);
                    }else{
                        Decimal sum = op.Amount_X__c - trigger.oldmap.get(op.Id).Amount_X__c;
                        a.Rollup_Amount_X__c=a.Rollup_Amount_X__c+sum;
                        accmap.put(op.Accountid,a);
                    }
                }
                else if(op.type__c!=trigger.oldmap.get(op.Id).type__c && op.type__c== 'negative'){
                    if(a.Rollup_Amount_Y__c==null ){
                        a.Rollup_Amount_Y__c= op.Amount_Y__c;
                        accmap.put(op.Accountid,a);
                    }
                    else{
                        Decimal sum = op.Amount_Y__c - trigger.oldmap.get(op.Id).Amount_Y__c;
                        a.Rollup_Amount_Y__c=a.Rollup_Amount_Y__c+a.Rollup_Amount_Y__c+sum;
                        accmap.put(op.Accountid,a);
                        
                    }
                }
                else if(op.type__c==trigger.oldmap.get(op.Id).type__c && op.type__c== 'positive'){
                    if(op.Amount_X__c!=trigger.oldmap.get(op.Id).Amount_X__c){
                        if(a.Rollup_Amount_X__c==null && op.Amount_X__c!=null){
                            a.Rollup_Amount_X__c=op.Amount_X__c;
                            accmap.put(op.Accountid,a); 
                        }
                        else{
                            if(a.Rollup_Amount_X__c!=null && op.Amount_X__c!=null){
                                a.Rollup_Amount_X__c=a.Rollup_Amount_X__c-trigger.oldmap.get(op.Id).Amount_X__c;
                                a.Rollup_Amount_X__c=a.Rollup_Amount_X__c+op.Amount_X__c;
                                accmap.put(op.Accountid,a); 
                                
                            }
                        }
                        
                    }
                }
                
                else if(op.type__c==trigger.oldmap.get(op.Id).type__c && op.type__c== 'negative'){
                    if(op.Amount_Y__c!=trigger.oldmap.get(op.Id).Amount_Y__c){
                        if(a.Rollup_Amount_Y__c==null && op.Amount_Y__c!=null){
                            a.Rollup_Amount_Y__c=op.Amount_Y__c;
                            accmap.put(op.Accountid,a); 
                        }
                        
                        else{
                            if(a.Rollup_Amount_Y__c!=null && op.Amount_Y__c!=null){
                                a.Rollup_Amount_Y__c=a.Rollup_Amount_Y__c-trigger.oldmap.get(op.Id).Amount_Y__c;
                                a.Rollup_Amount_Y__c=a.Rollup_Amount_Y__c+op.Amount_Y__c;
                                accmap.put(op.Accountid,a); 
                                
                            }
                        }
                    }      
                    
                }
                
                
            }
            update accmap.values();
        }
    }
}
Soundar Rajan PonpandiSoundar Rajan Ponpandi

HI,

 

Test Class coverage is nothing , You can develop your own code in Test class. Please follow Mr.Piyus Guide .

https://developer.salesforce.com/forums/?id=9060G000000MVOrQAO

Regards,
Soundar Rajan P.