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
SeanCenoSeanCeno 

Dynamic Apex Test Class

I have recently changed a class to dynamic apex in order to cut down on the number of scriprt statements when executed. My old test class in enormous (about 650 lines). When a class is changed to dynamic apex, can the test class be cut down substantially as well, or is it about the same? I'm having trouble actually creating a test class.

 

Here is my class:

public class Account_RollupTrades {
    public Static Account_Setting__c setting = Account_Setting__c.getInstance();
    public Static boolean inprog = false;
    
    public static void execute (Set<Id> accountIds, List<Account> accountsList) {
        Map<Id, Account> accounts = new Map<Id, Account> (AccountsList);
        system.debug ('execute');
        if(setting.Disable_RollupTrades__c != true) {
            //Map<Id, Account> accounts = new Map<Id, Account>();
            for(Id accountId:accountIds) {
                system.debug(accountid);
                accounts.put(accountId,
                   new Account(
                       Id=accountId,
                       YTD_NIOR_I_Sales__c = 0,         YTD_NIOR_I_Shares__c = 0,         QTD_NIOR_I_Sales__c = 0,         QTD_NIOR_I_Shares__c = 0,
                       MTD_NIOR_I_Sales__c = 0,         MTD_NIOR_I_Shares__c = 0,         PY_NIOR_I_Sales__c = 0,          PY_NIOR_I_Shares__c = 0,
                       Total_NIOR_I_Sales__c = 0,       Total_NIOR_I_Shares__c = 0,       YTD_NS_Income_Sales__c = 0,      YTD_NS_Income_Shares__c = 0,
                       QTD_NS_Income_Sales__c = 0,      QTD_NS_Income_Shares__c = 0,      MTD_NS_Income_Sales__c = 0,      MTD_NS_Income_Shares__c = 0,
                       PY_NS_Income_Sales__c = 0,       PY_NS_Income_Shares__c = 0,       Total_NS_Income_Sales__c = 0,    Total_NS_Income_Shares__c = 0,
                       Total_NS_HIT_Sales__c = 0,       Total_NS_HIT_Shares__c = 0,       YTD_NS_HIT_Sales__c = 0,         YTD_NS_HIT_Shares__c = 0,
                       QTD_NS_HIT_Sales__c = 0,         QTD_NS_HIT_Shares__c = 0,         MTD_NS_HIT_Sales__c = 0,         MTD_NS_HIT_Shares__c = 0,
                       PY_NS_HIT_Sales__c = 0,          PY_NS_HIT_Shares__c = 0,          Total_NS_Income_II_Sales__c = 0, Total_NS_Income_II_Shares__c = 0,
                       YTD_NS_Income_II_Sales__c = 0,   YTD_NS_Income_II_Shares__c = 0,   QTD_NS_Income_II_Sales__c = 0,   QTD_NS_Income_II_Shares__c = 0,
                       MTD_NS_Income_II_Sales__c = 0,   MTD_NS_Income_II_Shares__c = 0,   PY_NS_Income_II_Sales__c = 0,    PY_NS_Income_II_Shares__c = 0,
                       Rollup_Trades__c = DateTime.now()
                   )
                            );
            }
            
        // Roll up the trades based on the Resolved Firm Trading ID field
        Trades__c[] tradesList = [
            select Dollar_Amount_of_the_transaction__c, Fund_Number__c, Number_of_Shares_of_the_transaction__c,
                Resolved_to_Rep_Trading_ID__c, Resolved_Firm_Trading_ID__c, Resolved_Firm_Trading_IDs__c,
            	Trade_Date__c
              from Trades__c
             where Resolved_Firm_Trading_ID__c in :accountIds
               and Fund_Number__c in ('3910', '3911', '3912', '3915')       // NIOR I; NS Income; NS HIT; NS Income II
               and Dollar_Amount_of_the_transaction__c != null      // prevents null pointers below
               and Number_of_Shares_of_the_transaction__c != null   // prevents null pointers below
               and Trade_Date__c != null                            // prevents null pointers below
               // Negative values are ignored for roll-up purposes
               and Dollar_Amount_of_the_transaction__c >= 0
               and Number_of_Shares_of_the_transaction__c >= 0
        ];
            
            Map<String, SObjectField[]>
                ytd = new map<string, sobjectfield[]> {
                    '3910' => new sobjectfield[] { account.YTD_NIOR_I_Sales__c , account.YTD_NIOR_I_Shares__c},
                    '3911' => new sobjectfield[] { account.YTD_NS_Income_Sales__c , account.YTD_NS_Income_Shares__c },
                    '3912' => new sobjectfield[] { account.YTD_NS_HIT_Sales__c , account.YTD_NS_HIT_Shares__c },
                    '3915' => new sobjectfield[] { account.YTD_NS_Income_II_Sales__c , account.YTD_NS_Income_II_Shares__c }    
                },
                qtd = new map<string, sobjectfield[]> {
                    '3910' => new sobjectfield[] { account.QTD_NIOR_I_Sales__c , account.QTD_NIOR_I_Shares__c},
                    '3911' => new sobjectfield[] { account.QTD_NS_Income_Sales__c , account.QTD_NS_Income_Shares__c },
                    '3912' => new sobjectfield[] { account.QTD_NS_HIT_Sales__c , account.QTD_NS_HIT_Shares__c },
                    '3915' => new sobjectfield[] { account.QTD_NS_Income_II_Sales__c , account.QTD_NS_Income_II_Shares__c }
                },
                mtd = new map<string, sobjectfield[]> {
                    '3910' => new sobjectfield[] { account.MTD_NIOR_I_Sales__c , account.MTD_NIOR_I_Shares__c},
                    '3911' => new sobjectfield[] { account.MTD_NS_Income_Sales__c , account.MTD_NS_Income_Shares__c },
                    '3912' => new sobjectfield[] { account.MTD_NS_HIT_Sales__c , account.MTD_NS_HIT_Shares__c },
                    '3915' => new sobjectfield[] { account.MTD_NS_Income_II_Sales__c , account.MTD_NS_Income_II_Shares__c }
                },
                py = new map<string, sobjectfield[]> {
                    '3910' => new sobjectfield[] { account.PY_NIOR_I_Sales__c , account.PY_NIOR_I_Shares__c},
                    '3911' => new sobjectfield[] { account.PY_NS_Income_Sales__c , account.PY_NS_Income_Shares__c },
                    '3912' => new sobjectfield[] { account.PY_NS_HIT_Sales__c , account.PY_NS_HIT_Shares__c },
                    '3915' => new sobjectfield[] { account.PY_NS_Income_II_Sales__c , account.PY_NS_Income_II_Shares__c }
                },
                total = new map<string, sobjectfield[]> {
                    '3910' => new sobjectfield[] { account.Total_NIOR_I_Sales__c , account.Total_NIOR_I_Shares__c},
                    '3911' => new sobjectfield[] { account.Total_NS_Income_Sales__c , account.Total_NS_Income_Shares__c },
                    '3912' => new sobjectfield[] { account.Total_NS_HIT_Sales__c , account.Total_NS_HIT_Shares__c },
                    '3915' => new sobjectfield[] { account.Total_NS_Income_II_Sales__c , account.Total_NS_Income_II_Shares__c }
                };

            for(trades__c trade:tradesList) {
                    system.debug(trade);
					system.debug(accounts.get(trade.Resolved_Firm_Trading_ID__c));
                    system.debug(ytd.get(trade.fund_number__c));
                if(date.today().year() == trade.trade_date__c.year()) {
                    accounts.get(trade.Resolved_Firm_Trading_ID__c).put(ytd.get(trade.fund_number__c)[0], ((Decimal)accounts.get(trade.Resolved_Firm_Trading_ID__c).get(ytd.get(trade.fund_number__c)[0]))+trade.Dollar_Amount_of_The_Transaction__c);
                    accounts.get(trade.Resolved_Firm_Trading_ID__c).put(ytd.get(trade.fund_number__c)[1], ((Decimal)accounts.get(trade.Resolved_Firm_Trading_ID__c).get(ytd.get(trade.fund_number__c)[1]))+trade.Number_of_Shares_of_the_transaction__c);

                    if( (Decimal.ValueOf(date.today().month()).divide(3, 0) == Decimal.ValueOf(trade.trade_date__c.month()).divide(3, 0)) )   {
                        accounts.get(trade.Resolved_Firm_Trading_ID__c).put(qtd.get(trade.fund_number__c)[0], ((Decimal)accounts.get(trade.Resolved_Firm_Trading_ID__c).get(qtd.get(trade.fund_number__c)[0]))+trade.Dollar_Amount_of_The_Transaction__c);
                        accounts.get(trade.Resolved_Firm_Trading_ID__c).put(qtd.get(trade.fund_number__c)[1], ((Decimal)accounts.get(trade.Resolved_Firm_Trading_ID__c).get(qtd.get(trade.fund_number__c)[1]))+trade.Number_of_Shares_of_the_transaction__c);

                        if(date.today().month()==trade.trade_date__c.month()) {
                            accounts.get(trade.Resolved_Firm_Trading_ID__c).put(mtd.get(trade.fund_number__c)[0], ((Decimal)accounts.get(trade.Resolved_Firm_Trading_ID__c).get(mtd.get(trade.fund_number__c)[0]))+trade.Dollar_Amount_of_The_Transaction__c);
                            accounts.get(trade.Resolved_Firm_Trading_ID__c).put(mtd.get(trade.fund_number__c)[1], ((Decimal)accounts.get(trade.Resolved_Firm_Trading_ID__c).get(mtd.get(trade.fund_number__c)[1]))+trade.Number_of_Shares_of_the_transaction__c);
                        }
                    }
                } else if(date.today().year()-1==trade.trade_date__c.year()) {
                    accounts.get(trade.Resolved_Firm_Trading_ID__c).put(py.get(trade.fund_number__c)[0], ((Decimal)accounts.get(trade.Resolved_Firm_Trading_ID__c).get(py.get(trade.fund_number__c)[0]))+trade.Dollar_Amount_of_The_Transaction__c);
                    accounts.get(trade.Resolved_Firm_Trading_ID__c).put(py.get(trade.fund_number__c)[1], ((Decimal)accounts.get(trade.Resolved_Firm_Trading_ID__c).get(py.get(trade.fund_number__c)[1]))+trade.Number_of_Shares_of_the_transaction__c);
                }
                accounts.get(trade.Resolved_Firm_Trading_ID__c).put(total.get(trade.fund_number__c)[0], ((Decimal)accounts.get(trade.Resolved_Firm_Trading_ID__c).get(total.get(trade.fund_number__c)[0]))+trade.Dollar_Amount_of_The_Transaction__c);
                accounts.get(trade.Resolved_Firm_Trading_ID__c).put(total.get(trade.fund_number__c)[1], ((Decimal)accounts.get(trade.Resolved_Firm_Trading_ID__c).get(total.get(trade.fund_number__c)[1]))+trade.Number_of_Shares_of_the_transaction__c);
            }
        }
     inprog = true;
     update accounts.values();
     inprog = false;
    }
}

 I can post my original test class if needed, but it's quite large.

Best Answer chosen by Admin (Salesforce Developers) 
SeanCenoSeanCeno

No, there were no failures I just thought maybe if I was asserting the wrong thing, the failures wouldn't show up.

 

Turns out I figured out the problem, and just in case anyone else ever runs into this problem, here is the solution:

 

The reason I switched to dynamic apex was because of a bulk data error when trades were posting. Too many script statements. So I adjusted the code from 176 line to just 27 lines. Salesforce calculates the percentage per org as total code statements tested * 100 / total code statements per org. That's why the overall code coverage was 72% (instead of 83% as showed) when I tried to deploy.  What I did was to raise the code coverage for just one class  from 67% to 81%. Made the changes in sandbox testing 2 additional methods and deployed just the test class to Production.

The overall in production is now 86% instead 83% and my change set deployed successful.

 

Overall, when fixing a class and reducing the number of lines of code, your overall test coverage will fall substantially directly proportional to the number of lines of code being removed.

All Answers

levaleva

It should be about the same. If you want to right a new one from scratch I would follow this type of structure: 

 

@isTest
private class Account_RollupTrades_Test(){

  static testMethod testRolluptrades(){
     Account[] accs = new Account[]{
       new Account (Name = 'Test Account 1', _other fields you need to preset_ ),
       new Account (Name = 'Test Account N', ......)
     };
    
     insert accs;
     Map<Id, Account> inserted = [select Id, Name _etc_ from Account]; 
         
     //you'll need to set up Trades[]     

     Test.startTest();
        new Account_RollupTrades.execute(inserted.keySet(), inserted.values());
     Test.stopTest();
     // vlaidation  
  }
}

 

SeanCenoSeanCeno

My test class:

@IsTest(SeeAllData=true)
public class Account_RollupTradesTest {
    public static Account accountNational { set; get; }
    
    public static final String FUND_NUMBER_NIOR_I = '3910';
    public static final String FUND_NUMBER_NS_Income = '3911';
    public static final String FUND_NUMBER_NS_HIT = '3912';
    public static final String FUND_NUMBER_NS_Income_II = '3915';
    
    public static void test(String fundNumber, Date tradeDate, Decimal totalAmount, Decimal totalShares) {
        // Force tests to run
        Account_Setting__c setting = Account_Setting__c.getInstance();
        setting = setting == null ? new Account_Setting__c() : setting;
        setting.Disable_RollupTrades__c = false;
        upsert setting;
        
        Contact_Setting__c csetting = Contact_Setting__c.getInstance();
        csetting = csetting == null ? new Contact_Setting__c() : csetting;
        csetting.Disable_Contact_Rollup__c = false;
        upsert csetting;
        
        accountNational = new Account();
        accountNational.Name = 'National Account';
        insert accountNational;
        
        Account accountLocal = new Account();
        accountLocal.Name = 'Local Account';
        accountLocal.ParentId = accountNational.Id;
        insert accountLocal;
        
        Contact contact = new Contact();
        contact.FirstName = 'FirstName';
        contact.LastName = 'LastName';
        contact.AccountId = accountLocal.Id;
        insert contact;
        
        Trades__c trades = new Trades__c();
        trades.Fund_Number__c = fundNumber;
        trades.Number_of_Shares_of_the_transaction__c = totalShares;
        trades.Dollar_Amount_of_the_transaction__c = totalAmount;
        trades.Trade_Date__c = tradeDate;
        trades.Posting_Date__c = tradeDate;
        trades.Resolved_to_Rep_Trading_ID__c = contact.Id;
        trades.Resolved_Office_Trading_ID__c = accountLocal.Id;
        trades.Resolved_Firm_Trading_ID__c = accountNational.Id;
        insert trades;
    }
    
    @IsTest
    public static void test_NIOR_I_Today() {
        test(FUND_NUMBER_NIOR_I, date.today(), 100, 10);
        accountNational = reselect(accountNational);
        system.assertEquals(100, accountNational.Total_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.Total_NIOR_I_Shares__c, '' + accountNational);
        system.assertEquals(100, accountNational.YTD_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.YTD_NIOR_I_Shares__c, '' + accountNational);
        system.assertEquals(100, accountNational.QTD_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.QTD_NIOR_I_Shares__c, '' + accountNational);
        system.assertEquals(100, accountNational.MTD_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.MTD_NIOR_I_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NIOR_I_Shares__c, '' + accountNational);
    }
    
    @IsTest
    public static void test_NIOR_I_LastMonth() {
        test(FUND_NUMBER_NIOR_I, date.today().addDays(-45), 100, 10);
		
        Boolean isQTD = (((date.today().month() - 1) / 3) + 1) == (((date.today().addDays(-45).month() - 1) / 3) + 1);
		
        accountNational = reselect(accountNational);
        system.assertEquals(100, accountNational.Total_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.Total_NIOR_I_Shares__c, '' + accountNational);
        system.assertEquals(100, accountNational.YTD_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.YTD_NIOR_I_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NIOR_I_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NIOR_I_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NIOR_I_Shares__c, '' + accountNational);
    }
    
    @IsTest
    public static void test_NIOR_I_LastQuarter() {
        test(FUND_NUMBER_NIOR_I, date.today().addDays(-120), 100, 10);
        Boolean isYTD = date.today().year() == date.today().addDays(-120).year();
        accountNational = reselect(accountNational);
        system.assertEquals(100, accountNational.Total_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.Total_NIOR_I_Shares__c, '' + accountNational);
        system.assertEquals(isYTD ? 100 : 0, accountNational.YTD_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(isYTD ? 10 : 0, accountNational.YTD_NIOR_I_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NIOR_I_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NIOR_I_Shares__c, '' + accountNational);
        system.assertEquals(isYTD ? 0 : 100, accountNational.PY_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(isYTD ? 0 : 10, accountNational.PY_NIOR_I_Shares__c, '' + accountNational);
    }
    
    @IsTest
    public static void test_NIOR_I_LastYear() {
        test(FUND_NUMBER_NIOR_I, date.today().addDays(-450), 100, 10);
        Boolean isPY = (date.today().year() - 1) == date.today().addDays(-450).year();
        accountNational = reselect(accountNational);
        system.assertEquals(100, accountNational.Total_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.Total_NIOR_I_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NIOR_I_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NIOR_I_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NIOR_I_Shares__c, '' + accountNational);
        system.assertEquals(isPY ? 100 : 0, accountNational.PY_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(isPY ? 10 : 0, accountNational.PY_NIOR_I_Shares__c, '' + accountNational);
    }
    
    @IsTest
    public static void test_NIOR_I_LastTwoYears() {
        test(FUND_NUMBER_NIOR_I, date.today().addDays(-850), 100, 10);
        accountNational = reselect(accountNational);
        system.assertEquals(100, accountNational.Total_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.Total_NIOR_I_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NIOR_I_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NIOR_I_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NIOR_I_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NIOR_I_Shares__c, '' + accountNational);
    }
    
    @IsTest
    public static void test_NIOR_I_NegativeSalesIgnored() {
        test(FUND_NUMBER_NIOR_I, date.today(), -100, 10);
        accountNational = reselect(accountNational);
        system.assertEquals(0, accountNational.Total_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.Total_NIOR_I_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NIOR_I_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NIOR_I_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NIOR_I_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NIOR_I_Shares__c, '' + accountNational);
    }
    
    @IsTest
    public static void test_NIOR_I_NegativeSharesIgnored() {
        test(FUND_NUMBER_NIOR_I, date.today(), 100, -10);
        accountNational = reselect(accountNational);
        system.assertEquals(0, accountNational.Total_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.Total_NIOR_I_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NIOR_I_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NIOR_I_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NIOR_I_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NIOR_I_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NIOR_I_Shares__c, '' + accountNational);
    }
    
    @IsTest
    public static void test_NS_Income_Today() {
        test(FUND_NUMBER_NS_Income, date.today(), 100, 10);
        accountNational = reselect(accountNational);
        system.assertEquals(100, accountNational.Total_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.Total_NS_Income_Shares__c, '' + accountNational);
        system.assertEquals(100, accountNational.YTD_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.YTD_NS_Income_Shares__c, '' + accountNational);
        system.assertEquals(100, accountNational.QTD_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.QTD_NS_Income_Shares__c, '' + accountNational);
        system.assertEquals(100, accountNational.MTD_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.MTD_NS_Income_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NS_Income_Shares__c, '' + accountNational);
    }
    
    @IsTest
    public static void test_NS_Income_LastMonth() {
        test(FUND_NUMBER_NS_Income, date.today().addDays(-45), 100, 10);
		
        Boolean isQTD = (((date.today().month() - 1) / 3) + 1) == (((date.today().addDays(-45).month() - 1) / 3) + 1);
		
        accountNational = reselect(accountNational);
        system.assertEquals(100, accountNational.Total_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.Total_NS_Income_Shares__c, '' + accountNational);
        system.assertEquals(100, accountNational.YTD_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.YTD_NS_Income_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_Income_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_Income_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NS_Income_Shares__c, '' + accountNational);
    }
    
    @IsTest
    public static void test_NS_Income_LastQuarter() {
        test(FUND_NUMBER_NS_Income, date.today().addDays(-120), 100, 10);
        Boolean isYTD = date.today().year() == date.today().addDays(-120).year();
        accountNational = reselect(accountNational);
        system.assertEquals(100, accountNational.Total_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.Total_NS_Income_Shares__c, '' + accountNational);
        system.assertEquals(isYTD ? 100 : 0, accountNational.YTD_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(isYTD ? 10 : 0, accountNational.YTD_NS_Income_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_Income_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_Income_Shares__c, '' + accountNational);
        system.assertEquals(isYTD ? 0 : 100, accountNational.PY_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(isYTD ? 0 : 10, accountNational.PY_NS_Income_Shares__c, '' + accountNational);
    }
    
    @IsTest
    public static void test_NS_Income_LastYear() {
        test(FUND_NUMBER_NS_Income, date.today().addDays(-450), 100, 10);
        Boolean isPY = (date.today().year() - 1) == date.today().addDays(-450).year();
        accountNational = reselect(accountNational);
        system.assertEquals(100, accountNational.Total_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.Total_NS_Income_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NS_Income_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_Income_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_Income_Shares__c, '' + accountNational);
        system.assertEquals(isPY ? 100 : 0, accountNational.PY_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(isPY ? 10 : 0, accountNational.PY_NS_Income_Shares__c, '' + accountNational);
    }
    

 

SeanCenoSeanCeno
    @IsTest
    public static void test_NS_Income_LastTwoYears() {
        test(FUND_NUMBER_NS_Income, date.today().addDays(-850), 100, 10);
        accountNational = reselect(accountNational);
        system.assertEquals(100, accountNational.Total_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.Total_NS_Income_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NS_Income_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_Income_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_Income_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NS_Income_Shares__c, '' + accountNational);
    }
    
    @IsTest
    public static void test_NS_Income_NegativeSalesIgnored() {
        test(FUND_NUMBER_NS_Income, date.today(), -100, 10);
        accountNational = reselect(accountNational);
        system.assertEquals(0, accountNational.Total_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.Total_NS_Income_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NS_Income_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_Income_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_Income_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NS_Income_Shares__c, '' + accountNational);
    }
    
    @IsTest
    public static void test_NS_Income_NegativeSharesIgnored() {
        test(FUND_NUMBER_NS_Income, date.today(), 100, -10);
        accountNational = reselect(accountNational);
        system.assertEquals(0, accountNational.Total_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.Total_NS_Income_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NS_Income_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_Income_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_Income_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NS_Income_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NS_Income_Shares__c, '' + accountNational);
    }
    
    @IsTest
    public static void test_NS_HIT_Today() {
        test(FUND_NUMBER_NS_HIT, date.today(), 100, 10);
        accountNational = reselect(accountNational);
        system.assertEquals(100, accountNational.Total_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.Total_NS_HIT_Shares__c, '' + accountNational);
        system.assertEquals(100, accountNational.YTD_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.YTD_NS_HIT_Shares__c, '' + accountNational);
        system.assertEquals(100, accountNational.QTD_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.QTD_NS_HIT_Shares__c, '' + accountNational);
        system.assertEquals(100, accountNational.MTD_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.MTD_NS_HIT_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NS_HIT_Shares__c, '' + accountNational);
    }
    
    @IsTest
    public static void test_NS_HIT_LastMonth() {
        test(FUND_NUMBER_NS_HIT, date.today().addDays(-45), 100, 10);
		
        Boolean isQTD = (((date.today().month() - 1) / 3) + 1) == (((date.today().addDays(-45).month() - 1) / 3) + 1);
		
        accountNational = reselect(accountNational);
        system.assertEquals(100, accountNational.Total_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.Total_NS_HIT_Shares__c, '' + accountNational);
        system.assertEquals(100, accountNational.YTD_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.YTD_NS_HIT_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_HIT_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_HIT_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NS_HIT_Shares__c, '' + accountNational);
    }
    
    @IsTest
    public static void test_NS_HIT_LastQuarter() {
        test(FUND_NUMBER_NS_HIT, date.today().addDays(-120), 100, 10);
        Boolean isYTD = date.today().year() == date.today().addDays(-120).year();
        accountNational = reselect(accountNational);
        system.assertEquals(100, accountNational.Total_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.Total_NS_HIT_Shares__c, '' + accountNational);
        system.assertEquals(isYTD ? 100 : 0, accountNational.YTD_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(isYTD ? 10 : 0, accountNational.YTD_NS_HIT_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_HIT_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_HIT_Shares__c, '' + accountNational);
        system.assertEquals(isYTD ? 0 : 100, accountNational.PY_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(isYTD ? 0 : 10, accountNational.PY_NS_HIT_Shares__c, '' + accountNational);
    }
    
    @IsTest
    public static void test_NS_HIT_LastYear() {
        test(FUND_NUMBER_NS_HIT, date.today().addDays(-450), 100, 10);
        Boolean isPY = (date.today().year() - 1) == date.today().addDays(-450).year();
        accountNational = reselect(accountNational);
        system.assertEquals(100, accountNational.Total_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.Total_NS_HIT_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NS_HIT_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_HIT_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_HIT_Shares__c, '' + accountNational);
        system.assertEquals(isPY ? 100 : 0, accountNational.PY_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(isPY ? 10 : 0, accountNational.PY_NS_HIT_Shares__c, '' + accountNational);
    }
    
    @IsTest
    public static void test_NS_HIT_LastTwoYears() {
        test(FUND_NUMBER_NS_HIT, date.today().addDays(-850), 100, 10);
        accountNational = reselect(accountNational);
        system.assertEquals(100, accountNational.Total_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.Total_NS_HIT_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NS_HIT_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_HIT_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_HIT_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NS_HIT_Shares__c, '' + accountNational);
    }
    
    @IsTest
    public static void test_NS_HIT_NegativeSalesIgnored() {
        test(FUND_NUMBER_NS_HIT, date.today(), -100, 10);
        accountNational = reselect(accountNational);
        system.assertEquals(0, accountNational.Total_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.Total_NS_HIT_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NS_HIT_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_HIT_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_HIT_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NS_HIT_Shares__c, '' + accountNational);
    }
    
    @IsTest
    public static void test_NS_HIT_NegativeSharesIgnored() {
        test(FUND_NUMBER_NS_HIT, date.today(), 100, -10);
        accountNational = reselect(accountNational);
        system.assertEquals(0, accountNational.Total_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.Total_NS_HIT_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NS_HIT_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_HIT_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_HIT_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NS_HIT_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NS_HIT_Shares__c, '' + accountNational);
    }
        @IsTest
    public static void test_NS_Income_II_Today() {
        test(FUND_NUMBER_NS_Income_II, date.today(), 100, 10);
        accountNational = reselect(accountNational);
        system.assertEquals(100, accountNational.Total_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.Total_NS_Income_II_Shares__c, '' + accountNational);
        system.assertEquals(100, accountNational.YTD_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.YTD_NS_Income_II_Shares__c, '' + accountNational);
        system.assertEquals(100, accountNational.QTD_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.QTD_NS_Income_II_Shares__c, '' + accountNational);
        system.assertEquals(100, accountNational.MTD_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.MTD_NS_Income_II_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NS_Income_II_Shares__c, '' + accountNational);
    }
    
    @IsTest
    public static void test_NS_Income_II_LastMonth() {
        test(FUND_NUMBER_NS_Income_II, date.today().addDays(-45), 100, 10);
		
        Boolean isQTD = (((date.today().month() - 1) / 3) + 1) == (((date.today().addDays(-45).month() - 1) / 3) + 1);
		
        accountNational = reselect(accountNational);
        system.assertEquals(100, accountNational.Total_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.Total_NS_Income_II_Shares__c, '' + accountNational);
        system.assertEquals(100, accountNational.YTD_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.YTD_NS_Income_II_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_Income_II_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_Income_II_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NS_Income_II_Shares__c, '' + accountNational);
    }
    

 

SeanCenoSeanCeno
    @IsTest
    public static void test_NS_Income_II_LastQuarter() {
        test(FUND_NUMBER_NS_Income_II, date.today().addDays(-120), 100, 10);
        Boolean isYTD = date.today().year() == date.today().addDays(-120).year();
        accountNational = reselect(accountNational);
        system.assertEquals(100, accountNational.Total_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.Total_NS_Income_II_Shares__c, '' + accountNational);
        system.assertEquals(isYTD ? 100 : 0, accountNational.YTD_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(isYTD ? 10 : 0, accountNational.YTD_NS_Income_II_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_Income_II_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_Income_II_Shares__c, '' + accountNational);
        system.assertEquals(isYTD ? 0 : 100, accountNational.PY_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(isYTD ? 0 : 10, accountNational.PY_NS_Income_II_Shares__c, '' + accountNational);
    }
    
    @IsTest
    public static void test_NS_Income_II_LastYear() {
        test(FUND_NUMBER_NS_Income_II, date.today().addDays(-450), 100, 10);
        Boolean isPY = (date.today().year() - 1) == date.today().addDays(-450).year();
        accountNational = reselect(accountNational);
        system.assertEquals(100, accountNational.Total_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.Total_NS_Income_II_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NS_Income_II_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_Income_II_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_Income_II_Shares__c, '' + accountNational);
        system.assertEquals(isPY ? 100 : 0, accountNational.PY_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(isPY ? 10 : 0, accountNational.PY_NS_Income_II_Shares__c, '' + accountNational);
    }
    
    @IsTest
    public static void test_NS_Income_II_LastTwoYears() {
        test(FUND_NUMBER_NS_Income_II, date.today().addDays(-850), 100, 10);
        accountNational = reselect(accountNational);
        system.assertEquals(100, accountNational.Total_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(10, accountNational.Total_NS_Income_II_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NS_Income_II_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_Income_II_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_Income_II_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NS_Income_II_Shares__c, '' + accountNational);
    }
    
    @IsTest
    public static void test_NS_Income_II_NegativeSalesIgnored() {
        test(FUND_NUMBER_NS_Income_II, date.today(), -100, 10);
        accountNational = reselect(accountNational);
        system.assertEquals(0, accountNational.Total_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.Total_NS_Income_II_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NS_Income_II_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_Income_II_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_Income_II_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NS_Income_II_Shares__c, '' + accountNational);
    }
    
    @IsTest
    public static void test_NS_Income_II_NegativeSharesIgnored() {
        test(FUND_NUMBER_NS_Income_II, date.today(), 100, -10);
        accountNational = reselect(accountNational);
        system.assertEquals(0, accountNational.Total_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.Total_NS_Income_II_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.YTD_NS_Income_II_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.QTD_NS_Income_II_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.MTD_NS_Income_II_Shares__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NS_Income_II_Sales__c, '' + accountNational);
        system.assertEquals(0, accountNational.PY_NS_Income_II_Shares__c, '' + accountNational);
    }
    
    @IsTest
    public static void testGovernorLimits() {
        // Force tests to run
        Contact_Setting__c csetting = Contact_Setting__c.getInstance();
        csetting = csetting == null ? new Contact_Setting__c() : csetting;
        csetting.Disable_Contact_Rollup__c = false;
        upsert csetting;
        
        Account_Setting__c setting = Account_Setting__c.getInstance();
        setting = setting == null ? new Account_Setting__c() : setting;
        setting.Disable_RollupTrades__c = false;
        upsert setting;
        
        Account[] accountList = new Account[] {};
        for(Integer i = 0; i < 201; i++) {
            Account account = new Account();
            account.Name = 'National Account';
            accountList.add(account);
        }
        insert accountList;
        
        Contact[] contactList = new Contact[] {};
        for(Integer i = 0; i < 201; i++) {
            Contact contact = new Contact();
            contact.FirstName = 'FirstName';
            contact.LastName = 'LastName';
            contact.AccountId = accountList[i].Id;
            contactList.add(contact);
        }
        insert contactList;
        
        // Trades
        Trades__c[] tradesInsertList = new Trades__c[] {};
        Integer MAX_COUNT = 500;
        for(Integer i = 0; i < MAX_COUNT; i++) {
            // Random account
            Integer index = math.floor(math.random() * 20).intValue();
            
            Trades__c trades = new Trades__c();
            trades.Fund_Number__c = FUND_NUMBER_NIOR_I;
            trades.Number_of_Shares_of_the_transaction__c = 10.0;
            trades.Dollar_Amount_of_the_transaction__c = 100.0;
            trades.Trade_Date__c = date.today();
            trades.Posting_Date__c = date.today();
            trades.Resolved_to_Rep_Trading_ID__c = contactList[index].Id;
            trades.Resolved_Office_Trading_ID__c = null;
            trades.Resolved_Firm_Trading_ID__c = accountList[index].Id;
            tradesInsertList.add(trades);
        }
        
        Test.startTest();
        insert tradesInsertList;
        Test.stopTest();
    }
    
    public static Account reselect(Account account) {
        return [
            select Name
                 , Total_NIOR_I_Sales__c
                 , Total_NIOR_I_Shares__c
                 , YTD_NIOR_I_Sales__c
                 , YTD_NIOR_I_Shares__c
                 , QTD_NIOR_I_Sales__c
                 , QTD_NIOR_I_Shares__c
                 , MTD_NIOR_I_Sales__c
                 , MTD_NIOR_I_Shares__c
                 , PY_NIOR_I_Sales__c
                 , PY_NIOR_I_Shares__c
            
                 , Total_NS_Income_Sales__c
                 , Total_NS_Income_Shares__c
                 , YTD_NS_Income_Sales__c
                 , YTD_NS_Income_Shares__c
                 , QTD_NS_Income_Sales__c
                 , QTD_NS_Income_Shares__c
                 , MTD_NS_Income_Sales__c
                 , MTD_NS_Income_Shares__c
                 , PY_NS_Income_Sales__c
                 , PY_NS_Income_Shares__c
            
                 , Total_NS_HIT_Sales__c
                 , Total_NS_HIT_Shares__c
                 , YTD_NS_HIT_Sales__c
                 , YTD_NS_HIT_Shares__c
                 , QTD_NS_HIT_Sales__c
                 , QTD_NS_HIT_Shares__c
                 , MTD_NS_HIT_Sales__c
                 , MTD_NS_HIT_Shares__c
                 , PY_NS_HIT_Sales__c
                 , PY_NS_HIT_Shares__c
            
                 , Total_NS_Income_II_Sales__c
                 , Total_NS_Income_II_Shares__c
                 , YTD_NS_Income_II_Sales__c
                 , YTD_NS_Income_II_Shares__c
                 , QTD_NS_Income_II_Sales__c
                 , QTD_NS_Income_II_Shares__c
                 , MTD_NS_Income_II_Sales__c
                 , MTD_NS_Income_II_Shares__c
                 , PY_NS_Income_II_Sales__c
                 , PY_NS_Income_II_Shares__c
              from Account
             where Id = :account.Id
             limit 1
        ];
    }
}

 

levaleva

Why do you need SeeAlldata annotation? looks like you are setting up the stuff you need before running tests. Don't rely on live data, it changes and can screw up your test.   

SeanCenoSeanCeno

I was doing it just because it was API version 27.0.

 

Account_RollupTrades.cls and Account_RollupTrades.trigger show 100% coverage in the sandbox. I have 83% coverage overall in production and the sandbox. (Yes I have ran all tests and used the 'estimate organizations code coverage'). All custom settings, workflows, and fields are accounted for.

 

When I try to deploy with a change set, the overall code coverage drops to 72%. How is it possible that my entire production org could drop 11% when the class and trigger have 100% coverage?

levaleva

100% coverage with @SeeAllData or without. If the % drop with out the annotation must be data related. If it still 100% maybe it's not the class. Any thirdparty apps installed in prod that are not in the sandbox

SeanCenoSeanCeno

It must not be the class then because it's 100% regardless of the annotation. Would it be best to backup my progress in the sandbox in notepad++ and do a sandbox refresh? I can't really think of any other way to find out the issue unless my System.asserts look wrong to you in my test class.

levaleva

Sure, backing up is always good. Anyone else pushing code to production or just you?

SeanCenoSeanCeno

Nope just me. I'm basically fixing a previous developer's code and adding a new fund number for our trades. Looks like I'm doing a sandbox refresh.

SeanCenoSeanCeno

Did my sandbox refresh, and my change set is still giving me the not enough test coverage error. Is it possible that my system.asserts are not asserting the correct data? Is there any other way to figure out why this won't deploy, even with "100%" test coverage? Do I need to contact Salesforce?

levaleva

If assert failed I would expect a hard error in the logs. If you run all test  do see any?  

SeanCenoSeanCeno

No, there were no failures I just thought maybe if I was asserting the wrong thing, the failures wouldn't show up.

 

Turns out I figured out the problem, and just in case anyone else ever runs into this problem, here is the solution:

 

The reason I switched to dynamic apex was because of a bulk data error when trades were posting. Too many script statements. So I adjusted the code from 176 line to just 27 lines. Salesforce calculates the percentage per org as total code statements tested * 100 / total code statements per org. That's why the overall code coverage was 72% (instead of 83% as showed) when I tried to deploy.  What I did was to raise the code coverage for just one class  from 67% to 81%. Made the changes in sandbox testing 2 additional methods and deployed just the test class to Production.

The overall in production is now 86% instead 83% and my change set deployed successful.

 

Overall, when fixing a class and reducing the number of lines of code, your overall test coverage will fall substantially directly proportional to the number of lines of code being removed.

This was selected as the best answer