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
Krutarth SoniKrutarth Soni 

how to cover IF.. ELSE condition in test class

Hello,
Help me to get 100% code coverage of this code,
 
public class Overview_Controller {
    
    public string baseurl = URL.getSalesforceBaseUrl().toExternalForm();
    public string create = '/one/one.app#/alohaRedirect/'; 
    public string Framework = '/one/one.app#/sObject/CGR__CG_Framework__c/list';

    
    public PageReference CreateFramework(){
        if(UserInfo.getUiTheme()== 'Theme4d')
        {
            string FrameworkPrefix = CGR__CG_Framework__c.sObjectType.getDescribe().getKeyPrefix();
            PageReference  p = new PageReference (baseurl+create+FrameworkPrefix+'/e' );
            p.setRedirect(true);
            return p;
        }
		
		else
        {
            string FPre = CGR__CG_Framework__c.sObjectType.getDescribe().getKeyPrefix();
            PageReference p1 = new PageReference ('/'+FPre+'/e' );
            p1.setRedirect(true);
            return p1;
        }
	}
}

I tried this test class, but it only covers else part. it does not cover if (condition) block. 
 
@isTest
public class Overview_Controller_Test {
    
    private static testMethod void testOverview()
    {
        Overview_Controller oc = new Overview_Controller ();
        
        oc.CreateFramework();
    	
	}
}

Help me to achieve 100% code coverage.

--
Thank-You!
Krutarth Soni
 
Best Answer chosen by Krutarth Soni
Amit Chaudhary 8Amit Chaudhary 8
Please check below post
1) https://salesforce.stackexchange.com/questions/183520/how-to-set-ui-theme-in-test-salesforce1

Please update your Apex class like below
public class Overview_Controller {
    
    public string baseurl = URL.getSalesforceBaseUrl().toExternalForm();
    public string create = '/one/one.app#/alohaRedirect/'; 
    public string Framework = '/one/one.app#/sObject/CGR__CG_Framework__c/list';
	public Boolean isTestClass = false;
    
    public PageReference CreateFramework(){
	
        if(UserInfo.getUiTheme()== 'Theme4d' || isTestClass ==true)
        {
            string FrameworkPrefix = CGR__CG_Framework__c.sObjectType.getDescribe().getKeyPrefix();
            PageReference  p = new PageReference (baseurl+create+FrameworkPrefix+'/e' );
            p.setRedirect(true);
            return p;
        }
		else
        {
            string FPre = CGR__CG_Framework__c.sObjectType.getDescribe().getKeyPrefix();
            PageReference p1 = new PageReference ('/'+FPre+'/e' );
            p1.setRedirect(true);
            return p1;
        }
	}
}
And test like below
@isTest
public class Overview_Controller_Test {
   
    private static testMethod void testOverview()
    {
			Overview_Controller oc = new Overview_Controller ();
			oc.isTestClass = false;
			oc.CreateFramework();
			oc.baseurl = URL.getSalesforceBaseUrl().toExternalForm();
			oc.create = '/one/one.app#/alohaRedirect/'; 
			oc.Framework = '/one/one.app#/sObject/CGR__CG_Framework__c/list';    
			oc.CreateFramework();
	}
	
    private static testMethod void testOverview1()
    {
			Overview_Controller oc = new Overview_Controller ();
			oc.isTestClass = true;
			oc.CreateFramework();
			oc.baseurl = URL.getSalesforceBaseUrl().toExternalForm();
			oc.create = '/one/one.app#/alohaRedirect/'; 
			oc.Framework = '/one/one.app#/sObject/CGR__CG_Framework__c/list';    
			oc.CreateFramework();
	}
	
}

Let us know if this will help you
 

All Answers

v varaprasadv varaprasad
Hi Soni,

Please check once below code:
 
@isTest
public class Overview_Controller_Test {
    
    private static testMethod void testOverview()
    {
        Overview_Controller oc = new Overview_Controller ();
		oc.CreateFramework();
		oc.baseurl = URL.getSalesforceBaseUrl().toExternalForm();
        oc.create = '/one/one.app#/alohaRedirect/'; 
        oc.Framework = '/one/one.app#/sObject/CGR__CG_Framework__c/list';    
        oc.CreateFramework();
    	
	}
}


Thanks
Varaprasad
v varaprasadv varaprasad
@isTest
public class Overview_Controller_Test {
    
    private static testMethod void testOverview()
    {
	
        Overview_Controller oc = new Overview_Controller ();
		oc.CreateFramework();
		string theme4d = UserInfo.getUiTheme();
		oc.baseurl = URL.getSalesforceBaseUrl().toExternalForm();
        oc.create = '/one/one.app#/alohaRedirect/'; 
        oc.Framework = '/one/one.app#/sObject/CGR__CG_Framework__c/list';    
        oc.CreateFramework();
    	
	}
}

Please check once above code also.
Krutarth SoniKrutarth Soni
Hello Varaprasad,

Thank you for the quick reply! but both the code is not working, I mean still IF block is not cover. 

--
Thank-You!
Krutarth Soni
Amit Chaudhary 8Amit Chaudhary 8
Hi Krutarth Soni,

You Need to create user in your test class and need to use System.runAs(user)  in your test to cover that if in your test class.
 
@isTest
public class Overview_Controller_Test {
   
    private static testMethod void testOverview()
    {
		String uniqueUserName = 'standarduser' + DateTime.now().getTime() + '@testorg.com';
		// This code runs as the system user

		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=uniqueUserName);
 // set UiTheme here 
        System.runAs(u) {
			Overview_Controller oc = new Overview_Controller ();
			oc.CreateFramework();
			oc.baseurl = URL.getSalesforceBaseUrl().toExternalForm();
			oc.create = '/one/one.app#/alohaRedirect/'; 
			oc.Framework = '/one/one.app#/sObject/CGR__CG_Framework__c/list';    
			oc.CreateFramework();
    	}
	}
	
    private static testMethod void testOverview1()
    {
		String uniqueUserName = '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=uniqueUserName);
        // set UiTheme here 
        System.runAs(u) {
			Overview_Controller oc = new Overview_Controller ();
			oc.CreateFramework();
			oc.baseurl = URL.getSalesforceBaseUrl().toExternalForm();
			oc.create = '/one/one.app#/alohaRedirect/'; 
			oc.Framework = '/one/one.app#/sObject/CGR__CG_Framework__c/list';    
			oc.CreateFramework();
    	}
	}
	
}



 
Krutarth SoniKrutarth Soni
Hello Amit,

Thank you for the reply! but the code is not working, I mean still IF block is not cover. 

--
Thank-You!
Krutarth Soni
v varaprasadv varaprasad
Hi Soni,

In your class either we can cover if or else condition only.

Reason : 
You can not change the theme of salesforce CRM UI, however you can select the options to change theme as latest, which insures that latest changes in UI theme will reflect in your org. For that go to setup-> Customize-> UserInterface-> select the checkbox (Enable New User Interface Theme) and click on save.


To Cover IF condition in your code :

Please execute below line on a developer console anonymous window and check theme name is Theme4d or not.
System.debug('Current UserInfo Theme: ' + UserInfo.getUiTheme());

If UI theme is Theme4d  your if condition will work.

Otherwise else will work.

If you want to cover if class then change theme based on debug logs.

I hope it helps you.


Thanks
Varaprasad


 
Amit Chaudhary 8Amit Chaudhary 8
Please check below post
1) https://salesforce.stackexchange.com/questions/183520/how-to-set-ui-theme-in-test-salesforce1

Please update your Apex class like below
public class Overview_Controller {
    
    public string baseurl = URL.getSalesforceBaseUrl().toExternalForm();
    public string create = '/one/one.app#/alohaRedirect/'; 
    public string Framework = '/one/one.app#/sObject/CGR__CG_Framework__c/list';
	public Boolean isTestClass = false;
    
    public PageReference CreateFramework(){
	
        if(UserInfo.getUiTheme()== 'Theme4d' || isTestClass ==true)
        {
            string FrameworkPrefix = CGR__CG_Framework__c.sObjectType.getDescribe().getKeyPrefix();
            PageReference  p = new PageReference (baseurl+create+FrameworkPrefix+'/e' );
            p.setRedirect(true);
            return p;
        }
		else
        {
            string FPre = CGR__CG_Framework__c.sObjectType.getDescribe().getKeyPrefix();
            PageReference p1 = new PageReference ('/'+FPre+'/e' );
            p1.setRedirect(true);
            return p1;
        }
	}
}
And test like below
@isTest
public class Overview_Controller_Test {
   
    private static testMethod void testOverview()
    {
			Overview_Controller oc = new Overview_Controller ();
			oc.isTestClass = false;
			oc.CreateFramework();
			oc.baseurl = URL.getSalesforceBaseUrl().toExternalForm();
			oc.create = '/one/one.app#/alohaRedirect/'; 
			oc.Framework = '/one/one.app#/sObject/CGR__CG_Framework__c/list';    
			oc.CreateFramework();
	}
	
    private static testMethod void testOverview1()
    {
			Overview_Controller oc = new Overview_Controller ();
			oc.isTestClass = true;
			oc.CreateFramework();
			oc.baseurl = URL.getSalesforceBaseUrl().toExternalForm();
			oc.create = '/one/one.app#/alohaRedirect/'; 
			oc.Framework = '/one/one.app#/sObject/CGR__CG_Framework__c/list';    
			oc.CreateFramework();
	}
	
}

Let us know if this will help you
 
This was selected as the best answer
v varaprasadv varaprasad
Hi Soni,

Please check once below code : 
@isTest
public class Overview_Controller_Test {
    
    private static testMethod void testOverview()
    {
        Overview_Controller oc = new Overview_Controller ();
        oc.isTestClass = false;
        //oc.CreateFramework();
        oc.baseurl = URL.getSalesforceBaseUrl().toExternalForm();
        oc.create = '/one/one.app#/alohaRedirect/'; 
        oc.Framework = '/one/one.app#/sObject/CGR__CG_Framework__c/list';
        oc.CreateFramework();
        
    }
    
    private static testMethod void testOverview1()
    {
        Overview_Controller oc = new Overview_Controller ();
        oc.isTestClass = true;
        //oc.CreateFramework();
        oc.baseurl = URL.getSalesforceBaseUrl().toExternalForm();
        oc.create = '/one/one.app#/alohaRedirect/'; 
        oc.Framework = '/one/one.app#/sObject/CGR__CG_Framework__c/list';    
        oc.CreateFramework();
    }
    
}

Hope it helps you.It will cover 100% code coverage.

Thanks
Varaprasad



 
v varaprasadv varaprasad
In Class do below changes : 
 
public class Overview_Controller {
    
    public string baseurl = URL.getSalesforceBaseUrl().toExternalForm();
    public string create = '/one/one.app#/alohaRedirect/'; 
    public string Framework = '/one/one.app#/sObject/CGR__CG_Framework__c/list';
	public Boolean isTestClass = True;
    
    public PageReference CreateFramework(){
	
        if(UserInfo.getUiTheme()== 'Theme4d' && isTestClass ==true)
        {
            string FrameworkPrefix = CGR__CG_Framework__c.sObjectType.getDescribe().getKeyPrefix();
            PageReference  p = new PageReference (baseurl+create+FrameworkPrefix+'/e' );
            p.setRedirect(true);
            return p;
        }
		else
        {
            string FPre = CGR__CG_Framework__c.sObjectType.getDescribe().getKeyPrefix();
            PageReference p1 = new PageReference ('/'+FPre+'/e' );
            p1.setRedirect(true);
            return p1;
        }
	}
}


 
Krutarth SoniKrutarth Soni
Thank you, Amit and varaprasad for response.
--
Thank-You!
Krutarth Soni