You need to sign in to do that
Don't have an account?
Cameron Seitz
Test Classes for Batch Apex
Can't seem to figure out how to get code coverage for the Apex Batch Class I have below.
global class placementTimecardAuditFlag implements Database.Batchable<sObject>, Database.Stateful { List<jstcl__TG_Timesheet__c> query = [SELECT jstcl__Placement__r.Name FROM jstcl__TG_Timesheet__c WHERE jstcl__Placement__r.ts2__Status__c ='Active' AND jstcl__Placement__r.jstcl__Timesheet_Period__c != 'Weekly Split' AND jstcl__Week_Ending__c = LAST_N_DAYS:15 AND jstcl__Status__c = 'Pending']; Set<String> encounteredNames = new Set<String>(); Set<String> duplicateNames = new Set<String>(); global Database.QueryLocator start(Database.BatchableContext bc) { for(jstcl__TG_Timesheet__c item : query){ if(encounteredNames.contains(item.jstcl__Placement__r.Name)){ duplicateNames.add(item.jstcl__Placement__r.Name); } else{encounteredNames.add(item.jstcl__Placement__r.Name);} } return Database.getQueryLocator('SELECT Id,Checkbox1__c FROM jstcl__TG_Timesheet__c WHERE jstcl__Placement__r.Name IN :duplicateNames');} global void execute(Database.BatchableContext BC, List<jstcl__TG_Timesheet__c> a){ for(jstcl__TG_Timesheet__c b : a) { if(b.Checkbox1__c = True){ b.Checkbox1__c = False; } else{b.Checkbox1__c = True;}} update a; } global void finish(Database.BatchableContext BC){} }This is what I have so far for a test class. Basically what I need it to do is to check that when the test records are inserted that the TCEDAudit__c field on the ts2__Placement__c record is getting set to 1.
@istest public class placementTimecardAuditFlagTest{ @testSetup static void setupTimesheet() { // Create common test timesheets with a week ending date that exceeds the previous 15 days List<jstcl__TG_Timesheet__c> testTimesheets = new List<jstcl__TG_Timesheet__c>(); for(Integer i=0 ;i <200;i++) { testTimesheets.add(new jstcl__TG_Timesheet__c(jstcl__Week_Ending__c = date.newInstance(2000, 12, 1))); } insert testTimesheets; // Create common test placements containing Active status List<ts2__Placement__c> testPlacements = new List<ts2__Placement__c>(); for(Integer i=0 ;i <200;i++) { testPlacements.add(new ts2__Placement__c(ts2__Status__c = 'Active')); } insert testPlacements; //Begin testing Test.startTest(); placementTimecardAuditFlag obj = new placementTimecardAuditFlag(); DataBase.executeBatch(obj); Test.stopTest(); System.AssertEquals(testPlacements.TCEDaudit__c,1); }}
Raj Vakati
Data setup is not correct .. use this code