I need help writing the testing class for the code below. I am getting 68% test coverage. all the code inside the for loop is not getting any coverage. I will appreciate any help.
This is what I have so far:
class
public class ReworkOrderContr {
public ReworkOrderContr ()
{
objectID = ApexPages.currentPage().getParameters().get('id');
rework =[select Name,Location__c,Status__c, Work_Order_Date__c,CreatedBy.Name,CreatedDate,Instructions__c,Processed_By__c,Start_Time__c,End_Time__c,Proc_Comments__c from Rework_Order__c where id = : objectID ];
for(Rework_Order__c rw :rework){
name =rw.Name;
location =rw.Location__c;
status = rw.Status__c;
processDate = rw.Work_Order_Date__c;
createdBy=rw.CreatedBy.Name;
createdDate=date.valueof(rw.CreatedDate);
instructions=rw.Instructions__c;
processedBy=rw.Processed_By__c;
startDate =rw.Start_Time__c;
endDate=rw.End_Time__c;
procComments=rw.Proc_Comments__c;
}
}
test class:
@istest
public class test_ReworkOrderContr {
public static testmethod void testReworkOrderContr () {
Account account = new Account(Name = 'Test Account1', Buyer__c='carlos', Buyer_Email__c='carlos@netrush.com');
insert account;
NRProducts__c product = new NRProducts__c(Account__c = account.Id, Name = '105823437', Product_Name__c='105823437' );
insert product;
Rework_Order__c rw = new Rework_Order__c(Instructions__c='all good',Work_Order_Date__c=date.newInstance(1960, 2, 17),Location__c='A5',Processed_By__c='carlos',Start_Time__c=DateTime.newInstanceGMT(2012,04,30,12,59,59),End_Time__c=DateTime.newInstanceGMT(2012,04,30,12,59,59),Proc_Comments__c='all good',Status__c='open');
insert rw;
ROD__c rod = new ROD__c(Rework_Order__c=rw.id,NRProducts__c=product.id,Qty_Ordered__c=25,Qty_Built__c=25);
insert rod;
PageReference tpageRef = Page.ReworkOrder;
Test.setCurrentPage(tpageRef);
ApexPages.currentPage().getParameters().put('id','rw.id' );
System.assertEquals('rw.id',ApexPages.currentPage().getParameters().get('id'));
ReworkOrderContr pcp = new ReworkOrderContr();
pcp.name =rw.id;
pcp.location =rw.Location__c;
pcp.status = rw.Status__c;
pcp.processDate = rw.Work_Order_Date__c;
pcp.createdBy=rw.CreatedBy.Name;
pcp.createdDate=date.valueof(rw.CreatedDate);
pcp.instructions=rw.Instructions__c;
pcp.processedBy=rw.Processed_By__c;
pcp.startDate =rw.Start_Time__c;
pcp.endDate=rw.End_Time__c;
pcp.procComments=rw.Proc_Comments__c;*/
//assert for all the variables
System.assertEquals(rw.id__c,pcp.Name);
System.assertEquals(rw.Location__c,pcp.location);
....etc
}
}
Best Answer
'rw.id'
in your test method should berw.id
(no quotes). Since the query doesn't pull back any records, because you're literally querying for the string "rw.id" instead of the 18-character ID, the loop never executes once.