Assignment 3
Develop trigger which update "Resume Renewal Date" field value to "Resume Upload Date" + 6 months.
Develop a batch class:- Which will fetch all Contact records having "Resume Renewal Date" is equals to today and send the email
to those Contact's informing that they should update their resume, You've to use Email template with the following information.
Also, provide facility to execute batch class, Contact record's "Resume Renewal Date" field has a specific date, not just today.
Develop Test Class for Trigger and Batch Class.
/*
* @Name : Assignment3_Handler.apxc
* @Purpose : Apex Assignment 3.
* @Description : Batch Class to send email to Contact to update Resume on Resume_Renewal_Date
* @Since : 13 09 2022
* @date : 13 09 2022
* @PreWork : Created 'Resume Update' Email Template, and Two Custom fields 'Resume_Renewal_Date__c','Resume_Upload_Date__c
* @OtherRelateFiles : Assignment3_Handler.apxc, Ass3_BatchClass.apxc,Ass_3Test.apxc,Ass_3_Batch_Test.apxc, Assignment3Trigger.apxt
*/
public class Assignment3_Handler {
public static void assignment3Method(List<Contact> conlist){
for(Contact con : conlist){
if(con.Resume_Upload_Date__c != Null){
con.Resume_Renewal_Date__c = con.Resume_Upload_Date__c.addMonths(6); //Initializing Value to Resume_Renewal_Date__c i.e. Resume_
}
}
}
}
/*
* @Name : Assignment3Trigger.apxt
* @Purpose : Apex Assignment 3.
* @Description : Batch Class to send email to Contact to update Resume on Resume_Renewal_Date
* @Since : 13 09 2022
* @date : 13 09 2022
* @PreWork : Created 'Resume Update' Email Template, and Two Custom fields 'Resume_Renewal_Date__c','Resume_Upload_Date__c
* @OtherRelateFiles : Assignment3_Handler.apxc, Ass3_BatchClass.apxc,Ass_3Test.apxc,Ass_3_Batch_Test.apxc, Assignment3Trigger.apxt
*/
trigger Assignment3Trigger on Contact (before insert, before update) {
if(trigger.Isbefore || trigger.IsAfter){
if(trigger.Isinsert || trigger.Isupdate){
Assignment3_Handler.assignment3Method(trigger.new);
}
}
}
/*
* @Name : Ass_3Test.apxc
* @Purpose : Apex Assignment 3.
* @Description : Batch Class to send email to Contact to update Resume on Resume_Renewal_Date
* @Since : 13 09 2022
* @date : 13 09 2022
* @PreWork : Created 'Resume Update' Email Template, and Two Custom fields 'Resume_Renewal_Date__c','Resume_Upload_Date__c
* @OtherRelateFiles : Assignment3_Handler.apxc, Ass3_BatchClass.apxc,Ass_3Test.apxc,Ass_3_Batch_Test.apxc, Assignment3Trigger.apxt
*/
@isTest
public class Ass_3Test {
@testSetup static void setup() {
// Create common test Contacts
// Test data setup
// Create an account with an contact, and then try to insert it
List<contact> TestContact = new List<contact>();
for(Integer i=0;i<2;i++) {
TestContact.add(new contact(LastName = 'Surname '+i));
}
insert TestContact;
}
Assignment 3 1
@isTest static void Test1_Negative() {
Contact ListOfRecord= [SELECT Id, LastName, Resume_Renewal_Date__c, Resume_Upload_Date__c, Email FROM Contact WHERE LastName= 'Surna
ListOfRecord.Resume_Upload_Date__c = Null;
}
@isTest static void Test2_Positive() {
Contact ListOfContact= [SELECT Id, LastName, Resume_Renewal_Date__c, Resume_Upload_Date__c, Email FROM Contact WHERE LastName= 'Sur
ListOfContact.Resume_Upload_Date__c = system.today();
// Perform test
Test.startTest();
Database.UpsertResult result = Database.upsert(ListOfContact,false);
Test.stopTest();
// Verify
System.assertEquals('Surname 1',ListOfContact.LastName );
}
}
/*
* @Name : Ass3_BatchClass.apxc
* @Purpose : Apex Assignment 3.
* @Description : Batch Class to send email to Contact to update Resume on Resume_Renewal_Date
* @Since : 13 09 2022
* @date : 13 09 2022
* @PreWork : Created 'Resume Update' Email Template
* @OtherRelateFiles : Assignment3_Handler.apxc, Ass3_BatchClass.apxc,Ass_3Test.apxc,Ass_3_Batch_Test.apxc, Assignment3Trigger.apxt
*/
Global class Ass3_BatchClass implements Database.Batchable<sObject>{
//First Fetch Contacts Record Whose Resume Renewal Date is Today
Global Database.QueryLocator start(Database.BatchableContext dc){
return Database.getQueryLocator('SELECT Id,Name,Resume_Renewal_Date__c,Resume_Upload_Date__c,Email FROM Contact WHERE Resume_Renewa
}
Global void execute(Database.BatchableContext dc, List<Contact> conlist){
// Fetch Email Template which is Named as 'Resume Update'
List<EmailTemplate> emailTemplatelist =[select id,Subject,Description,Body from EmailTemplate where Name='Resume Update'];
for(Contact conRecords : conlist){
//Checking All Contacts from List in Loop
Messaging.SingleEmailMessage message = new Messaging.SingleEmailMessage();
message.setTargetObjectId(conRecords.id);
//Set Contact Record Id, Which Was fetched in above Query
for(EmailTemplate emailRe : emailTemplatelist){
//Initialised Email Template which will be used to send
message.setTemplateId(emailRe.id);
message.toAddresses = new String[] {conRecords.Email}; //Contact Given Email Applied to Email Address
}
Messaging.SingleEmailMessage[] messages = new List<Messaging.SingleEmailMessage> {message};
Messaging.SendEmailResult[] results = Messaging.sendEmail(messages); //Email Sent
//Checking Result
if (results[0].success){
System.debug('The email was sent successfully.');
}else{
System.debug('The email failed to send: ' +
results[0].errors[0].message);
}
}
}
Global void finish(Database.BatchableContext BC){
}
}
/*
* @Name : Ass_3_Batch_Test.apxc
* @Purpose : Apex Assignment 3.
* @Description : Batch Class to send email to Contact to update Resume on Resume_Renewal_Date
* @Since : 13 09 2022
* @date : 13 09 2022
* @PreWork : Created 'Resume Update' Email Template
Assignment 3 2
* @OtherRelateFiles : Assignment3_Handler.apxc, Ass3_BatchClass.apxc,Ass_3Test.apxc,Ass_3_Batch_Test.apxc, Assignment3Trigger.apxt
*/
@istest
public class Ass_3_Batch_Test {
@testSetup static void setup() {
// Test setup, To Create common test Contacts
List<contact> ListContact = new List<contact>();
for(Integer i=0;i<200;i++) {
ListContact.add(new contact(LastName = 'Surname '+i, Email='amit.lulla@dreamwares.com', Resume_Renewal_Date__c = system.today()
}
insert ListContact;
}
@istest
public static void MethodTest3(){
//Contact to check test setup Record and initialse it to New Contact Variable
Contact RecordContact= [SELECT Id, LastName, Resume_Renewal_Date__c, Resume_Upload_Date__c, Email FROM Contact WHERE LastName= 'Sur
Test.startTest(); //Start Test
Ass3_BatchClass batchvalue= new Ass3_BatchClass();
Id jobid= Database.executeBatch(batchvalue);
Test.stopTest(); //Stop Test
System.assertEquals('Surname 0',RecordContact.LastName ); //Evaluate Result
}
}
Code Coverage 100% of Both Trigger and Batch Class
Resume Renewal Date Automatically Updated After Insertion of Resume Update Date
Assignment 3 3
Executing Batch to Check Email Response
Email Received for Resume Update
Assignment 3 4