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

Test class to cover list in private method
Hi All,
I am working on a Test Class and not able to cover the list in private method.
Controller:-
----------------
public class addWholesaleForcastController {
public string selectedYear{get;set;}
string recordTypeId = '';
string retURL = '';
set<String> setRegion = new set<String>();
public String dbAction{get;set;}
public addWholesaleForcastController(ApexPages.StandardController controller) {
getRegions();
selectedYear = ApexPages.currentPage().getParameters().get('year');
retURL = ApexPages.currentPage().getParameters().get('retURL');
List<RecordType> lstRt = [Select Id from RecordType where sObjectType='SalesForecastData__c'
and DeveloperName='Monthwhl'];
if(lstRt.size()>0){
recordTypeId = lstRt[0].Id;
}
getWholesaleData();
}
public PageReference cancel(){
PageReference P = new PageReference(retURL);
return P;
}
public PageReference save(){
try{
List<SalesForecastData__c> lstData = new List<SalesForecastData__c>();
if(lstWholesale.size()>0){
for(Wholesale data:lstWholesale){
lstdata.add(data.data);
}
}
if(lstdata.size()>0) upsert lstdata;
//////////////
PageReference P = new PageReference(retURL);
return P;
}
catch(Exception ex){
ApexPages.addMessage(new ApexPages.message(ApexPages.severity.ERROR,ex.getMessage()));
return null;
}
}
public List<Wholesale> lstWholesale{get;set;}
void getWholesaleData(){
lstWholesale = new List<Wholesale>();
if(common.NVL(selectedYear) != ''){
List<SalesForecastData__c> lstData = [Select Id, Name, Region__c, Region_Text__c,
Jan__c, Feb__c, Mar__c, Apr__c, May__c, Jun__c, Jul__c, Aug__c, Sep__c,
Oct__c, Nov__c, Dec__c, Year__c
from SalesForecastData__c Where Year__c =:selectedYear and RecordtypeId=:recordTypeId];
if(lstData.size()>0){
dbAction = 'Update';
for(SalesForecastData__c data:lstData){
lstWholesale.add(new Wholesale(data));
}
}
else{
dbAction = 'Add';
if(setRegion.size()>0){
for(String rgn:setRegion){
SalesForecastData__c data = new SalesForecastData__c();
data.Year__c = selectedYear;
data.Region__c = rgn;
data.RecordtypeId=recordTypeId;
lstWholesale.add(new Wholesale(data));
}
}
}
}
}
void getRegions(){
setRegion.add('01');
setRegion.add('02');
setRegion.add('03');
setRegion.add('04');
setRegion.add('05');
setRegion.add('06');
setRegion.add('07');
setRegion.add('08');
setRegion.add('09');
setRegion.add('10');
setRegion.add('11');
setRegion.add('12');
setRegion.add('13');
setRegion.add('14');
setRegion.add('15');
setRegion.add('16');
setRegion.add('Cent');
setRegion.add('East');
setRegion.add('None');
setRegion.add('S&G');
setRegion.add('West');
}
class Wholesale{
public SalesForecastData__c data{get;set;}
public Wholesale(SalesForecastData__c data){
this.data = data;
}
}
}
Test Class:-
------------------------
@isTest
public class Test_WholesaleForcast {
static testMethod void Test_WholesaleForcast2(){
List<RecordType> lstRT2 = [Select Id from RecordType Where DeveloperName='Monthwhl' and sObjectType='SalesForecastData__c'];
String recordtypeId = 'Monthwhl';
SalesForecastData__c Sales2 = new SalesForecastData__c(Year__c = '2014');
insert sales2;
Test.startTest();
ApexPages.StandardController sc = new ApexPages.standardController(sales2);
addWholesaleForcastController addwhlsale = new addWholesaleForcastController (sc);
addwhlsale.save();
addwhlsale.dbAction = 'abc';
addwhlsale.selectedYear = '2014';
Test.stopTest();
}
}
I am working on a Test Class and not able to cover the list in private method.
Controller:-
----------------
public class addWholesaleForcastController {
public string selectedYear{get;set;}
string recordTypeId = '';
string retURL = '';
set<String> setRegion = new set<String>();
public String dbAction{get;set;}
public addWholesaleForcastController(ApexPages.StandardController controller) {
getRegions();
selectedYear = ApexPages.currentPage().getParameters().get('year');
retURL = ApexPages.currentPage().getParameters().get('retURL');
List<RecordType> lstRt = [Select Id from RecordType where sObjectType='SalesForecastData__c'
and DeveloperName='Monthwhl'];
if(lstRt.size()>0){
recordTypeId = lstRt[0].Id;
}
getWholesaleData();
}
public PageReference cancel(){
PageReference P = new PageReference(retURL);
return P;
}
public PageReference save(){
try{
List<SalesForecastData__c> lstData = new List<SalesForecastData__c>();
if(lstWholesale.size()>0){
for(Wholesale data:lstWholesale){
lstdata.add(data.data);
}
}
if(lstdata.size()>0) upsert lstdata;
//////////////
PageReference P = new PageReference(retURL);
return P;
}
catch(Exception ex){
ApexPages.addMessage(new ApexPages.message(ApexPages.severity.ERROR,ex.getMessage()));
return null;
}
}
public List<Wholesale> lstWholesale{get;set;}
void getWholesaleData(){
lstWholesale = new List<Wholesale>();
if(common.NVL(selectedYear) != ''){
List<SalesForecastData__c> lstData = [Select Id, Name, Region__c, Region_Text__c,
Jan__c, Feb__c, Mar__c, Apr__c, May__c, Jun__c, Jul__c, Aug__c, Sep__c,
Oct__c, Nov__c, Dec__c, Year__c
from SalesForecastData__c Where Year__c =:selectedYear and RecordtypeId=:recordTypeId];
if(lstData.size()>0){
dbAction = 'Update';
for(SalesForecastData__c data:lstData){
lstWholesale.add(new Wholesale(data));
}
}
else{
dbAction = 'Add';
if(setRegion.size()>0){
for(String rgn:setRegion){
SalesForecastData__c data = new SalesForecastData__c();
data.Year__c = selectedYear;
data.Region__c = rgn;
data.RecordtypeId=recordTypeId;
lstWholesale.add(new Wholesale(data));
}
}
}
}
}
void getRegions(){
setRegion.add('01');
setRegion.add('02');
setRegion.add('03');
setRegion.add('04');
setRegion.add('05');
setRegion.add('06');
setRegion.add('07');
setRegion.add('08');
setRegion.add('09');
setRegion.add('10');
setRegion.add('11');
setRegion.add('12');
setRegion.add('13');
setRegion.add('14');
setRegion.add('15');
setRegion.add('16');
setRegion.add('Cent');
setRegion.add('East');
setRegion.add('None');
setRegion.add('S&G');
setRegion.add('West');
}
class Wholesale{
public SalesForecastData__c data{get;set;}
public Wholesale(SalesForecastData__c data){
this.data = data;
}
}
}
Test Class:-
------------------------
@isTest
public class Test_WholesaleForcast {
static testMethod void Test_WholesaleForcast2(){
List<RecordType> lstRT2 = [Select Id from RecordType Where DeveloperName='Monthwhl' and sObjectType='SalesForecastData__c'];
String recordtypeId = 'Monthwhl';
SalesForecastData__c Sales2 = new SalesForecastData__c(Year__c = '2014');
insert sales2;
Test.startTest();
ApexPages.StandardController sc = new ApexPages.standardController(sales2);
addWholesaleForcastController addwhlsale = new addWholesaleForcastController (sc);
addwhlsale.save();
addwhlsale.dbAction = 'abc';
addwhlsale.selectedYear = '2014';
Test.stopTest();
}
}
Apply @TestVisible annotation to method
Please let me know if it works.
Best Regards,
-Vivek
void getWholesaleData(){
lstWholesale = new List<Wholesale>();
if(common.NVL(selectedYear) != ''){
List<SalesForecastData__c> lstData = [Select Id, Name, Region__c, Region_Text__c,
Jan__c, Feb__c, Mar__c, Apr__c, May__c, Jun__c, Jul__c, Aug__c, Sep__c,
Oct__c, Nov__c, Dec__c, Year__c
from SalesForecastData__c Where Year__c =:selectedYear and RecordtypeId=:recordTypeId];
if(lstData.size()>0){
dbAction = 'Update';
for(SalesForecastData__c data:lstData){
lstWholesale.add(new Wholesale(data));
}
}
else{
dbAction = 'Add';
if(setRegion.size()>0){
for(String rgn:setRegion){
SalesForecastData__c data = new SalesForecastData__c();
data.Year__c = selectedYear;
data.Region__c = rgn;
data.RecordtypeId=recordTypeId;
lstWholesale.add(new Wholesale(data));
}
}