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
EnozzirEnozzir 

Unable to get my testclass to cover a an if statement that references user data

public class Risk_AnalysisExtController {
    
    public String server {get;set;}
    public String rootURL {get;set;}
    public string uId {get;set;}
    public String inputSer {get; set;} //line290
    public List<Risk_Analysis__c> listRiskAnalysis {get; set;} //All
    public List<Risk_Analysis__c> custListHistory {get; set;} //when user select customer
    public List<Risk_Analysis__c> serListHistory {get; set;} //when user select serial 
    public List<Risk_Analysis__c> serListAllExist {get; set;}
    public List<Risk_Analysis__c> serList {get; set;}
    public List<Risk_Analysis__c> serListAllNew {get; set;}
    public string paramCust {get; set;}
    public string paramSer {get; set;}
    public string paramThem {get; set;}
    public string inputComment {get; set;}
    public string paramCustText {get; set;}
    public string paramThemText {get; set;}
    public string paramBrandT {get; set;} 
    public string paramMat {get; set;}
    public string actionOpt {get; set;}
    public date inputDate {get; set;}
    public string removalReason {get; set;}
    //public Id machId {get; set;} 
    Map<string, Risk_Analysis__c> MapCheckSer = new Map<string, Risk_Analysis__c>(); 
    Map<string, Risk_Analysis__c> MapCheckExist = new Map<string, Risk_Analysis__c>(); 
    Map<string, string> MapCommentsExist = new Map<string, string>(); 
    public string outputSer {get; set;} //line292 
    //public string delCust {get; set;}
    //public string delSer {get; set;}
    
    //private list<Risk_Analysis__c> delRisk = new list<Risk_Analysis__c>(); 
    private Risk_Analysis__c delRisk ; 
    public PageReference pageRef; 
    public Map<string, string> URLParameters = ApexPages.currentPage().getParameters(); 
    
    public Id currentPageId; 
    
    List<riskWrapper> rList = new List<riskWrapper>();
    List<Risk_Analysis__c> selectedRecords = new List<Risk_Analysis__c>();
    public List<Risk_Analysis__c> delRecords = new List<Risk_Analysis__c>();
    public list<riskWrapper> riskList = new List<riskWrapper>();// {get; set;} 
    
    
    
    
    public Risk_AnalysisExtController(ApexPages.StandardController stdController) {
        string trustedTicket ='';
        //dashboard url with trusted ticket
        server = 'https://test.tableaureporting.test.com';
        if (Functions.isProduction()) server = 'https://tableaureporting.test.com';
        
        //currently loggedin user 
        User u = [select name, Alias, CommunityNickname, FederationIdentifier, Domain_Credential__c, SAP_Partner_Number__c from user where Id = :UserInfo.getUserId() limit 1]; //added Domain_Credential__c
        string userid = ''; 
        if(vUser(u.id).equals('Correct'))
            userid =u.Domain_Credential__c.toLowerCase();
        
        if(u.SAP_Partner_Number__c!=null)uId = String.valueof('000'+u.SAP_Partner_Number__c); 
      //  system.debug('uId'+uId); 
        
      //  system.debug('userid = ' +userid);
      //  system.debug('server = '+ server);
        //retrieve trusted ticket
        trustedTicket = getTicket(userid, 'Sales_Ops', server);
        rootURL = server+ '/trusted/'+trustedTicket;
        system.debug('rootURL = '+rootURL);
        system.debug('trustedTicket = '+ trustedTicket);
        
        //buffer
        serListHistory = [Select Id, Customer__c, Comments__c, Serial_Number__c, Theme__c, End_of_Life_Date__c, Action__c, 
                          Removal_Reason__c, Customer_Name__c, Brand_Name__c, Theme_Name__c, Cabinet__c
                          from Risk_Analysis__c where  Serial_Number__c=: paramSer];   
        serListAllExist = [Select Id, Customer__c, Comments__c, Serial_Number__c, Theme__c, End_of_Life_Date__c, Action__c, 
                           Removal_Reason__c, Customer_Name__c, Brand_Name__c, Theme_Name__c, Cabinet__c
                           from Risk_Analysis__c where  Serial_Number__c=: paramSer];  
        serListAllNew = [Select Id, Customer__c, Comments__c, Serial_Number__c, Theme__c, End_of_Life_Date__c, Action__c, 
                         Removal_Reason__c, Customer_Name__c, Brand_Name__c, Theme_Name__c, Cabinet__c
                         from Risk_Analysis__c where  Serial_Number__c=: paramSer]; 
        
        listRiskAnalysis = [Select Id, Customer__c, Comments__c, Serial_Number__c, Theme__c, End_of_Life_Date__c, Action__c, 
                            Removal_Reason__c, Customer_Name__c, Brand_Name__c, Theme_Name__c, Cabinet__c
                            from Risk_Analysis__c]; 
        
        
        
        
        
        /*if(paramCust!= null && paramCust.isNumeric() && (paramSer == null || paramSer == '')) {
            
            String CustNumTemp; 
            CustNumTemp = paramCust.right(7);
            custListHistory = [Select Id, Customer__c, Comments__c, Serial_Number__c, Theme__c, End_of_Life_Date__c, Action__c, 
                               Removal_Reason__c, Customer_Name__c, Brand_Name__c, Theme_Name__c, Cabinet__c, Delete__c 
                               from Risk_Analysis__c where Customer__c =: CustNumTemp];
            
        }
        
        MapCommentsExist.put(paramSer, inputComment);*/
               
    
    }
    
    
      
        public class riskWrapper
    {
        public Risk_Analysis__c risk{get; set;}
        public Boolean selected {get; set;}
        public RiskWrapper(Risk_Analysis__c r)
        {
            risk = r;
            selected = false;
        }
    }
    
    //prevent crashing sparkler server
    public string vUser(string uid) {
        User u = [select name, Alias, CommunityNickname, FederationIdentifier, Domain_Credential__c from user 
                  where Id = :uid]; 
        
        string uName = u.Domain_Credential__c.toLowerCase();
        if(uname == null || !u.Domain_Credential__c.contains('@') || uName.substringBefore('@').contains('.') 
           || uName.escapeJava().contains('\\') || uname.contains('@firm2.com') || uname.contains('@firm1.com') ) { //TKT-0931762 
               ApexPages.Message myMsg = 
                   new ApexPages.Message(ApexPages.Severity.Error,
                                         'Domain Credential Error. Please log an SFDC Internal HelpDesk ticket with a screenshot. Thank you.');
               ApexPages.addMessage(myMsg);
               return 'Domain Credential Error. Please log an SFDC Internal HelpDesk ticket with a screenshot. Thank you.';
           }
        else
            return 'Correct'; 
    }

So I've tried a multitude of methods (insert, update, .put) but i cant seem to get the last if statement at the end to come out as true in one of my testclasses. 

this if statement 
 
if(uname == null || !u.Domain_Credential__c.contains('@') || uName.substringBefore('@').contains('.') 
           || uName.escapeJava().contains('\\') || uname.contains('@firm2.com') || uname.contains('@firm1.com') ) { //TKT-0931762 
               ApexPages.Message myMsg = 
                   new ApexPages.Message(ApexPages.Severity.Error,
                                         'Domain Credential Error. Please log an SFDC Internal HelpDesk ticket with a screenshot. Thank you.');
               ApexPages.addMessage(myMsg);
               return 'Domain Credential Error. Please log an SFDC Internal HelpDesk ticket with a screenshot. Thank you.';

*do note i'm not showing all my code just relevent sections*

For whatever reason nothing i do seems to be able to trigger that if statement and get that error message to blast off.
Tom Snyder 3Tom Snyder 3
it would help if you would show your test method,  I will take a guess and based on your use of the UserInfo.getUserId()

In your unit test you would want to create a test user and run your tests using the 'runAs' method.
Ex:
https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_testing_tools_runas.htm

 
EnozzirEnozzir
@isTest
public class Risk_AnalysisExtControllerTest {
    
    static testmethod void testSave() {
        
        map<string,string> mapOvrs = new map<string,string>();
        TestDataUtility_Acct tdRisk = new TestDataUtility_Acct(); 
        list<ApexPages.Message> msgs = ApexPages.getMessages();
        
        //test data 
        //mapOvrs.put('Serial_Number__c', '111111'); 
        //mapOvrs.put('Customer__c', '3333333'); 
        //mapOvrs.put('Theme__c','XYZ');
        //mapOvrs.put('Comments__c', 'test');
        Risk_Analysis__c tRisk = tdRisk.crtRisk(mapOvrs);
        insert tRisk; 
        
        Test.startTest(); 
        
        //Create test page 
        
        ApexPages.StandardController StandC = new ApexPages.StandardController(tRisk); 
        Risk_AnalysisExtController Risk = new Risk_AnalysisExtController(StandC); //add the extension to standard controller
        
        PageReference pageRef = Page.Risk_AnalysisVF; 
        Test.setCurrentPage(pageRef); 
        ApexPages.currentPage().getParameters().put('RiskId',tRisk.Id); 
        ApexPages.StandardController sc = new ApexPages.StandardController(tRisk);
        Risk_AnalysisExtController extC = new Risk_AnalysisExtController(sc); 
        string rootURL = extC.rootURL; 
        
        //variables
        extC.paramSer = '123456';
        extC.paramCust = '0003333333';
        extC.paramThem = 'XYZ';
        extC.inputComment = 'test1';
        extC.actionOpt = '';
        extC.removalReason = '';
        extC.paramCustText = '';
        extC.paramBrandT = '';
        extC.paramThemText = '';
        extC.paramMat = '';
        
        extC.saveAll();
        
        extC.paramSer = '222222';
        extC.ShowSer();
        
        extC.paramCust = '0002222222';
        extC.ShowCust();
        
        extC.paramSer = '123456'; 
        extC.paramThem = 'XYZ';
        extC.ShowSer();
        
        extC.paramCust = '0003333333';
        extC.ShowCust(); 
        
        //No Comments
        extC.paramSer = '123450';
        extC.paramCust = '0001333333';
        extC.paramThem = 'XYZ';
        extC.inputComment = '';
        
        extC.saveAll(); 
        
        msgs = ApexPages.getMessages();
        //boolean result = true; 
        for(ApexPages.Message msg :msgs) {
            system.assertEquals(ApexPages.Severity.ERROR, msg.getSeverity(), 'Error message');
        }
        
        //With comments
        extC.paramSer = '123450';
        extC.paramCust = '0001333333';
        extC.paramThem = 'XYZ';
        extC.inputComment = 'comments';
        
        extC.saveAll();
        
        msgs = ApexPages.getMessages();
        for(ApexPages.Message msg :msgs) {            
            system.assertEquals(ApexPages.Severity.ERROR, msg.getSeverity(), 'No Error message');
        }
        extC.ShowCust(); 
        extC.ShowSer();
        
        //With existing comments
        extC.paramSer = '123450';
        extC.paramCust = '0001333333';
        extC.paramThem = 'XYZ';
        extC.inputComment = 'comments2345';
        
        extC.saveAll();        
        extC.ShowCust(); 
        extC.ShowSer();
        
        //With existing records, no comments
        extC.paramSer = '123450';
        extC.paramCust = '0001333333';
        extC.paramThem = 'XYZ';
        extC.inputComment = null;
        
        extC.saveAll();        
        msgs = ApexPages.getMessages();
        
        for(ApexPages.Message msg :msgs) {
            system.assertEquals(ApexPages.Severity.ERROR, msg.getSeverity(), 'Error message');
        }
        extC.ShowCust(); 
        extC.ShowSer();
        
        extC.paramSer = '1111111';
        extC.paramCust = '0001333300';
        extC.paramThem = 'XYZ';
        extC.inputComment = '';
        extC.saveAll();
        extC.inputSer = '111111'; 
        PageReference reload = extC.removeRecord(); 
        extC.saveAll();
        
        test.stopTest(); 
        
        
    }
    
    static testmethod void removeSer() {
        
        map<string,string> mapOvrs = new map<string,string>();
        TestDataUtility_Acct tdRisk = new TestDataUtility_Acct(); 
        list<ApexPages.Message> msgs = ApexPages.getMessages();
        
        //test data 
        //mapOvrs.put('Serial_Number__c', '111111'); 
        //mapOvrs.put('Customer__c', '3333333'); 
        //mapOvrs.put('Theme__c','XYZ');
        //mapOvrs.put('Comments__c', 'test');
        Risk_Analysis__c tRisk = tdRisk.crtRisk(mapOvrs);
        insert tRisk; 
        
        Test.startTest(); 
        
        //Create test page 
        ApexPages.StandardController StandC = new ApexPages.StandardController(tRisk); 
        Risk_AnalysisExtController Risk = new Risk_AnalysisExtController(StandC); //add the extension to standard controller
        
        PageReference pageRef = Page.Risk_AnalysisVF; 
        Test.setCurrentPage(pageRef); 
        ApexPages.currentPage().getParameters().put('RiskId',tRisk.Id); 
        ApexPages.StandardController sc = new ApexPages.StandardController(tRisk);
        Risk_AnalysisExtController extC = new Risk_AnalysisExtController(sc); 
        string rootURL = extC.rootURL; 
        
        //variables
        extC.paramSer = '123456';
        extC.paramCust = '3333333';
        extC.paramThem = 'XYZ';
        extC.inputComment = '';
        extC.actionOpt = '';
        extC.removalReason = '';
        extC.paramCustText = '';
        extC.paramBrandT = '';
        extC.paramThemText = '';
        extC.paramMat = '';
        
        extC.ShowSer(); 
        extC.saveAll();
        
        extC.inputSer = '123456'; 
        PageReference reload = extC.removeRecord(); 
        extC.saveAll();
        
        extC.paramSer =  '111111';
        extC.paramCust = '0003333333';
        extC.paramThem = 'XYZ';
        extC.inputComment = '';
        extC.actionOpt = '';
        extC.removalReason = '';
        extC.paramCustText = '';
        extC.paramBrandT = '';
        extC.paramThemText = '';
        extC.paramMat = '';
        extC.ShowSer();
        extC.saveAll(); 
        extC.ShowSer();
        extC.inputSer = '111111';
        PageReference reload2 = extC.removeRecord(); 
        extC.saveAll();
        
        
        test.stopTest();
    }
    
    static testmethod void deleteSer() {
    map<string,string> mapOvrs = new map<string,string>();
        TestDataUtility_Acct tdRisk = new TestDataUtility_Acct(); 
        list<ApexPages.Message> msgs = ApexPages.getMessages();
        
        //test data 
        mapOvrs.put('Serial_Number__c', '111111'); 
        mapOvrs.put('Customer__c', '0003333333'); 
        mapOvrs.put('Theme__c','XYZ');
        mapOvrs.put('Comments__c', 'test');
        Risk_Analysis__c tRisk = tdRisk.crtRisk(mapOvrs);
        insert tRisk; 
        
        Test.startTest(); 
        
        //Create test page 
        ApexPages.StandardController StandC = new ApexPages.StandardController(tRisk); 
        Risk_AnalysisExtController Risk = new Risk_AnalysisExtController(StandC); //add the extension to standard controller
        
        PageReference pageRef = Page.Risk_AnalysisVF; 
        Test.setCurrentPage(pageRef); 
        ApexPages.currentPage().getParameters().put('RiskId',tRisk.Id); 
        ApexPages.StandardController sc = new ApexPages.StandardController(tRisk);
        Risk_AnalysisExtController extC = new Risk_AnalysisExtController(sc); 
        string rootURL = extC.rootURL; 
        
        //variables
        extC.paramSer = '123456';
        extC.paramCust = '0003333333';
        extC.paramThem = 'XYZ';
        extC.inputComment = '';
        extC.actionOpt = '';
        extC.removalReason = '';
        extC.paramCustText = '';
        extC.paramBrandT = '';
        extC.paramThemText = '';
        extC.paramMat = '';
        
        extC.ShowSer(); 
        extC.saveAll();

        extC.paramSer =  '111111';
        extC.paramCust = '3333333';
        extC.paramThem = 'XYZ';
        extC.inputComment = '';
        extC.actionOpt = '';
        extC.removalReason = '';
        extC.paramCustText = '';
        extC.paramBrandT = '';
        extC.paramThemText = '';
        extC.paramMat = '';
        extC.ShowSer();
        extC.saveAll(); 
        extC.ShowSer();


        extC.inputSer = '111111';
        
        extC.inputSer = '123456'; 
        
        extC.getriskLs(); 
        extC.showList(); 
        extC.GetSelected(); 
        

        extC.getSelected();
        
        extC.delRecords = [Select Id, Customer__c, Comments__c, Serial_Number__c, Theme__c, End_of_Life_Date__c, Action__c, 
                                          Removal_Reason__c, Customer_Name__c, Brand_Name__c, Theme_Name__c, Cabinet__c,Delete__c 
                                          from Risk_Analysis__c where Serial_Number__c =: '111111']; 
        extC.delRecords.size(); 
        PageReference reload2 = extC.delSelected(); 
        
       
        
        
        test.stopTest();
    
    
    }
    

        
    }

@Tom SYnder 3 

thats my current test class thats giving me 83% coverage, trying to get to 90%
 
Tom Snyder 3Tom Snyder 3
I see your not making use of the runAs therefor it always running in the Context of the system user.  create a test user inside a new unit test with the requirements need in your if then expression and perform use the runAs(testUser)

https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_testing_tools_runas.htm
 
EnozzirEnozzir
@Tom Synder 3 
@isTest
Public class TestRunAs {
    public static testMethod Void testRunAs(){
       User uz = new User();
        uz.FirstName = 'joe';
        uz.LastName = 'bob';
        uz.Alias = 'joeb';
        uz.CommunityNickname = 'joebo';
        uz.FederationIdentifier = 'joebob@test1.com';
        uz.Domain_Credential__c = 'joebob@testorg.com';
        uz.Username = 'joey';
        string joey = 'standarduser' + DateTime.now().getTime() + '@testorg.com';
         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=joey);

                      System.runAs(u) {
                         
                      }

       
    }
}


So in the System.runAs(u) {} brackets am i targeting my class, should i do what i did prior and insert data ? Obviously right now it doesn't do anything when i run it...
Tom Snyder 3Tom Snyder 3
public static testMethod Void testRunAs(){

        string joey = 'standarduser' + DateTime.now().getTime() + '@testorg.com';
         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=joey,
        CommunityNickname = 'joebo',
        FederationIdentifier = 'joebob@test1.com',
        Domain_Credential__c = 'joebob@testorg.com',
);

                      System.runAs(u) {
                           //the code is this block will run in the user u created context
                      }


}

 
EnozzirEnozzir
@Tom Snyder 3 

ah i can see clearly now....the rain is gone.. thank you. Do you have any good reference material for making test classes for wrapper classes?