You need to sign in to do that
Don't have an account?
Manoj Dega
Delete Account Related Attachments Using Batch Apex through Custom Settings
Hi All,
I'm Strucking on Here. When I Run my Test Class Its Fail.
Batch Class
Test Class
I'm Strucking on Here. When I Run my Test Class Its Fail.
Batch Class
global class DeleteAttachmentScheduleClass implements Schedulable{ public String accstr1; public String accstr2; public list<Account> acclist1 { get; set; } public list<Account> acclist2 { get; set; } public list<Account> acclistall { get; set; } public Set<Id> setAttachmetIds{ get; set; } public String query; global void execute(SchedulableContext sc){ acclist1 = new list<Account>(); acclist2 = new list<Account>(); acclistall = new list<Account>(); //Custom Settins AccountSetting__c ecs =AccountSetting__c.getInstance(); integer read=integer.valueOf(ecs.Read__c); // Read__c = 10 integer unread=integer.valueOf(ecs.Unread__c); //Unread__c = 20 accstr1='select id,name,is_read__c,(select id from Attachments where createddate < last_n_days :'+unread+') from Account where is_read__C = false'; accstr2='select id,name,is_read__c,(select id from Attachments where createddate < last_n_days :'+read+') from Account where is_read__C = true'; acclist1 = database.query(accstr1); acclist2 = database.query(accstr2); acclistall.addall(acclist1); acclistall.addall(acclist2); for (Account objAccount:acclistall) { if (objAccount.attachments != null && objAccount.attachments.size() > 0) { for (Attachment objAttachment:objAccount.attachments) { setAttachmetIds.Add(objAttachment.Id); } } } query = 'select id from attachment where id in :setAttachmetIds'; list<Attachment> attlist = database.query(query); if(attlist != null){ try{ DeleteAttachmentsBatchClass delBatch = new DeleteAttachmentsBatchClass(query); Id BatchProcessId = Database.ExecuteBatch(delBatch); }catch(Exception e){ } } } }
Test Class
@isTest public class TestDeleteAttachmentSchedule { public static String CRON_EXP = '0 0 0 15 3 ? 2022'; Public static testmethod void test() { Test.startTest(); Case c = new Case(); // For Case_Number__c is Required insert c; AccountSetting__c acs = new AccountSetting__c(Unread__c = 10, Read__c = 20); insert acs; Account acc = new Account (Case_Number__c = c.id,is_Read__c = TRUE); insert acc; List<Attachment> attachments=[select id, name from Attachment where parent.id=:ems.id]; //System.assertEquals(1, attachments.size()); delete attachments; String jobId = System.schedule('ScheduleApexClassTest23',CRON_EXP,new DeleteAttachmentScheduleClass22()); Test.stopTest(); } }
You need to perform a Null Pointer check on the line you are getting error
eg: In if condition !=null
I think you can overcome the problem