About this question
I'm unable to cover the code coverage for catch block.Kindly help me to cover that code lines as well.
public without sharing class ZTS_EU_Contact_populateCallDates
{
MapmapConIdDate = new Map Map(); > mapCallAttendees = new Map Map>(); mapAttcon = new Map List(); listCon = new List LIst(); listAttendee = new List List(); listAllAttendee = new List ();
public void getLastCallDate(ListtriggerNew){
for(CAll__C oCall: [SELECT id FROM CAll__C WHERE ID IN :TriggerNew])
{
mapCallAttendees.put(oCall.id,null);
}
for(Attendee__C oAtt : [SELECT ZTS_EU_call__C, id ,ZTS_EU_Contact__C FROM Attendee__C WHERE ZTS_EU_call__c in :TriggerNew])
{
listAttendee.add(oAtt);
System.debug('OATT:;;;;'+oAtt);
ListnewList = mapCallAttendees.get(oAtt.ZTS_EU_call__c); if(newList == null) newList = new List(); newList.add(oAtt);
mapCallAttendees.put(oAtt.ZTS_EU_call__C, newList);
mapAttCon.put(oAtt.id, oAtt.ZTS_EU_Contact__C );
}
System.debug('listAttendee:;;;;'+listAttendee);
if(listAttendee.size() >0){
system.debug('mapCallAttendees ::::'+ mapCallAttendees.size());
listAttendee = [SELECT ZTS_EU_Contact__c FROM Attendee__C WHERE ZTS_EU_Call__c IN :mapCallAttendees.keyset()];
LIstlistConID = new List for(Attendee__c oAtt: listAttendee)();
{
listConID.add(OAtt.ZTS_EU_Contact__c);
}
listAllAttendee = [SELECT id,ZTS_EU_Contact__c from Attendee__C where ZTS_EU_Contact__c IN : listConID];
ListlistAttID = new List for(Attendee__C oAtt1: listAllAttendee)();
{
listAttID.add(oAtt1.id);
mapAttCon.put(oAtt1.id, oAtt1.ZTS_EU_Contact__C );
}
system.debug('mapAttCon ::::'+ mapAttCon.size());
//Updated Query to filter only Submitted & Planned Calls - NoorbashaSheik Chanbasha - 11/18/2021 - [SC-008964]
Listresults = [SELECT ZTS_EU_Contact__c con,Max(ZTS_EU_call__r.ZTS_EU_Start_Date_Time__c) date from Attendee__c WHERE ID IN: listAttID AND (ZTS_EU_call__r.ZTS_EU_Status__c= 'Submitted' OR ZTS_EU_call__r.ZTS_EU_Status__c='Completed') Group BY ZTS_EU_Contact__c]; for(AggregateResult ar: results)
{
mapConIdDate.put(String.valueOf(ar.get('con')), Date.valueOF(ar.get('date')));
}
for(Call__c oCall: triggerNew)
{
for(Attendee__c oAtt : mapCallAttendees.get(oCall.id))
{
Contact oCon = new Contact();
oCon.id = mapAttcon.get(oAtt.id);
system.debug('Before assigning call :::'+ oCall.ZTS_EU_Start_Date_Time__c);
system.debug('Before assigning :::'+ mapConIdDate.get(oCon.id));
if(oCall.ZTS_EU_Start_Date_Time__c > mapConIdDate.get(oCon.id))
{
system.debug('Before assigning :::'+ mapConIdDate.get(oCon.id));
system.debug('call start date :::'+ oCall.ZTS_EU_Start_Date_Time__c);
mapConIdDate.put(oCon.ID, Date.valueOf(oCall.ZTS_EU_Start_Date_Time__c));
system.debug('After assigning :::'+ mapConIdDate.get(oCon.id));
}
}
}
for(ID conId : mapConIdDate.keyset())
{
system.debug('conId :::'+ conId);
Contact oCon = new Contact(id = conId );
system.debug('final date :::'+ mapConIDDate.get(conId ));
oCon.ZTS_EU_Last_call_Date__c = mapConIDDate.get(conId );
system.debug('Print Last date :::'+ oCon.ZTS_EU_Last_call_Date__c);
listCon.add(oCon);
}
try {
update(listCon);
} catch(DmlException dex) {
String errorMessages = '';
for (Integer i = 0; i < dex> System.debug('ZTS_EU_Contact_populateCallDates.getLastCallDate ');
System.debug('DML Message: ' + dex.getDmlMessage(i));
errorMessages += dex.getDmlMessage(i) + 'n';
}
errorMessages.removeEnd('n');
ZTS_EU_Logger.notify = true;
ZTS_EU_Logger.error(errorMessages,null, 'ZTS_EU_Contact_populateCallDates.getLastCallDate Contact DML error');
}
}
}
}
Test Class :
@isTest
public class ZTS_EU_Contact_populateCallDatesTest
{
static testMethod void validate_ZTS_EU_Contact_populateCallDates() {
ZTS_DataUtilityTest.createPrimaryContactInactiveProfileCustomSetting();
User usr = new User();
usr = ZTS_EU_DataUtilityTest.createUserWithProfile('System Administrator', false);
usr.FirstName = 'davidsUser';
usr.zts_eu_market__c = 'United Kingdom';
insert usr;
System.runAs(usr)
{
MapmapConIdDate = new Map Map(); > mapCallAttendees = new Map Map>(); mapAttcon = new Map List(); listCon = new List LIst(); listAttendee = new List List(); listAllAttendee = new List ();
ZTS_EU_Contact_populateCallDates popdates= new ZTS_EU_Contact_populateCallDates();
ListcontactList=ZTS_EU_DataUtilityTest1.createContactRecord(1); contactList[0].ZTS_EU_Market__c = 'United Kingdom';
insert contactList;
test.startTest();
ListcallList = ZTS_EU_DataUtilityTest1.createCallRecord(1); insert callList;
ListattenList=new List //List(); attenList=ZTS_EU_DataUtilityTest1.createAttendee(1); //insert attenList;
Attendee__c attendee = new Attendee__c();
attendee.ZTS_EU_Contact__c = contactList[0].Id;
attendee.ZTS_EU_call__c = callList[0].Id;
attenList.add(attendee);
insert attenList;
//mapCallAttendees.put(callList[0].id,attenList);
popdates.getLastCAllDate(callList);
test.stopTest();
}
}
}