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

how to improve code coverage for Apex test class
Hi,
I have an Apex class, While writing the test class I'm able to get the code coverage only 47%. But I was stuck at this point only
Please, anyone, help on this.
My Apex Class
public class updatemonitoringservice{
public static void UpdateMonitoring(List<Account> newlist){
//Get list of Account records.
system.debug('inside helper');
set<Id> accId = new set<Id>();
for(Account acc : newList){
accId.add(acc.id); //Adding accountId's to Set.
}
List<Account> accList = [select id, Name, Suspend__c,(select id,Status__c,prior_status__c,
prior_monitoring_service__c,Monitoring_Service__c from Installations__r) from Account where Id=:accId]; //Fetch Account related Installations.
map<Id,List<Installation__c>> mapInst = new map<Id,List<Installation__c>>();
for(Account accVar : accList){
mapInst.put(accVar.Id,accVar.Installations__r); // addAll Id's & installations to the Map.
}
system.debug('mapInst::'+mapInst);
List<Installation__c> updateInst = new List<Installation__c>();
List<Installation__c> upInstallation = new List<Installation__c>();
for(Account a : accList){
if(a.Suspend__c)
{
system.debug('a.Suspend__c::'+a.Suspend__c);
updateInst.addAll(mapInst.get(a.Id)); // get Id's and add to updateInst list.
}
if(!a.Suspend__c)
{
system.debug('a.Suspend__c::'+a.Suspend__c);
upInstallation.addALL(mapInst.get(a.Id)); // get Id's and add to upInstallation list.
}
}
List<Installation__c> installationsToUpdate = new List<Installation__c>(); //List for updating the record.
for(Installation__c instVar:updateInst) //if Suspend equals to true update status and monitoring service values &
// capture old values in prior_status__c and prior_monitoring_service__c.
{
system.debug('inside true');
system.debug('prior_monitoring_service__c::'+instVar.prior_monitoring_service__c);
system.debug('monitoring_service__c::'+instVar.Monitoring_Service__c);
system.debug('************************');
system.debug('prior_status__c::'+instVar.prior_status__c);
system.debug('Status__c::'+instVar.Status__c);
if(instVar.Status__c !='5-Removed' && instVar.Status__c !='6-Canceled' && instVar.Status__c !='Swapped-Out'
&& instVar.Status__c !='Abandoned'){
if(instVar.Status__c !='Suspend')
instVar.prior_status__c = instVar.Status__c;
// if(instVar.Monitoring_Service__c != 'Client')
instVar.prior_monitoring_service__c = instVar.Monitoring_Service__c;
instVar.Status__c = 'Suspend';
instVar.Monitoring_Service__c = 'Client';
installationsToUpdate.add(instVar);
}
}
for(Installation__c instVar : upInstallation) //if Suspend equals to false revert old values in status and monitoring fields.
{
system.debug('inside false');
boolean isRemovePriorChanged = true;
if(instVar.Status__c !='5-Removed' && instVar.Status__c !='6-Canceled' && instVar.Status__c !='Swapped-Out'
&& instVar.Status__c !='Abandoned'){
if(instVar.prior_status__c != null && instVar.prior_monitoring_service__c !=null){
instVar.Status__c = instVar.prior_status__c ;
instVar.Monitoring_Service__c = instVar.prior_monitoring_service__c;
if(isRemovePriorChanged && instVar.Status__c != NULL && instVar.Monitoring_Service__c != NULL)
{
instVar.prior_status__c = NULL;
instVar.prior_monitoring_service__c = NULL;
system.debug('Priorstatus value::'+instVar.prior_status__c);
system.debug('Priormoniotoring service value::'+instVar.prior_monitoring_service__c);
}
installationsToUpdate.add(instVar);
}
}
}
update installationsToUpdate;
}
}
My Test Class
@isTest
public class updatemonitoringtestclass {
public static testMethod void testing(){
List<Account> acc = new List<Account>();
Account a1 = new Account();
a1.Name = 'test';
a1.Type = 'Prospect';
a1.Channel__c = 'Direct';
a1.Suspend__c = true;
acc.add(a1);
insert acc;
Contact con = new Contact();
con.LastName = 'Vgs';
insert con;
Case ca = new Case();
ca.Type ='Account Change';
ca.Status ='01-New';
ca.Subject ='test new';
ca.Description = 'new Description';
ca.AccountId= a1.id;
ca.ContactId = con.id;
insert ca;
Opportunity opp = new Opportunity();
opp.Name = 'test1';
opp.Type = 'Existing Business';
opp.CloseDate = system.today();
opp.StageName = '01-Discovery';
opp.Prospect_Level__c = 'A';
opp.LeadSource = 'web';
opp.AccountId = a1.id;
insert opp;
List<Installation__c> instList = new List<Installation__c>();
Installation__c inst = new Installation__c();
inst.Name__c ='instal';
inst.Status__c = 'Suspend';
inst.Monitoring_Service__c = 'Client';
inst.Site__c = a1.id;
inst.prior_status__c = '0-New';
inst.prior_monitoring_service__c = 'Live';
inst.Install_Case__c = ca.id;
inst.Opportunity__c = opp.id;
instList.add(inst);
insert inst;
a1.Suspend__c = true ;
update acc;
List<Installation__c> instal = [select id,Status__c,prior_status__c,
prior_monitoring_service__c,Monitoring_Service__c from Installation__c where Id=:instList];
for(Installation__c ins : instal){
System.assertEquals('Suspend',ins.Status__c);
System.assertEquals('Client',ins.Monitoring_Service__c);
// system.assertEquals(ins.Monitoring_Service__c,ins.prior_monitoring_service__c);
// system.assertEquals(ins.Status__c,ins.prior_status__c);
a1.Suspend__c=false;
update acc;
}
}
}
I have an Apex class, While writing the test class I'm able to get the code coverage only 47%. But I was stuck at this point only
Please, anyone, help on this.
My Apex Class
public class updatemonitoringservice{
public static void UpdateMonitoring(List<Account> newlist){
//Get list of Account records.
system.debug('inside helper');
set<Id> accId = new set<Id>();
for(Account acc : newList){
accId.add(acc.id); //Adding accountId's to Set.
}
List<Account> accList = [select id, Name, Suspend__c,(select id,Status__c,prior_status__c,
prior_monitoring_service__c,Monitoring_Service__c from Installations__r) from Account where Id=:accId]; //Fetch Account related Installations.
map<Id,List<Installation__c>> mapInst = new map<Id,List<Installation__c>>();
for(Account accVar : accList){
mapInst.put(accVar.Id,accVar.Installations__r); // addAll Id's & installations to the Map.
}
system.debug('mapInst::'+mapInst);
List<Installation__c> updateInst = new List<Installation__c>();
List<Installation__c> upInstallation = new List<Installation__c>();
for(Account a : accList){
if(a.Suspend__c)
{
system.debug('a.Suspend__c::'+a.Suspend__c);
updateInst.addAll(mapInst.get(a.Id)); // get Id's and add to updateInst list.
}
if(!a.Suspend__c)
{
system.debug('a.Suspend__c::'+a.Suspend__c);
upInstallation.addALL(mapInst.get(a.Id)); // get Id's and add to upInstallation list.
}
}
List<Installation__c> installationsToUpdate = new List<Installation__c>(); //List for updating the record.
for(Installation__c instVar:updateInst) //if Suspend equals to true update status and monitoring service values &
// capture old values in prior_status__c and prior_monitoring_service__c.
{
system.debug('inside true');
system.debug('prior_monitoring_service__c::'+instVar.prior_monitoring_service__c);
system.debug('monitoring_service__c::'+instVar.Monitoring_Service__c);
system.debug('************************');
system.debug('prior_status__c::'+instVar.prior_status__c);
system.debug('Status__c::'+instVar.Status__c);
if(instVar.Status__c !='5-Removed' && instVar.Status__c !='6-Canceled' && instVar.Status__c !='Swapped-Out'
&& instVar.Status__c !='Abandoned'){
if(instVar.Status__c !='Suspend')
instVar.prior_status__c = instVar.Status__c;
// if(instVar.Monitoring_Service__c != 'Client')
instVar.prior_monitoring_service__c = instVar.Monitoring_Service__c;
instVar.Status__c = 'Suspend';
instVar.Monitoring_Service__c = 'Client';
installationsToUpdate.add(instVar);
}
}
for(Installation__c instVar : upInstallation) //if Suspend equals to false revert old values in status and monitoring fields.
{
system.debug('inside false');
boolean isRemovePriorChanged = true;
if(instVar.Status__c !='5-Removed' && instVar.Status__c !='6-Canceled' && instVar.Status__c !='Swapped-Out'
&& instVar.Status__c !='Abandoned'){
if(instVar.prior_status__c != null && instVar.prior_monitoring_service__c !=null){
instVar.Status__c = instVar.prior_status__c ;
instVar.Monitoring_Service__c = instVar.prior_monitoring_service__c;
if(isRemovePriorChanged && instVar.Status__c != NULL && instVar.Monitoring_Service__c != NULL)
{
instVar.prior_status__c = NULL;
instVar.prior_monitoring_service__c = NULL;
system.debug('Priorstatus value::'+instVar.prior_status__c);
system.debug('Priormoniotoring service value::'+instVar.prior_monitoring_service__c);
}
installationsToUpdate.add(instVar);
}
}
}
update installationsToUpdate;
}
}
My Test Class
@isTest
public class updatemonitoringtestclass {
public static testMethod void testing(){
List<Account> acc = new List<Account>();
Account a1 = new Account();
a1.Name = 'test';
a1.Type = 'Prospect';
a1.Channel__c = 'Direct';
a1.Suspend__c = true;
acc.add(a1);
insert acc;
Contact con = new Contact();
con.LastName = 'Vgs';
insert con;
Case ca = new Case();
ca.Type ='Account Change';
ca.Status ='01-New';
ca.Subject ='test new';
ca.Description = 'new Description';
ca.AccountId= a1.id;
ca.ContactId = con.id;
insert ca;
Opportunity opp = new Opportunity();
opp.Name = 'test1';
opp.Type = 'Existing Business';
opp.CloseDate = system.today();
opp.StageName = '01-Discovery';
opp.Prospect_Level__c = 'A';
opp.LeadSource = 'web';
opp.AccountId = a1.id;
insert opp;
List<Installation__c> instList = new List<Installation__c>();
Installation__c inst = new Installation__c();
inst.Name__c ='instal';
inst.Status__c = 'Suspend';
inst.Monitoring_Service__c = 'Client';
inst.Site__c = a1.id;
inst.prior_status__c = '0-New';
inst.prior_monitoring_service__c = 'Live';
inst.Install_Case__c = ca.id;
inst.Opportunity__c = opp.id;
instList.add(inst);
insert inst;
a1.Suspend__c = true ;
update acc;
List<Installation__c> instal = [select id,Status__c,prior_status__c,
prior_monitoring_service__c,Monitoring_Service__c from Installation__c where Id=:instList];
for(Installation__c ins : instal){
System.assertEquals('Suspend',ins.Status__c);
System.assertEquals('Client',ins.Monitoring_Service__c);
// system.assertEquals(ins.Monitoring_Service__c,ins.prior_monitoring_service__c);
// system.assertEquals(ins.Status__c,ins.prior_status__c);
a1.Suspend__c=false;
update acc;
}
}
}
When I try to use seeAllData = true, I'm getting the following error... can u help me out
Raj Vakati, I also tried your code, but it was throwing error line no. 066 updatemonitoringservice.UpdateMonitoring(acc); and at line no 133 updatemonitoringservice.UpdateMonitoring(acc);