You need to sign in to do that
Don't have an account?
daniel1110
trigger stuck at 62% coverage
Hi,
I have the following trigger, but it's my test code is not covered for line 10 and lines 15 and 16. I'm new to this and any suggestion would be appreciated.
line source 1 trigger updateSCBonTask1 on Task (after update) { 2 3 Set<Id> SCBIds = new Set<Id>(); 4 5 for(Task t: [SELECT Subject,WhatId, Status FROM Task WHERE ID IN:trigger.new]){ 6 7 String wId = t.WhatId; 8 9 if(wId!=null && !SCBIds.contains(t.WhatId) && t.Status == 'Completed' && t.Subject.Contains('Collect Enrollment Information')){ 10 SCBIds.add(t.WhatId); 11 } 12 } 13 14 for(Stem_Cell_Bank__c a:[SELECT stage__c FROM Stem_Cell_Bank__c WHERE ID IN:SCBIds]){ 15 a.stage__c = 'Process Payment'; 16 update a; 17 } 18 19 }
My test code:
@isTest public class updateSCBonT1Test { static testMethod void testupdateSCBonT1(){ Stem_Cell_Bank__c s = new Stem_Cell_Bank__c(); s.name = 'Test'; s.account__c = '001c000000AfLHOAA3'; test.startTest(); insert(s); LIST<Stem_Cell_Bank__c> a = [SELECT Id, Stage__c FROM Stem_Cell_Bank__c WHERE Name = 'Test']; Task testTask = new Task(Subject = 'Test', whatId = a[0].ID); insert(testTask); Stem_Cell_Bank__c updatedStem_Cell_Bank = [SELECT stage__c FROM Stem_Cell_Bank__c WHERE name = 'Test']; system.AssertEquals('Collect Enrollment Information',updatedStem_Cell_Bank.stage__c); testTask.Status='Completed'; update(testTask); Stem_Cell_Bank__c checkupdate = [SELECT stage__c FROM Stem_Cell_Bank__c WHERE name = 'Test']; system.AssertEquals('Process Payment',checkupdate.stage__c); test.stopTest(); } }
thank u in advance~
testTask.WahtId = s.Id;
update(testTask);
Populate what id with s.Id before updating the task.
Anyway, I saw you are using hardcoded account Id in your test method. This is not a good practice. Create an Account record in test class itself and then use this new record.
Thank you Tech Force for your suggestion.
I've taken your suggestion, which makes good logical sense, but the update is still failing for some reason.
The modified code is as follows:
The result I get back is:
Pass/Fail Fail Error Message System.AssertException: Assertion Failed: Expected: Process Payment, Actual: Collect Enrollment Information Stack Trace Class.updateSCBonT1Test.testupdateSCBonT1: line 18, column 1
Any thoughts?
Still trying to figure out how to create account record in the test class