[SalesForce] Testing class for variables inside a ‘for’ loop

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 be rw.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.

Related Topic