0% found this document useful (0 votes)
84 views4 pages

Apex Assignment 3

1. A trigger is developed to update the "Resume Renewal Date" field to be 6 months after the "Resume Upload Date" field whenever a contact record is inserted or updated. 2. A batch class is created to query contact records where the "Resume Renewal Date" field equals today's date and sends an email to those contacts using an email template informing them to update their resume. 3. Test classes are written to test the trigger and batch class at both positive and negative scenarios and achieve 100% code coverage.

Uploaded by

Amit Lulla
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
84 views4 pages

Apex Assignment 3

1. A trigger is developed to update the "Resume Renewal Date" field to be 6 months after the "Resume Upload Date" field whenever a contact record is inserted or updated. 2. A batch class is created to query contact records where the "Resume Renewal Date" field equals today's date and sends an email to those contacts using an email template informing them to update their resume. 3. Test classes are written to test the trigger and batch class at both positive and negative scenarios and achieve 100% code coverage.

Uploaded by

Amit Lulla
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

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='[email protected]', 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

You might also like