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
CodeHeartsSFDCCodeHeartsSFDC 

Help for Code coverage required

Hi,

I have the below class for updating contact and account when a custom object record is created/updated. My test class coverage is not going past 65%. Can someone help me with this. This is an urgent request, appreciate some quick help. The lines highlighted in bold are not covered

Class:

public without sharing class SubscriptionService {
    public static void updateContact(List<OrderApi__Subscription__c> records){
        Set<Id> contactIds = new Set<Id>();
        List<Contact> contactList = new List<Contact>();
        Map<Id,Contact> conIdVSContactMap=new Map<Id,Contact>();
        List<Contact> contactList1 = new List<Contact>();
        Integer count = 0;

        for(OrderApi__Subscription__c sub: records) {
        contactIds.add(sub.OrderApi__Contact__c);
        }
        
        if(contactIds.size()>0){
        contactList = [Select id, Chapter_Member_Status__c, Chapter_Member_Activated_Date__c, Member_Paid_Through_Date__c, Member_Term_End_Date__c, Member_Term_Start_Date__c from Contact where id IN : contactIds LIMIT 10000];
        }

        if(contactList.size()>0){
        for(Contact con:contactList){
        conIdVSContactMap.put(con.Id,con);
        }
        }

        if(conIdVSContactMap.size()>0){
        Subscription__c mhc = Subscription__c.getInstance();
        string ItemCollID = mhc.Collegiate_Item_Id__c;
        for(OrderApi__Subscription__c sub:records){
        if(conIdVSContactMap.containsKey(sub.OrderApi__Contact__c)){
        if(sub.OrderApi__Item__c != NULL && sub.OrderApi__Item__c == ItemCollID){
        Contact newCon=conIdVSContactMap.get(sub.OrderApi__Contact__c);
        newCon.Chapter_Member_Status__c=sub.OrderApi__Status__c;
        newCon.Chapter_Member_Activated_Date__c=string.valueof(sub.OrderApi__Activated_Date__c);
        newCon.Member_Paid_Through_Date__c=string.valueof(sub.OrderApi__Paid_Through_Date__c);
        newCon.Member_Term_End_Date__c=string.valueof(sub.OrderApi__Current_Term_End_Date__c);
        newCon.Member_Term_Start_Date__c=string.valueof(sub.OrderApi__Current_Term_Start_Date__c);
        contactList1.add(newCon);

        }
        }
        }
        }

        if(contactList1.size()>0) {
        update contactList1;
        }   
        
     }
     
     public static void updateAccount(List<OrderApi__Subscription__c> records){
     
     map<id,Account> updateMap =new map<id,Account>();  
     set<ID> subnameset=new set<ID>();
     Map<ID, Account> parentAcc;
     List<Account> accountList = new List<Account>();
     List<Account> chapAccountList = new List<Account>();
    
     Subscription__c mhc = Subscription__c.getInstance();
     string ItemCollID = mhc.Collegiate_Item_Id__c; 
     
     if(Trigger.isInsert||Trigger.isUpdate){ 
        for(OrderApi__Subscription__c sub:records){ 
            if(sub.OrderApi__Account__c != null && sub.OrderApi__Item__c != NULL && sub.OrderApi__Item__c == ItemCollID){
                subnameset.add(sub.OrderApi__Account__c); 
            }    
        } 
     } 
    
     List<AggregateResult> AggregateResultList = [select OrderApi__Account__c,OrderApi__Status__c, OrderApi__Subscription_Plan__c, OrderApi__Activated_Date__c, OrderApi__Paid_Through_Date__c, OrderApi__Term_Start_Date__c, OrderApi__Contact__c, max(OrderApi__Term_End_Date__c) maxDate from OrderApi__Subscription__c where OrderApi__Account__c in:subnameset group by OrderApi__Account__c, OrderApi__Status__c, OrderApi__Subscription_Plan__c, OrderApi__Activated_Date__c, OrderApi__Paid_Through_Date__c, OrderApi__Term_Start_Date__c, OrderApi__Contact__c]; 
     if(AggregateResultList != null && AggregateResultList.size() > 0){ 
        for(AggregateResult aggr:AggregateResultList){ 
        if(aggr.get('OrderApi__Status__c') == 'Active') {          
            Account acc=new Account(); 
            acc.Id=(id)aggr.get('OrderApi__Account__c');
            acc.Chapter_Term_End_Date__c=string.valueOf(aggr.get('maxDate')); 
            acc.Status__c=string.valueOf(aggr.get('OrderApi__Status__c'));
            acc.Chapter_Activated_Date__c=string.valueOf(aggr.get('OrderApi__Activated_Date__c'));
            acc.Chapter_Paid_Through_Date__c=string.valueOf(aggr.get('OrderApi__Paid_Through_Date__c'));
            acc.Chapter_Term_Start_Date__c=string.valueOf(aggr.get('OrderApi__Term_Start_Date__c'));
            updateMap.put(acc.Id, acc); 

        } 
        
        } 
    
     }   
    
     update updateMap.values(); 
    
     parentAcc = new Map<Id, Account>([SELECT id, Member_Count__c from Account WHERE Id IN :subnameset]);
    
     Integer soql = [Select count() FROM OrderApi__Subscription__c WHERE OrderApi__Account__r.Id =:subnameset AND OrderApi__Is_Active__c != FALSE];
    
     for(OrderApi__Subscription__c subs:records){
     if(subs.OrderApi__Item__c != NULL && subs.OrderApi__Item__c == ItemCollID) {
        Account newAcc = parentAcc.get(subs.OrderApi__Account__c);
        newAcc.Member_Count__c = soql;
        accountList.add(newAcc);
       }   
     }
    
     if(accountList.size()>0) {
     update accountList;
     } 
     }
     
     public static void updateChapter(List<OrderApi__Subscription__c> records){
     
     Set<Id> accountIds = new Set<Id>();
     List<Account> accountList = new List<Account>();
     List<OrderApi__Business_Group__c> bg;
     Map<Id,Account> accIdVSAccountMap=new Map<Id,Account>();
     List<Account> accountList1 = new List<Account>();

     for(OrderApi__Subscription__c sub: records) {
     accountIds.add(sub.OrderApi__Account__c);
     }

     if(accountIds.size()>0){
     accountList = [Select id, Chapter__c from Account where id IN : accountIds LIMIT 10000];
     }

     if(accountList.size()>0){
     for(Account acc:accountList){
     accIdVSAccountMap.put(acc.Id,acc);
     }
     }
    
     bg=[Select id, Collegiate_Chapter_Number__c, Collegiate_Chapter_Number_Text__c from OrderApi__Business_Group__c where Name = 'NAfME Business Group'];
     String chapNum;
     if(bg!=null && bg.size() > 0){
     chapNum = bg[0].Collegiate_Chapter_Number_Text__c;
     }
    
     if(accIdVSAccountMap.size()>0){
     Subscription__c mhc = Subscription__c.getInstance();
     string ItemCollID = mhc.Collegiate_Item_Id__c;
    
     for(OrderApi__Subscription__c sub:records){
     if(accIdVSAccountMap.containsKey(sub.OrderApi__Account__c)){
       if(sub.OrderApi__Item__c != NULL && sub.OrderApi__Item__c == ItemCollID){
       Account newAcc=accIdVSAccountMap.get(sub.OrderApi__Account__c);
       if(newAcc.Chapter__c == NULL){
       newAcc.Chapter__c='C-'+chapNum;
       accountList1.add(newAcc);
       
       OrderApi__Business_Group__c busGroup=new  OrderApi__Business_Group__c();
       busGroup.Collegiate_Chapter_Number__c=Integer.valueOf(chapNum) + 1;
       busGroup.id=bg[0].id;
       update busGroup;

       }
       }
     }
     }
     } 
     
     if(accountList1.size()>0) {
     update accountList1;
     }   
     }
}

Test class:
@isTest
public class Test_SubscriptionService {
  public static Boolean isInstalled = false;
        
        private static void install() {
            if (!isInstalled) {
                Framework.Installer.install();
                PagesApi.PackageScripts.install();
                OrderApi.PackageScripts.install();
                EventApi.PackageScripts.install();
                
                // Create a routing rule for Subscription
                Framework.RoutingRule[] rules = new List<Framework.RoutingRule>();
                Framework.RoutingRule subscriptionRule = new Framework.RoutingRule();
                subscriptionRule.apexClass = NAME_Subscription.class.getName();
                subscriptionRule.namespace = '';
                subscriptionRule.isEnabled = true;
                subscriptionRule.sObjectName = 'OrderApi__Subscription__c';
                subscriptionRule.executionOrder = 80;
                rules.add(subscriptionRule);
                Framework.Config.push(rules);               
                
                isInstalled = true;
               
            }
        
}

static testmethod void subTest(){

    install();
    
    Account acc=new Account();
    acc.Name = 'Test My Account Test';
    acc.Chapter__c = '';
    insert acc;
    
    Contact con=new Contact();
    con.FirstName='Test';
    con.LastName='Sub Contact 1';
    con.email='testnafme@mailinator.com';
    con.accountid=acc.id;
    insert con;
    
    Contact con1=new Contact();
    con1.FirstName='Test';
    con1.LastName='Sub Contact 2';
    con1.email='testnafme1@mailinator.com';
    con1.accountid=acc.id;
    insert con1;
    
    User usr = new User();
    usr.ProfileId = [select Name, id From Profile where UserLicense.Name like '%Customer Community%' limit 1].Id;
    usr.Contactid = con.id;
    usr.Username = con.Email;
    usr.LastName=con.LastName;
    usr.Email=con.Email;
    usr.Alias='MNU'+String.ValueOf(con.id).right(5);
    usr.CommunityNickname = con.Email;
    usr.EmailEncodingKey='UTF-8';
    usr.languagelocalekey='en_US';
    usr.timezonesidkey='America/Los_Angeles';
    usr.localesidkey='en_US';
    usr.IsActive=true;
    Insert usr;
    
    OrderApi__Business_Group__c bg = new OrderApi__Business_Group__c();
    bg.Name = 'Test Business Group';
    bg.Collegiate_Chapter_Number__c = Integer.valueOf('1111');
    insert bg;
    
    OrderApi__Subscription_Plan__c subPlan=new OrderApi__Subscription_Plan__c();
    subPlan.Name = 'Test Subscription Plan';
    subPlan.OrderAPi__Type__c = 'Termed';
    subPlan.OrderAPi__Initial_Term_Months__c = 12;
    subPlan.OrderAPi__Renewal_Term_Months__c = 12;
    subPlan.OrderAPi__Bill_Cycle__c = 'AUTO';
    subPlan.OrderAPi__Auto_Renew_Option__c = 'Enabled';
    subPlan.OrderAPi__Is_Active__c = true;
    subPlan.OrderApi__Business_Group__c = bg.id;
    insert subPlan;
    
    OrderApi__Item_Class__c ic = new OrderApi__Item_Class__c();
    ic.OrderApi__Business_Group__c = bg.Id;
    ic.OrderApi__Is_Active__c = true;
    ic.OrderApi__Is_Subscription__c = true;
    ic.OrderApi__Enable_Assignments__c = false;
    ic.OrderApi__Assignment_Sobject__c = 'OrderApi__Assignment__c';
    insert ic;
    
    OrderApi__Item__c i=new OrderApi__Item__c();
    i.OrderApi__Item_Class__c = ic.Id;
    i.Name = 'Test Collegiate';
    insert i;
   
    Account a = [Select id from Account where Name = 'Test My Account Test'];
    Contact c = [Select id from Contact where Name = 'Test Sub Contact 1'];
    OrderApi__Subscription_Plan__c sp = [Select id from OrderApi__Subscription_Plan__c where Name = 'Test Subscription Plan'];
    OrderApi__Item__c it = [Select id from OrderApi__Item__c where Name = 'Test Collegiate'];
    
    Test.startTest();
    OrderApi__Subscription__c sub=new OrderApi__Subscription__c();
    sub.OrderApi__Account__c = acc.id;
    sub.OrderApi__Contact__c = con.id;
    sub.OrderApi__Is_Active__c = True;
    sub.OrderApi__Status__c = 'Active';
    sub.OrderApi__Subscription_Plan__c = subPlan.id;
    sub.OrderApi__Item__c = i.id;
    sub.OrderApi__Paid_Through_Date__c = date.parse('06/30/2020');
    sub.OrderApi__Activated_Date__c = date.parse('08/01/2019');
    insert sub;
    
    con.Chapter_Member_Status__c = 'Active';
    con.Member_Term_Start_Date__c = string.valueOf('sub.OrderApi__Term_Start_Date__c');
    con.Member_Term_End_Date__c = string.valueOf('sub.OrderApi__Term_End_Date__c');
    con.Member_Paid_Through_Date__c = string.valueOf('sub.OrderApi__Paid_Through_Date__c');
    con.Chapter_Member_Activated_Date__c = string.valueOf('sub.OrderApi__Activated_Date__c');
    update con;
    
    if(acc.Chapter__c == NULL){
    acc.Chapter__c = bg.Collegiate_Chapter_Number_Text__c;
    }
    acc.Chapter_Term_Start_Date__c = string.valueOf('sub.OrderApi__Term_Start_Date__c');
    acc.Chapter_Term_End_Date__c = string.valueOf('sub.OrderApi__Term_End_Date__c');
    acc.Chapter_Paid_Through_Date__c = string.valueOf('sub.OrderApi__Paid_Through_Date__c');
    acc.Chapter_Activated_Date__c = string.valueOf('sub.OrderApi__Activated_Date__c');
    acc.Status__c = 'Active';
    update acc;
    
    OrderApi__Subscription__c sub1=new OrderApi__Subscription__c();
    sub1.OrderApi__Account__c = acc.id;
    sub1.OrderApi__Contact__c = con1.id;
    sub1.OrderApi__Is_Active__c = True;
    sub1.OrderApi__Status__c = 'Active';
    sub1.OrderApi__Subscription_Plan__c = sp.id;
    sub1.OrderApi__Item__c = it.id;
    sub1.OrderApi__Paid_Through_Date__c = date.parse('06/30/2020');
    sub1.OrderApi__Activated_Date__c = date.parse('09/01/2019');
    insert sub1;
    
    con1.Chapter_Member_Status__c = 'Active';
    con1.Member_Term_Start_Date__c = string.valueOf('sub.OrderApi__Term_Start_Date__c');
    con1.Member_Term_End_Date__c = string.valueOf('sub.OrderApi__Term_End_Date__c');
    con1.Member_Paid_Through_Date__c = string.valueOf('sub.OrderApi__Paid_Through_Date__c');
    con1.Chapter_Member_Activated_Date__c = string.valueOf('sub.OrderApi__Activated_Date__c');
    update con;
    
    acc.Chapter_Term_Start_Date__c = string.valueOf('sub1.OrderApi__Term_Start_Date__c');
    acc.Chapter_Term_End_Date__c = string.valueOf('sub1.OrderApi__Term_End_Date__c');
    acc.Chapter_Paid_Through_Date__c = string.valueOf('sub1.OrderApi__Paid_Through_Date__c');
    acc.Chapter_Activated_Date__c = string.valueOf('sub1.OrderApi__Activated_Date__c');
    acc.Status__c = 'Active';
    update acc;
    
    sub.OrderApi__Status__c = 'Cancelled';
    sub.OrderApi__Paid_Through_Date__c = date.parse('06/30/2020');
    sub.OrderApi__Activated_Date__c = date.parse('08/01/2019');
    update sub;
    
    con.Chapter_Member_Status__c = 'Cancelled';
    con.Member_Term_Start_Date__c = string.valueOf('sub.OrderApi__Term_Start_Date__c');
    con.Member_Term_End_Date__c = string.valueOf('sub.OrderApi__Term_End_Date__c');
    con.Member_Paid_Through_Date__c = string.valueOf('sub.OrderApi__Paid_Through_Date__c');
    con.Chapter_Member_Activated_Date__c = string.valueOf('sub.OrderApi__Activated_Date__c');
    update con;
    
    acc.Chapter_Term_Start_Date__c = string.valueOf('sub.OrderApi__Term_Start_Date__c');
    acc.Chapter_Term_End_Date__c = string.valueOf('sub.OrderApi__Term_End_Date__c');
    acc.Chapter_Paid_Through_Date__c = string.valueOf('sub.OrderApi__Paid_Through_Date__c');
    acc.Chapter_Activated_Date__c = string.valueOf('sub.OrderApi__Activated_Date__c');
    acc.Status__c = 'Cancelled';
    update acc;
     
    sub1.OrderApi__Status__c = 'Cancelled';
    sub1.OrderApi__Paid_Through_Date__c = date.parse('08/30/2020');
    sub1.OrderApi__Activated_Date__c = date.parse('09/01/2019');
    update sub;
    
    con1.Chapter_Member_Status__c = 'Cancelled';
    con1.Member_Term_Start_Date__c = string.valueOf('sub1.OrderApi__Term_Start_Date__c');
    con1.Member_Term_End_Date__c = string.valueOf('sub1.OrderApi__Term_End_Date__c');
    con1.Member_Paid_Through_Date__c = string.valueOf('sub1.OrderApi__Paid_Through_Date__c');
    con1.Chapter_Member_Activated_Date__c = string.valueOf('sub1.OrderApi__Activated_Date__c');
    update con1;
    
    acc.Chapter_Term_Start_Date__c = string.valueOf('sub1.OrderApi__Term_Start_Date__c');
    acc.Chapter_Term_End_Date__c = string.valueOf('sub1.OrderApi__Term_End_Date__c');
    acc.Chapter_Paid_Through_Date__c = string.valueOf('sub1.OrderApi__Paid_Through_Date__c');
    acc.Chapter_Activated_Date__c = string.valueOf('sub1.OrderApi__Activated_Date__c');
    acc.Status__c = 'Cancelled';
    update acc;
    
    SubscriptionService.forTestMethod();
    
    Test.stopTest();
    
    }
    
}