You need to sign in to do that
Don't have an account?
Sri 7
any one of you please help me to write test class for below code handler
public static void iqId(List<Account> iqList){
for(Account eachAccount: iqList){
if(eachAccount.IQ_ID__c!=null){
system.debug('IQ_ID__c');
if(!eachAccount.Sales_Ops__c){
eachAccount.C_Name__c=eachAccount.Ultimate_Parent__c;
eachAccount.H_ID__c=eachAccount.Ultimate_Parent_Id__c;
} else {
if (eachAccount.ParentId != null){
Map<string,string> ultimateDetails = getultimate(eachAccount.ParentId);
List<string> ultimateId = new List<string>();
ultimateId.addAll(ultimateDetails.keyset());
eachAccount.C_Name__c=ultimateDetails.values()[0];
eachAccount.H_ID__c=ultimateId[0];
}
}
}
}
}
public static Map<string, String> getultimate(string parentAccount){
boolean isSFDCUltimate = true;
Map<string, string> ultimateParent = new Map<string, string>();
while(isSFDCUltimate){
Account temp = [select Id, Name, ParentId, IQ_ID__c from Account Where Id=:parentAccount];
if (temp.ParentId==null){
ultimateParent.put(temp.IQ_ID__c, temp.Name);
break;
}else {
parentAccount=temp.ParentId;
}
}
return ultimateParent;
}
for(Account eachAccount: iqList){
if(eachAccount.IQ_ID__c!=null){
system.debug('IQ_ID__c');
if(!eachAccount.Sales_Ops__c){
eachAccount.C_Name__c=eachAccount.Ultimate_Parent__c;
eachAccount.H_ID__c=eachAccount.Ultimate_Parent_Id__c;
} else {
if (eachAccount.ParentId != null){
Map<string,string> ultimateDetails = getultimate(eachAccount.ParentId);
List<string> ultimateId = new List<string>();
ultimateId.addAll(ultimateDetails.keyset());
eachAccount.C_Name__c=ultimateDetails.values()[0];
eachAccount.H_ID__c=ultimateId[0];
}
}
}
}
}
public static Map<string, String> getultimate(string parentAccount){
boolean isSFDCUltimate = true;
Map<string, string> ultimateParent = new Map<string, string>();
while(isSFDCUltimate){
Account temp = [select Id, Name, ParentId, IQ_ID__c from Account Where Id=:parentAccount];
if (temp.ParentId==null){
ultimateParent.put(temp.IQ_ID__c, temp.Name);
break;
}else {
parentAccount=temp.ParentId;
}
}
return ultimateParent;
}
Is it trigger handler ? or you are invoking this method from Visualforce page?
Thanks,
Prem
There is an issue with your code you fix it as well.
It will throw an exception when going to process more than 100 accounts and that exception will be:
Excep:> System.LimitException: Too many SOQL queries: 101
You are calling this inside your iqId() method
Map<string,string> ultimateDetails = getultimate(eachAccount.ParentId);
That is running under for loop of account and this method getultimate() is having SOQL.
thanks