
public class Case_RunAssignmentRule {
public static void runCaseAssignmentRules(List<Case> caseList) {
List<Case> caseToUpdate = new List<Case> ();
Id caseInboundRecordType = Schema.SObjectType.Case.getRecordTypeInfosByName().get('Inbound Case').getRecordTypeId();
for (Case c : caseList) {
if (c.RecordTypeId == caseInboundRecordType) {
caseToUpdate.add(c);
System.debug('CaseID --> ' + caseToUpdate);
}
}
if (caseToUpdate.size() > 0) {
//List<Case> caseToRunAssignment = [SELECT Id, OwnerId FROM Case WHERE Id IN :caseToUpdate];
Database.DMLOptions dmo = new Database.DMLOptions();
dmo.assignmentRuleHeader.useDefaultRule = true;
System.debug('DMO --> ' + dmo);
for (Case caseL : caseToUpdate) {
caseL.setOptions(dmo);
System.debug('caseOwner --> ' + caseL.OwnerId);
System.debug('caseId --> ' + caseL);
}
//insert caseToUpdate;
}
}
}
@isTest
public class Case_RunAssignmentRuleTest {
@testSetup static void setupTest() {
List<TriggerController__c> tc = new List<TriggerController__c> {
new TriggerController__c(Name = 'Case', Disabled__c = false)
};
}
static testmethod void newCaseInsert() {
List<Case> newCases = new List<Case> ();
for (Integer i = 0; i<5; i++) {
Case c = new Case();
c.Subject = 'InboundCaseForCAR' + i;
c.Product__c = 'G2M';
c.Reason_Category__c = 'Admin Change';
c.Case_Category__c = 'Contract Services';
c.Status = 'New';
c.RecordTypeId = '01213000001ZUeG';
newCases.add(c);
}
test.startTest();
insert(newCases);
Id currentUserId = UserInfo.getUserId();
List<Case> returnCaseList = [SELECT Id, OwnerId, Subject FROM Case WHERE Id IN :newCases];
for (Case c : returnCaseList) {
System.assertNotEquals(currentUserId, c.OwnerId);
System.assertEquals(5, returnCaseList.size());
}
test.stopTest();
}
}
Hi there,Looks like you are not setting the Record type for the case on the testclass...Could that be it?Good Luck.