You need to sign in to do that
Don't have an account?
Darkangel8
Need help to write test class
I am new to salesforce. Please help me to write the test class for below method-
public list<string> getZipCode( string searchText ){
list<string> teriNames = new list<string>();
list<Zip_Code__c> ziplist = [Select Id, Name, BU__c, Country__c,Territory_Code__c, Territory_Name__c from Zip_Code__c where name =: searchText];
for(Zip_Code__c zip : ziplist ){
if(zip.Territory_Name__c != null){
teriNames.add(zip.Territory_Name__c);
}
}
return teriNames ;
}
public list<string> getZipCode( string searchText ){
list<string> teriNames = new list<string>();
list<Zip_Code__c> ziplist = [Select Id, Name, BU__c, Country__c,Territory_Code__c, Territory_Name__c from Zip_Code__c where name =: searchText];
for(Zip_Code__c zip : ziplist ){
if(zip.Territory_Name__c != null){
teriNames.add(zip.Territory_Name__c);
}
}
return teriNames ;
}
Thanks for ur help. But the coverage is still below 75%
public class TMRRepLookupVersionCon {
public string SearchType{get;set;}
public string searchText{get;set;}
public List<Zip_Code__c> zips {get;set;}
//public list<user> users{get;set;}
public boolean show{get;set;}
public boolean NoRecords{get;set;}
public list<UserDetails> udetails{get;set;}
// constructor
public TMRRepLookupVersionCon(){
show =false;
NoRecords =false;
searchType ='zip';
}
/**
* @description : This method is used to display the search type Check box
*/
public List<SelectOption> getSearchTypes() {
List<SelectOption> options = new List<SelectOption>();
options.add(new SelectOption('zip','Zip Code'));
options.add(new SelectOption('act','Account Number'));
return options;
}
/**
* @description : This method is used to search the reps assigned to respective
zip code or account number
*/
public void search(){
// users = new list<user>();
udetails = new list<UserDetails>();
list<string> teriNames = new list<string>();
if(string.isBlank(SearchType) ){
ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.FATAL, 'You must select a search type.'));
}else if (string.isBlank(searchText ) ) {
ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.FATAL, 'You must enter a value to search for.'));
} else if(searchType == 'zip' && string.isNotBlank(searchText)) {
teriNames = getZipCode(searchText); // [Select Id, Name, BU__c, Country__c,Territory_Code__c, Territory_Name__c from Zip_Code__c where name =: searchText ];//like \'' + searchText + '%\' limit 500';
if(!teriNames.isEmpty()){
udetails = getDetails(teriNames);
}
}
else{
list<string> zipcode= new list<string>();
list<string> territoryNames = new list<string>();
if(searchType == 'act' && string.isNotBlank(searchText) ){
if(searchText.length() == 10){
for(account ac: [select id, billingpostalcode,Account_No__c,Non_Acute__c,Territory_Name_RC_IS_Value__c,Territory_Name_Diagnostics_Value__c,Territory_Name_OCC_Value__c,Territory_Name_RC_Value__c,Territory_Name_Ventilation_Value__c,Territory_Name_Consumables__c from account where Account_No__c =:searchText limit 1]){
// zipcode.add(ac.billingpostalcode);
if(ac.Non_Acute__c){
if(ac.Territory_Name_RC_IS_Value__c!= null){
territoryNames.add(ac.Territory_Name_RC_IS_Value__c);
}
}else{
if(ac.Territory_Name_Diagnostics_Value__c!= null){
territoryNames.add(ac.Territory_Name_Diagnostics_Value__c);
}
if(ac.Territory_Name_OCC_Value__c != null){
territoryNames.add(ac.Territory_Name_OCC_Value__c);
}
if(ac.Territory_Name_Ventilation_Value__c != null){
territoryNames.add(ac.Territory_Name_Ventilation_Value__c );
}
if(ac.Territory_Name_Consumables__c != null){
territoryNames.add(ac.Territory_Name_Consumables__c );
}
}
}
}
if(searchText.length() <= 8){
for(Account_Cross_Reference__c acfs : [SELECT Enterprise_Account_Number__c,SFDC_Account_ID__c,SFDC_Account_ID__r.Non_Acute__c,SFDC_Account_ID__r.Territory_Name_RC_IS_Value__c,SFDC_Account_ID__r.billingpostalcode,
SFDC_Account_ID__r.Territory_Name_Diagnostics_Value__c,SFDC_Account_ID__r.Territory_Name_OCC_Value__c,
SFDC_Account_ID__r.Territory_Name_RC_Value__c,SFDC_Account_ID__r.Territory_Name_Ventilation_Value__c FROM Account_Cross_Reference__c WHERE ERP_Account_Number__c =:searchText AND ERP_System__c = 'SAP - US' limit 1]){
if(acfs .SFDC_Account_ID__r.Non_Acute__c){
if(acfs.SFDC_Account_ID__r.Territory_Name_RC_IS_Value__c!= null){
territoryNames.add(acfs.SFDC_Account_ID__r.Territory_Name_RC_IS_Value__c);
}
}else{
if(acfs.SFDC_Account_ID__r.Territory_Name_Diagnostics_Value__c!= null){
territoryNames.add(acfs.SFDC_Account_ID__r.Territory_Name_Diagnostics_Value__c);
}
if(acfs.SFDC_Account_ID__r.Territory_Name_OCC_Value__c != null){
territoryNames.add(acfs.SFDC_Account_ID__r.Territory_Name_OCC_Value__c);
}
if(acfs.SFDC_Account_ID__r.Territory_Name_Ventilation_Value__c != null){
territoryNames.add(acfs.SFDC_Account_ID__r.Territory_Name_Ventilation_Value__c );
}
}
}
}
if(!territoryNames.isEmpty()){
udetails = getDetails(territoryNames);
}
}
}
system.debug(Apexpages.hasMessages());
if(!udetails.isEmpty()){
show = true;
}else{
show = false;
}
if( Apexpages.hasMessages() ){
NoRecords = false;
}else{
NoRecords = true ;
}
}
/**
* @description : This method is used to return the list territory names based on zipe code
*/
public list<string> getZipCode( string searchText ){
list<string> teriNames = new list<string>();
list<Zip_Code__c> ziplist = [Select Id, Name, BU__c, Country__c,Territory_Code__c, Territory_Name__c from Zip_Code__c where name =: searchText];
for(Zip_Code__c zip : ziplist ){
if(zip.Territory_Name__c != null){
teriNames.add(zip.Territory_Name__c);
}
}
return teriNames ;
}
/**
* @description : This method is used to return the list users assigned to zipcode or account number
*/
Public list<UserDetails> getDetails(list<string> teriNames){
set<id> teryIds = new set<id>();
Map<id,Territory2> territorMap = new Map<id,Territory2>();
Map<id,id> UserterriMap = new Map<id,id>();
if(!teriNames.isEmpty()){
for(Territory2 t:[SELECT id,DeveloperName,Name,Territory_No__c FROM Territory2 where Name IN : teriNames]){
teryIds.add(t.id);
territorMap.put(t.id,t);
}
}
set<Id> userIds = new set<id>();
if(!teryIds.isEMpty()){
for(UserTerritory2Association Usert:[SELECT id,UserId,Territory2Id FROM UserTerritory2Association where isActive=true and territory2id IN : teryIds ]){
userIds.add(Usert.UserId );
UserterriMap.put(Usert.UserId ,Usert.Territory2Id);
}
}
if(!userIds.isEmpty()){
for(user u:[select id, name ,phone,email, Manager.Name, Manager.Email, Manager.Phone, Business_Unit__c from user where id IN : userIds and isactive= true ORDER BY Business_Unit__c]){
//users.add(u);
UserDetails ud = new UserDetails();
ud.usr = u;
if(UserterriMap.containskey(u.id)){
Id terrritoryId = UserterriMap.get(u.id);
ud.teriName = territorMap.get(terrritoryId).name;
}
udetails.add(ud);
}
}
return udetails;
}
public class UserDetails{
public user usr{get;set;}
public string teriName{get;set;}
}
}
The getDetails method is also showing red lines. Currently the code coverage is 69%
if you have a line : Then in you test class you will need to populate that value in the test data
example you will need to do the same for each IF statement.
AND THEN
where you have a IF ... ELSE statement, you will need a different test method for each branch of the statements
I like giving descriptive names to my test methods, so i makes sense at a glance to why the test may have failed. as opposed to ZipTestMethod_1, ZipTestMethod_2,..etc
Regards
Andrew
How else do you know that the test actually worked or that your code actually works?
We have a vf page where if I enter any account number or zipcode it display the sales reps related to that value. But currently we are getting wrong inputs so we need to update the code.
@istest
public class TMReplookupversionconTest {
static TestMethod void testSampleSearch(){
// new account creation
Account acc = new Account();
acc.Name='test';
acc.Account_No__c='5000000000';
acc.billingpostalcode='54561';
//acc.Owner.name=u.Name;
insert acc;
// Account_Cross_Reference__c creation
Account_Cross_Reference__c acr = new Account_Cross_Reference__c();
acr.Name = 'TestAcR';
acr.SFDC_Account_ID__c = acc.id;
acr.Source_ERP_System__c = 'ECCHQ';
acr.ERP_Account_Number__c = '12345678';
acr.Enterprise_Account_Number__c ='5000000000';
acr.ERP_System_Name__c = 'MEDI';
insert acr;
// new zip code creation
Zip_Code__c zipobj = new Zip_Code__c ();
zipobj.name='54561';
zipobj.BU__c='Diagnostics';
zipobj.Country__c='us';
zipobj.Territory_Code__c='123';
zipobj.Territory_Name__c='Operative Care Consumables Inside Sales Southwest';
insert zipobj;
TMRRepLookupVersionCon myclass=new TMRRepLookupVersionCon();
myclass.zips = new list<Zip_Code__c>();
myclass.getSearchTypes();
myclass.SearchType = 'zip';
myclass.searchText = '54561';
myclass.search();
myclass.SearchType = 'act';
myclass.searchText = '5000000000';
myclass.search();
myclass.SearchType = 'act';
myclass.searchText = '12345678';
myclass.search();
}
}