You need to sign in to do that
Don't have an account?

Help on territory related methods on test class >Less coverage
Hi All,
I am not able to cover the Territory related methods which are in my controller .Can anyone please guide me to cover the below methods related to territory in Test class.
public void getTerritories(){
List<UserTerritory> userTerritories = [select TerritoryId From UserTerritory where isActive=true and userId =:UserInfo.getUserId()];
List<Territory> territories = new List<Territory>();
if(!userTerritories.isEmpty()){
for(UserTerritory userTerritory : userTerritories){
territories.addAll(getTerritoryHierarchy(userTerritory.TerritoryId));
}
}
territoryOptions = new List<SelectOption>();
for(Territory territory : territories){
if(territoryOptions.size()<1000){
territoryOptions.add(new SelectOption(territory.Id, territory.Name));
}
}
}
public List<Territory> getTerritoryHierarchy(Id highTerrId){
List<Territory> territories = new List<Territory>();
Map<Id, Territory> territoriesMap = new Map<Id, Territory>([select Id, ParentTerritoryID, Name from Territory]);
Territory Terr = territoriesMap.get(highTerrId);
territories.add(Terr);
List<Territory> childTerrs = new List<Territory>();
for(Territory childTerr : territoriesMap.values()){
if(childTerr.ParentTerritoryId == Terr.Id){
childTerrs.add(childTerr);
}
}
territories.addAll(childTerrs);
list<territory> territorylst = new list<territory>();
territorylst = getTerritoryHierarchy1(childTerrs);
territories.addAll(territorylst);
do{
territorylst = getTerritoryHierarchy1(territorylst);
territories.addAll(territorylst);
}while(!territorylst.isEmpty());
public List<Id> getAccFrmTerritories(List<Id> territoryIds){
List<Group> territoryGroups = [select Id from Group where RelatedId in :territoryIds AND Type='Territory'];
List<Id> accountIds = new List<Id>();
if(territoryGroups != null){
List<Id> territoryGroupIds = new List<Id>();
for(Group territoryGroup : territorygroups){
territoryGroupIds.add(territoryGroup.Id);
}
List<AccountShare> accountShares = [select AccountId from AccountShare where UserOrGroupId in :territoryGroupIds];
for(AccountShare accountShare : accountShares){
accountIds.add(accountShare.AccountId);
}
}
return accountIds;
}
I am not able to cover the Territory related methods which are in my controller .Can anyone please guide me to cover the below methods related to territory in Test class.
public void getTerritories(){
List<UserTerritory> userTerritories = [select TerritoryId From UserTerritory where isActive=true and userId =:UserInfo.getUserId()];
List<Territory> territories = new List<Territory>();
if(!userTerritories.isEmpty()){
for(UserTerritory userTerritory : userTerritories){
territories.addAll(getTerritoryHierarchy(userTerritory.TerritoryId));
}
}
territoryOptions = new List<SelectOption>();
for(Territory territory : territories){
if(territoryOptions.size()<1000){
territoryOptions.add(new SelectOption(territory.Id, territory.Name));
}
}
}
public List<Territory> getTerritoryHierarchy(Id highTerrId){
List<Territory> territories = new List<Territory>();
Map<Id, Territory> territoriesMap = new Map<Id, Territory>([select Id, ParentTerritoryID, Name from Territory]);
Territory Terr = territoriesMap.get(highTerrId);
territories.add(Terr);
List<Territory> childTerrs = new List<Territory>();
for(Territory childTerr : territoriesMap.values()){
if(childTerr.ParentTerritoryId == Terr.Id){
childTerrs.add(childTerr);
}
}
territories.addAll(childTerrs);
list<territory> territorylst = new list<territory>();
territorylst = getTerritoryHierarchy1(childTerrs);
territories.addAll(territorylst);
do{
territorylst = getTerritoryHierarchy1(territorylst);
territories.addAll(territorylst);
}while(!territorylst.isEmpty());
public List<Id> getAccFrmTerritories(List<Id> territoryIds){
List<Group> territoryGroups = [select Id from Group where RelatedId in :territoryIds AND Type='Territory'];
List<Id> accountIds = new List<Id>();
if(territoryGroups != null){
List<Id> territoryGroupIds = new List<Id>();
for(Group territoryGroup : territorygroups){
territoryGroupIds.add(territoryGroup.Id);
}
List<AccountShare> accountShares = [select AccountId from AccountShare where UserOrGroupId in :territoryGroupIds];
for(AccountShare accountShare : accountShares){
accountIds.add(accountShare.AccountId);
}
}
return accountIds;
}
To achive the test coverage, you have to associate your user (or create new in test class) with territory using UserTerritory2Association object then only you will get the data in your query, below is the sample code where we have associated a user with newly created territory, you can refer the code to update your test class:
Mark solved if it does help you.