You need to sign in to do that
Don't have an account?
Jai
when i am running my test class i am getting following error please help me on that
System.NullPointerException: Attempt to de-reference a null object
Class.OpportunityUpdateFromTicketHandler.emailNotificationFromIteroBackOffice: line 30, column 1
Class.OpportunityUpdateFromTicketHandlerTest.emailNotificationFromIteroBackOfficeTest: line 76, column 1
Apex class :
-----------------
ublic class OpportunityUpdateFromTicketHandler {
Public static void sendEmail(List<String> toAddress,EmailTemplate et)
{
List<Messaging.SingleEmailMessage> allmsg = new List<Messaging.SingleEmailMessage>();
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
mail.setTemplateId(et.Id);
mail.setToAddresses(toAddress);
mail.setSubject(et.subject);
mail.setHTMLBody(et.Body);
allmsg.add(mail);
Messaging.sendEmail(allmsg);
}
Public static EmailTemplate getQuery(String tempname)
{
EmailTemplate et = [select id,Subject,Body from EmailTemplate where DeveloperName =: tempname];
return et;
}
// created by Jayaramu for Technical Det story
Public static void emailNotificationFromIteroBackOffice(List<case> ticketList,Map<Id,Case> oldMapCase)
{
EmailTemplate et = getQuery('iTero_back_office_Template');
system.debug('@@@@@@@@@'+et);
Map<ID, RecordType> recordTypeMap = New Map<ID, RecordType>([Select ID, Name From RecordType Where sObjectType = 'Case']);
List<string> toAddress = new List<string>();
for(Case ticket :ticketList)
{
if(recordTypeMap!=null && ticket !=null && recordTypeMap.get(ticket.recordTypeID).name.containsIgnoreCase('iTero Contracts') && ticket.Ticket_Type__c =='New scanner sale' && ticket.Final_Status__c != oldMapCase.get(ticket.Id).Final_Status__c && ticket.Final_Status__c =='Processed/Assigned to Logistics' )
{
if(ticket.Region__c =='NA' || ticket.Region__c =='LATAM')
{
toAddress.add('test@gmail.com');
system.debug('#######' + ticket.managerid__c);
if(toAddress !=null && et!=null)
{
sendEmail(toAddress, et);
}
}
}
}
}
Test Class
------------------
@isTest
public class OpportunityUpdateFromTicketHandlerTest {
public static Id eUiteroRecordTypeId = Schema.SObjectType.Case.getRecordTypeInfosByName().get('iTero Contracts').getRecordTypeId();
public static Id eUiteroRecordTypeId1 = Schema.SObjectType.Case.getRecordTypeInfosByName().get('Incentive Compensation Request').getRecordTypeId();
//public static Id eUiteroRecordTypeId2 = Schema.SObjectType.Case.getRecordTypeInfosByName().get('iTero Training').getRecordTypeId();
@isTest static void emailNotificationFromIteroBackOfficeTest(){
Profile p = [SELECT Id FROM Profile WHERE Name='System Administrator'];
Userrole objr = [SELECT Id FROM UserRole WHERE Name = 'Global Administrator' LIMIT 1];
User thisUser = new User(Alias = 'standt', Email='contractdesk@testorg.com',
EmailEncodingKey='UTF-8', LastName='contractdesk', LanguageLocaleKey='en_US',
LocaleSidKey='en_US', ProfileId = p.Id,UserRoleId = objr.Id,
TimeZoneSidKey='America/Los_Angeles', UserName='contractdesk@testorg.com');
TestDataBuilder testBuilder = new TestDataBuilder();
//insert manager
User usrManager = new User();
usrManager = testBuilder.dummyUser(0);
usrManager.UserRoleId = objr.Id;
insert usrManager;
//Insert User
User usr = new User();
usr = testBuilder.dummyUser(1);
usr.ManagerId = usrManager.Id;
usr.UserRoleId = objr.Id;
insert usr;
System.runAs(thisUser){
List<case> caseList = new List<case>();
//insert Case
Case cse = new Case();
cse.RecordTypeId = eUiteroRecordTypeId;
cse.Ticket_Type__c = 'New scanner sale';
cse.Origin = 'Web';
cse.Final_Status__c ='Processed/Assigned to Logistics';
cse.Region__c = 'NA';
//cse.Status='Approved';
cse.Type_of_Credit__c='Internal';
cse.Reason_for_Credit__c='Staff Discount Coupon';
cse.Subject='Testing';
cse.Invoice_Number__c='1234567891';
cse.Amount_of_credit__c=10;
cse.Order_type__c='webstore';
cse.Sales_Order_Number__c='123456';
caseList.add(cse);
Case cse1 = new Case();
cse1.RecordTypeId = eUiteroRecordTypeId;
cse1.Ticket_Type__c = 'New scanner sale';
cse1.Origin = 'Web';
cse1.Final_Status__c ='Processed/Assigned to Logistics';
cse1.Region__c = 'NA';
//cse1.Status='Approved';
cse1.Type_of_Credit__c='Internal';
cse1.Reason_for_Credit__c='Staff Discount Coupon';
cse1.Subject='Testing';
cse1.Invoice_Number__c='1234567891';
cse1.Amount_of_credit__c=10;
cse1.Order_type__c='webstore';
cse1.Sales_Order_Number__c='123456';
caseList.add(cse1);
EmailTemplate et = OpportunityUpdateFromTicketHandler.getQuery('iTero_back_office_Template');
emailmessage em = new emailmessage();
em.fromaddress = 'Test@test.com';
em.toaddress = 'test1@test.com';
em.subject = 'Test Email';
em.textbody = 'testing';
em.parentid = caseList[0].id;
test.starttest();
insert em;
Map<Id,Case> oldMapCase = new Map<Id,Case>();
insert caseList;
oldMapCase.put(cse.Id, cse);
System.assertEquals(0, Limits.getEmailInvocations(), 'No emails should be sent');
OpportunityUpdateFromTicketHandler.emailNotificationFromIteroBackOffice(caseList,oldMapCase);
System.assertEquals(1, Limits.getEmailInvocations(), 'Emails should be sent');
Test.stopTest();
}
}
}
Thanks!!
Class.OpportunityUpdateFromTicketHandler.emailNotificationFromIteroBackOffice: line 30, column 1
Class.OpportunityUpdateFromTicketHandlerTest.emailNotificationFromIteroBackOfficeTest: line 76, column 1
Apex class :
-----------------
ublic class OpportunityUpdateFromTicketHandler {
Public static void sendEmail(List<String> toAddress,EmailTemplate et)
{
List<Messaging.SingleEmailMessage> allmsg = new List<Messaging.SingleEmailMessage>();
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
mail.setTemplateId(et.Id);
mail.setToAddresses(toAddress);
mail.setSubject(et.subject);
mail.setHTMLBody(et.Body);
allmsg.add(mail);
Messaging.sendEmail(allmsg);
}
Public static EmailTemplate getQuery(String tempname)
{
EmailTemplate et = [select id,Subject,Body from EmailTemplate where DeveloperName =: tempname];
return et;
}
// created by Jayaramu for Technical Det story
Public static void emailNotificationFromIteroBackOffice(List<case> ticketList,Map<Id,Case> oldMapCase)
{
EmailTemplate et = getQuery('iTero_back_office_Template');
system.debug('@@@@@@@@@'+et);
Map<ID, RecordType> recordTypeMap = New Map<ID, RecordType>([Select ID, Name From RecordType Where sObjectType = 'Case']);
List<string> toAddress = new List<string>();
for(Case ticket :ticketList)
{
if(recordTypeMap!=null && ticket !=null && recordTypeMap.get(ticket.recordTypeID).name.containsIgnoreCase('iTero Contracts') && ticket.Ticket_Type__c =='New scanner sale' && ticket.Final_Status__c != oldMapCase.get(ticket.Id).Final_Status__c && ticket.Final_Status__c =='Processed/Assigned to Logistics' )
{
if(ticket.Region__c =='NA' || ticket.Region__c =='LATAM')
{
toAddress.add('test@gmail.com');
system.debug('#######' + ticket.managerid__c);
if(toAddress !=null && et!=null)
{
sendEmail(toAddress, et);
}
}
}
}
}
Test Class
------------------
@isTest
public class OpportunityUpdateFromTicketHandlerTest {
public static Id eUiteroRecordTypeId = Schema.SObjectType.Case.getRecordTypeInfosByName().get('iTero Contracts').getRecordTypeId();
public static Id eUiteroRecordTypeId1 = Schema.SObjectType.Case.getRecordTypeInfosByName().get('Incentive Compensation Request').getRecordTypeId();
//public static Id eUiteroRecordTypeId2 = Schema.SObjectType.Case.getRecordTypeInfosByName().get('iTero Training').getRecordTypeId();
@isTest static void emailNotificationFromIteroBackOfficeTest(){
Profile p = [SELECT Id FROM Profile WHERE Name='System Administrator'];
Userrole objr = [SELECT Id FROM UserRole WHERE Name = 'Global Administrator' LIMIT 1];
User thisUser = new User(Alias = 'standt', Email='contractdesk@testorg.com',
EmailEncodingKey='UTF-8', LastName='contractdesk', LanguageLocaleKey='en_US',
LocaleSidKey='en_US', ProfileId = p.Id,UserRoleId = objr.Id,
TimeZoneSidKey='America/Los_Angeles', UserName='contractdesk@testorg.com');
TestDataBuilder testBuilder = new TestDataBuilder();
//insert manager
User usrManager = new User();
usrManager = testBuilder.dummyUser(0);
usrManager.UserRoleId = objr.Id;
insert usrManager;
//Insert User
User usr = new User();
usr = testBuilder.dummyUser(1);
usr.ManagerId = usrManager.Id;
usr.UserRoleId = objr.Id;
insert usr;
System.runAs(thisUser){
List<case> caseList = new List<case>();
//insert Case
Case cse = new Case();
cse.RecordTypeId = eUiteroRecordTypeId;
cse.Ticket_Type__c = 'New scanner sale';
cse.Origin = 'Web';
cse.Final_Status__c ='Processed/Assigned to Logistics';
cse.Region__c = 'NA';
//cse.Status='Approved';
cse.Type_of_Credit__c='Internal';
cse.Reason_for_Credit__c='Staff Discount Coupon';
cse.Subject='Testing';
cse.Invoice_Number__c='1234567891';
cse.Amount_of_credit__c=10;
cse.Order_type__c='webstore';
cse.Sales_Order_Number__c='123456';
caseList.add(cse);
Case cse1 = new Case();
cse1.RecordTypeId = eUiteroRecordTypeId;
cse1.Ticket_Type__c = 'New scanner sale';
cse1.Origin = 'Web';
cse1.Final_Status__c ='Processed/Assigned to Logistics';
cse1.Region__c = 'NA';
//cse1.Status='Approved';
cse1.Type_of_Credit__c='Internal';
cse1.Reason_for_Credit__c='Staff Discount Coupon';
cse1.Subject='Testing';
cse1.Invoice_Number__c='1234567891';
cse1.Amount_of_credit__c=10;
cse1.Order_type__c='webstore';
cse1.Sales_Order_Number__c='123456';
caseList.add(cse1);
EmailTemplate et = OpportunityUpdateFromTicketHandler.getQuery('iTero_back_office_Template');
emailmessage em = new emailmessage();
em.fromaddress = 'Test@test.com';
em.toaddress = 'test1@test.com';
em.subject = 'Test Email';
em.textbody = 'testing';
em.parentid = caseList[0].id;
test.starttest();
insert em;
Map<Id,Case> oldMapCase = new Map<Id,Case>();
insert caseList;
oldMapCase.put(cse.Id, cse);
System.assertEquals(0, Limits.getEmailInvocations(), 'No emails should be sent');
OpportunityUpdateFromTicketHandler.emailNotificationFromIteroBackOffice(caseList,oldMapCase);
System.assertEquals(1, Limits.getEmailInvocations(), 'Emails should be sent');
Test.stopTest();
}
}
}
Thanks!!
Hello,
You need to create email Template with name "iTero_back_office_Template" in your test class.
You can create it something like that: