You need to sign in to do that
Don't have an account?
Abiola Enifeni 23
Apex Trigger Counter
Hi Guys,
Please could someone be so kind to help me with the Test Class to the Apex Trigger below;
APEX TRIGGER:
Trigger SOSPCall_Counter on Task (after insert) {
Set<Id> setClosedTaskAccountIds = new Set<Id>();
List<Account> listAccountUpdate = new List<Account>();
List<Account> listClosedTaskAccounts = new List<Account>();
List<Account> listUpdatedTaskAccounts = new List<Account>();
List<Account> listUpdatedAccounts = new List<Account>();
if(Trigger.IsAfter){
if(Trigger.IsInsert || Trigger.isUpdate) {
for(Task t: Trigger.new) {
if(String.valueOf(t.WhatId).startsWithIgnoreCase('001')) {
if(t.Status.equalsIgnoreCase('Completed')){
setClosedTaskAccountIds.add(t.WhatId);
System.debug('@@@@Inside Completed@@@'+setClosedTaskAccountIds);
}
if(Trigger.IsUpdate){
if(Trigger.oldMap.get(t.Id).WhatId != t.WhatId){
if(t.Status.equalsIgnoreCase('Completed')){
setClosedTaskAccountIds.add(Trigger.oldMap.get(t.Id).WhatId );
System.debug('@@@Inside Update Closed@@@'+setClosedTaskAccountIds);
}
}
}
}
}
}
listClosedTaskAccounts =[SELECT Id, Left_Message__c, RecordTypeId, Patient_Status__c,(Select Status From Tasks Where Status = 'Completed' AND Call_Reason__c = 'Left Message' )
FROM Account
WHERE Id =:setClosedTaskAccountIds
AND Patient_Status__c = 'Eligible'];
System.debug('@@@@ListClosedTaskAccounts'+listClosedTaskAccounts );
try{
System.debug('@@@@listAccountUpdate'+listAccountUpdate);
update listAccountUpdate;
}catch(System.Exception e){
System.debug('@@@error'+e.getMessage());
}
listUpdatedTaskAccounts =[SELECT Id, Left_Message__c, RecordTypeId, Eligibility_Date__c,Patient_Status__c, (Select Status From Tasks Where Status = 'Completed' AND Call_Reason__c = 'Left Message' )
FROM Account
WHERE Id =:setClosedTaskAccountIds
];
for(Account a : listUpdatedTaskAccounts)
{
List<Task> ltsk = a.Tasks;
if ((a.Left_Message__c <= 2) && (a.Patient_Status__c == 'Eligible')) {
a.Left_Message__c = a.Left_Message__c + 1;
system.debug('ltsk.size() line 67 ' + ltsk.size());
system.debug('a.Patient_Status__c line 68 ' + a.Patient_Status__c);
system.debug('a.Left_Message__c line 69 ' + a.Left_Message__c);
}
if ((a.Left_Message__c > 2) && (a.Patient_Status__c == 'Eligible')) {
a.Left_Message__c = 0;
a.Patient_Status__c = 'Non-Responsive Member';
system.debug('ltsk.size() line 74 ' + ltsk.size());
system.debug('a.Patient_Status__c line 75 ' + a.Patient_Status__c);
system.debug('a.Left_Message__c line 76 ' + a.Left_Message__c);
}
update listUpdatedTaskAccounts;
System.debug('***LOOK MA WE MADE IT***Update happened');
}
}
}
TEST CLASS
@isTest
private class SOSPCall_CounterTest{
@isTest
static void setupTestData(){
Account acc = new Account(LastName = 'LastName870', Patient_Status__c = 'Eligible');
Insert acc;
Task tsk = new Task(Status = 'Completed', Call_Reason__c = 'Left Message', Subject = 'This is a Test', WhatId = acc.Id);
Insert tsk;
}
static testMethod void test_TaskTrigger(){
test.startTest();
List<Account> account1_Obj = [SELECT Id,LastName,Patient_Status__c,Left_Message__c from Account];
System.assertEquals(1,account1_Obj.size());
Task task_Obj = new Task(Status = 'Completed', Subject = 'This is a Test', Call_Reason__c = 'Left Message');
Insert task_Obj;
test.stopTest();
}
}
for some reasons oblivious to me. the Test Class is not working.
Please could someone be so kind to help me with the Test Class to the Apex Trigger below;
APEX TRIGGER:
Trigger SOSPCall_Counter on Task (after insert) {
Set<Id> setClosedTaskAccountIds = new Set<Id>();
List<Account> listAccountUpdate = new List<Account>();
List<Account> listClosedTaskAccounts = new List<Account>();
List<Account> listUpdatedTaskAccounts = new List<Account>();
List<Account> listUpdatedAccounts = new List<Account>();
if(Trigger.IsAfter){
if(Trigger.IsInsert || Trigger.isUpdate) {
for(Task t: Trigger.new) {
if(String.valueOf(t.WhatId).startsWithIgnoreCase('001')) {
if(t.Status.equalsIgnoreCase('Completed')){
setClosedTaskAccountIds.add(t.WhatId);
System.debug('@@@@Inside Completed@@@'+setClosedTaskAccountIds);
}
if(Trigger.IsUpdate){
if(Trigger.oldMap.get(t.Id).WhatId != t.WhatId){
if(t.Status.equalsIgnoreCase('Completed')){
setClosedTaskAccountIds.add(Trigger.oldMap.get(t.Id).WhatId );
System.debug('@@@Inside Update Closed@@@'+setClosedTaskAccountIds);
}
}
}
}
}
}
listClosedTaskAccounts =[SELECT Id, Left_Message__c, RecordTypeId, Patient_Status__c,(Select Status From Tasks Where Status = 'Completed' AND Call_Reason__c = 'Left Message' )
FROM Account
WHERE Id =:setClosedTaskAccountIds
AND Patient_Status__c = 'Eligible'];
System.debug('@@@@ListClosedTaskAccounts'+listClosedTaskAccounts );
try{
System.debug('@@@@listAccountUpdate'+listAccountUpdate);
update listAccountUpdate;
}catch(System.Exception e){
System.debug('@@@error'+e.getMessage());
}
listUpdatedTaskAccounts =[SELECT Id, Left_Message__c, RecordTypeId, Eligibility_Date__c,Patient_Status__c, (Select Status From Tasks Where Status = 'Completed' AND Call_Reason__c = 'Left Message' )
FROM Account
WHERE Id =:setClosedTaskAccountIds
];
for(Account a : listUpdatedTaskAccounts)
{
List<Task> ltsk = a.Tasks;
if ((a.Left_Message__c <= 2) && (a.Patient_Status__c == 'Eligible')) {
a.Left_Message__c = a.Left_Message__c + 1;
system.debug('ltsk.size() line 67 ' + ltsk.size());
system.debug('a.Patient_Status__c line 68 ' + a.Patient_Status__c);
system.debug('a.Left_Message__c line 69 ' + a.Left_Message__c);
}
if ((a.Left_Message__c > 2) && (a.Patient_Status__c == 'Eligible')) {
a.Left_Message__c = 0;
a.Patient_Status__c = 'Non-Responsive Member';
system.debug('ltsk.size() line 74 ' + ltsk.size());
system.debug('a.Patient_Status__c line 75 ' + a.Patient_Status__c);
system.debug('a.Left_Message__c line 76 ' + a.Left_Message__c);
}
update listUpdatedTaskAccounts;
System.debug('***LOOK MA WE MADE IT***Update happened');
}
}
}
TEST CLASS
@isTest
private class SOSPCall_CounterTest{
@isTest
static void setupTestData(){
Account acc = new Account(LastName = 'LastName870', Patient_Status__c = 'Eligible');
Insert acc;
Task tsk = new Task(Status = 'Completed', Call_Reason__c = 'Left Message', Subject = 'This is a Test', WhatId = acc.Id);
Insert tsk;
}
static testMethod void test_TaskTrigger(){
test.startTest();
List<Account> account1_Obj = [SELECT Id,LastName,Patient_Status__c,Left_Message__c from Account];
System.assertEquals(1,account1_Obj.size());
Task task_Obj = new Task(Status = 'Completed', Subject = 'This is a Test', Call_Reason__c = 'Left Message');
Insert task_Obj;
test.stopTest();
}
}
for some reasons oblivious to me. the Test Class is not working.
Hope that helps :)
Nicolas Kadis