You need to sign in to do that
Don't have an account?
Code coverage for Apex class with page reference method
I have the following class which fails to get code coverage on lines in bold. I have searched through the forums and can't determine how to get those particular lines covered.
public without sharing class projectWizardController {
Project__c project;
public Project__c getProject() {
if(project == null) project = new Project__c();
project.Plan__c = ApexPages.currentPage().getParameters().get('planId');
project.Status__c = 'New';
return project;
}
public PageReference step1() {
return Page.new_project_p1;
}
public PageReference step2() {
return Page.new_project_p2;
}
public PageReference step3() {
return Page.new_project_p3;
}
public PageReference submit() {
try {
//if(project.get('Id') == null)
project.Status__c = 'Submitted';
project.Submitted__c = Date.Today();
insert project;
PageReference projectPage = new PageReference('/apex/manage_project?id=' + project.id + '&planId='+ ApexPages.currentPage().getParameters().get('planId'));
projectPage.setRedirect(true);
return projectPage;
}
catch (Exception e) {apexpages.addmessages(e);}return null;
}
}
The test class is below.
@isTest
public class projectWizardControllerTest {
private static testmethod void testSubmittedProject() {
projectWizardController controller = new projectWizardController();
//ARRANGE
Plan__c plan = new Plan__c();insert plan;
Project__c project = controller.getProject();
project.Plan__c = plan.id;
project.Status__c = 'Submitted';
insert project;
//ACT
Test.startTest();
controller.step1();
controller.step2();
controller.step3();
controller.submit();
PageReference pageRef = Page.manage_project;
Test.setCurrentPage(pageRef);
ApexPages.currentPage().getParameters().put('planid',plan.id);
ApexPages.currentPage().getParameters().put('id',project.id);
ApexPages.currentPage().setRedirect(true);
Test.stopTest();
//ASSERT
System.assertEquals(project.Status__c, 'Submitted');
}
}
public without sharing class projectWizardController {
Project__c project;
public Project__c getProject() {
if(project == null) project = new Project__c();
project.Plan__c = ApexPages.currentPage().getParameters().get('planId');
project.Status__c = 'New';
return project;
}
public PageReference step1() {
return Page.new_project_p1;
}
public PageReference step2() {
return Page.new_project_p2;
}
public PageReference step3() {
return Page.new_project_p3;
}
public PageReference submit() {
try {
//if(project.get('Id') == null)
project.Status__c = 'Submitted';
project.Submitted__c = Date.Today();
insert project;
PageReference projectPage = new PageReference('/apex/manage_project?id=' + project.id + '&planId='+ ApexPages.currentPage().getParameters().get('planId'));
projectPage.setRedirect(true);
return projectPage;
}
catch (Exception e) {apexpages.addmessages(e);}return null;
}
}
The test class is below.
@isTest
public class projectWizardControllerTest {
private static testmethod void testSubmittedProject() {
projectWizardController controller = new projectWizardController();
//ARRANGE
Plan__c plan = new Plan__c();insert plan;
Project__c project = controller.getProject();
project.Plan__c = plan.id;
project.Status__c = 'Submitted';
insert project;
//ACT
Test.startTest();
controller.step1();
controller.step2();
controller.step3();
controller.submit();
PageReference pageRef = Page.manage_project;
Test.setCurrentPage(pageRef);
ApexPages.currentPage().getParameters().put('planid',plan.id);
ApexPages.currentPage().getParameters().put('id',project.id);
ApexPages.currentPage().setRedirect(true);
Test.stopTest();
//ASSERT
System.assertEquals(project.Status__c, 'Submitted');
}
}
All Answers
Amazing! I just made one small tweak to get the test to pass and now have 100% coverage.
[SELECT Id, Status__c FROM Project__c];
Thank you so much. I learned a lot from your post.
Bryan