You need to sign in to do that
Don't have an account?
LoneStar69
Test Coverage for FOR loops
Hi, have gone through https://salesforce.stackexchange.com/questions/244794/how-do-i-increase-my-code-coverage-or-why-cant-i-cover-these-lines
but still couldn't understand how to resolve my coverage issue.
I have a trigger with the below apex class that works as expected. Right now it is covered 50%, all the 3 FOR loops below the system.debug statement are not covered. The debug logs show records in taskList. Can someone help me to achieve 100% test coverage for the below class?
Apex Class:
but still couldn't understand how to resolve my coverage issue.
I have a trigger with the below apex class that works as expected. Right now it is covered 50%, all the 3 FOR loops below the system.debug statement are not covered. The debug logs show records in taskList. Can someone help me to achieve 100% test coverage for the below class?
Apex Class:
public with sharing class TriggerHelper { public static void processBeforeDelete(List<Task> taskList) { processCaseTasks(taskList); } public static void processCaseTasks(List<Task> taskList) { List<CustomPermission> customPermission =[SELECT Id, DeveloperName FROM CustomPermission WHERE MasterLabel='Not Delete']; Id customPermId = customPermission[0].Id; List<SetupEntityAccess> setupEntities = [SELECT SetupEntityId FROM SetupEntityAccess WHERE SetupEntityId= :customPermId AND ParentId IN (SELECT PermissionSetId FROM PermissionSetAssignment WHERE AssigneeId = :UserInfo.getUserId())]; Set<Id> caseIds = new Set<Id>(); if(setupEntities.size()>0) { System.Debug('----My taskList---'+taskList); for(Task tsk :taskList) { if(tsk.WhatId.getSObjectType() == Case.sObjectType) { caseIds.add(tsk.WhatId); } } Map<Id, String> recordTypeNames = new Map<Id, String>(); for (Case c : [SELECT Id, RecordType.Name FROM Case WHERE Id =: caseIds]) { if(c.RecordType.Name=='DH') { recordTypeNames.put(c.Id, c.RecordType.Name); } } for(Task tsk : taskList) { if(recordTypeNames.containsKey(tsk.WhatId)) { tsk.addError(Label.Case_Task_Delete_Error_Message); } } } } }Test Class:
@isTest public class TriggerHelper_Test { public static final String DEMO_USER_ALIAS = 'demoUser'; @testSetup static void setupTestData() { Map<String,String> userDataToBeInserted = new Map<String,String>(); userDataToBeInserted.put('FirstName','DEMO'); userDataToBeInserted.put('LastName','OL User'); userDataToBeInserted.put('Alias','demoUser'); User demoUser = TestUtility.createTestUser(userDataToBeInserted,true); List<User> userList = new List<User>{demoUser}; TestUtility.assignPermissionSets(userList,true); } @isTest static void testDeletionforDHCase() { List<Task> taskList = new List<Task>(); User demoUser = [select Id,Alias from User where Alias=:DEMO_USER_ALIAS]; System.assertEquals(true,demoUser.Id!=null); Id DHRecordTypeId = Schema.SObjectType.Case.getRecordTypeInfosByName().get('DH').getRecordTypeId(); System.assertEquals(true,DHRecordTypeId!=null); Case DHCase = TestUtility.createTestCase(DHRecordTypeId,true); System.assertEquals(true,DHCase.Id!=null); Task testTask = TestUtility.createTestTask(DHCase.Id,demoUser.Id,true); System.assertEquals(true,testTask.Id!=null); taskList.add(testTask); System.runAs(demoUser) { Task testTask1 = [select Id from Task where OwnerId=:demoUser.Id LIMIT 1]; try { delete testTask1; }catch(Exception e) { System.assertEquals(true, e.getMessage().contains(Label.Case_Task_Delete_Error_Message)); } } Id nondhRecordTypeId = Schema.SObjectType.Case.getRecordTypeInfosByName().get('NONDH').getRecordTypeId(); System.assertEquals(true,nondhRecordTypeId!=null); Case NONDHCase = TestUtility.createTestCase(nondhRecordTypeId,true); System.assertEquals(true,nondhCase.Id!=null); Task testTask2 = TestUtility.createTestTask(nondhCase.Id,demoUser.Id,true); System.assertEquals(true,testTask2.Id!=null); taskList.add(testTask2); System.runAs(demoUser) { Task testTask1 = [select Id from Task where whatId=:nondhCase.Id LIMIT 1]; delete testTask1; } } }
Raj Vakati
Looks like you have't insert the record
LoneStar69
I am inserting records via TestUtility class. Anything else that you can think of?