You need to sign in to do that
Don't have an account?
William Boyce 22
Test class for schedulable Apex with queues
Hello community! I am having trouble creating a test class for the following code. Any assistance would be greatly appreciated. Thank you in advance for your help!
global class Reassign implements Schedulable {
global void execute(SchedulableContext ctx) {
// Define 'inprogress' and 'newqueue' string variables
String inprogress;
String newqueue;
// Find 'In Progress' queue Id and assign to 'inprogress'
inprogress = [SELECT Id from Group where Name = 'In Progress' and Type = 'Queue'].Id;
// Find 'New' queue Id and assign to 'newqueue'
newqueue = [SELECT Id from Group where Name = 'New' and Type = 'Queue'].Id;
// Create lists for cases
List<Case> cases1 = [SELECT Id, CaseNumber, OwnerId
FROM Case
WHERE RecordTypeId = '0124u00000060pmAAA'
AND (Status = 'In Progress' OR Status = 'Outreach Attempted')];
List <Case> cases2 = New List<Case>();
List<Case> newcases1 = [SELECT Id
From Case
Where RecordTypeId = '0124u00000060pmAAA'
AND Status = 'New'];
List <Case> newcases2 = New List<Case>();
// Change the owner and status for each Case in the list and add to respective queue
for (Case c : cases1){
c.OwnerId = inprogress;
c.Status = 'In Progress';
cases2.add(c);
}
update cases2;
for (Case d : newcases1){
d.OwnerId = newqueue;
newcases2.add(d);
}
update newcases2;
}
}
global class Reassign implements Schedulable {
global void execute(SchedulableContext ctx) {
// Define 'inprogress' and 'newqueue' string variables
String inprogress;
String newqueue;
// Find 'In Progress' queue Id and assign to 'inprogress'
inprogress = [SELECT Id from Group where Name = 'In Progress' and Type = 'Queue'].Id;
// Find 'New' queue Id and assign to 'newqueue'
newqueue = [SELECT Id from Group where Name = 'New' and Type = 'Queue'].Id;
// Create lists for cases
List<Case> cases1 = [SELECT Id, CaseNumber, OwnerId
FROM Case
WHERE RecordTypeId = '0124u00000060pmAAA'
AND (Status = 'In Progress' OR Status = 'Outreach Attempted')];
List <Case> cases2 = New List<Case>();
List<Case> newcases1 = [SELECT Id
From Case
Where RecordTypeId = '0124u00000060pmAAA'
AND Status = 'New'];
List <Case> newcases2 = New List<Case>();
// Change the owner and status for each Case in the list and add to respective queue
for (Case c : cases1){
c.OwnerId = inprogress;
c.Status = 'In Progress';
cases2.add(c);
}
update cases2;
for (Case d : newcases1){
d.OwnerId = newqueue;
newcases2.add(d);
}
update newcases2;
}
}
I've written a testclass for this, should cover 100%!
All Answers
I've written a testclass for this, should cover 100%!
Here is the final code for anyone else who comes across this:
Apex Class:
global class Reassign implements Schedulable {
global void execute(SchedulableContext ctx) {
// Define 'inprogress' and 'newqueue' string variables
String inprogress;
String newqueue;
// Find 'In Progress' queue Id and assign to 'inprogress'
inprogress = [SELECT Id from Group where Name = 'In Progress' and Type = 'Queue' LIMIT 1].Id;
// Find 'New' queue Id and assign to 'newqueue'
newqueue = [SELECT Id from Group where Name = 'New' and Type = 'Queue' LIMIT 1].Id;
// Create lists for cases
List<Case> cases1 = [SELECT Id, CaseNumber, OwnerId
FROM Case
WHERE RecordTypeId = '0124u00000060pmAAA'
AND (Status = 'In Progress' OR Status = 'Outreach Attempted')];
List <Case> cases2 = New List<Case>();
List<Case> newcases1 = [SELECT Id
From Case
Where RecordTypeId = '0124u00000060pmAAA'
AND Status = 'New'];
List <Case> newcases2 = New List<Case>();
// Change the owner and status for each Case in the list and add to respective queue
for (Case c : cases1){
c.OwnerId = inprogress;
c.Status = 'In Progress';
cases2.add(c);
}
update cases2;
for (Case d : newcases1){
d.OwnerId = newqueue;
newcases2.add(d);
}
update newcases2;
}
}
TestClass:
@isTest
public class ReassignTest {
@testSetup
static void testSetup() {
List<Group> groups = new List<Group>();
Group inProgressGroup = new Group(Name = 'In Progress', Type = 'Queue');
Group newGroup = new Group(Name = 'New', Type = 'Queue');
groups.add(inProgressGroup);
groups.add(newGroup);
insert Groups;
List<QueuesObject> queues = new List<QueuesObject>();
QueuesObject inprogressQueue = new QueuesObject(QueueID = inProgressGroup.id, SObjectType = 'Case');
QueuesObject newQueue = new QueuesObject(QueueID = newGroup.id, SObjectType = 'Case');
queues.add(inprogressQueue);
queues.add(newQueue);
insert queues;
List<Case> cases = new List<Case>();
Case cs1 = new Case(Status = 'In Progress', RecordTypeId = '0124u00000060pmAAA');
cases.add(cs1);
Case cs2 = new Case(Status = 'New', RecordTypeId = '0124u00000060pmAAA');
cases.add(cs2);
insert cases;
}
@isTest
private static void testClass() {
Test.StartTest();
eConnectReassign reassignSchedule = new Reassign();
String scheduleTime = '0 0 23 * * ?';
system.schedule('Testing Reassign Class.', scheduleTime, reassignSchedule);
Test.stopTest();
}
}