function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
LoneStar69LoneStar69 

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:
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 VakatiRaj Vakati
Looks like you have't insert the record 
 
@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);
	insert NONDHCase ;
    System.assertEquals(true,nondhCase.Id!=null);

    Task testTask2 = TestUtility.createTestTask(nondhCase.Id,demoUser.Id,true);
    System.assertEquals(true,testTask2.Id!=null); 
    taskList.add(testTask2);

	insert taskList ; 
	
    System.runAs(demoUser) {
    Task testTask1 = [select Id from Task where whatId=:nondhCase.Id LIMIT 1];
    delete testTask1;
    }        

} 
}

 
LoneStar69LoneStar69
I am inserting records via TestUtility class. Anything else that you can think of?