You need to sign in to do that
Don't have an account?
Salah Odeh 10
How to create a custom controller and test for a visualforce page. I have created my visualforce page and need help with controller and test class
Here is my visualforce page:
<apex:page standardController="Bid_Summaries__c">
<apex:pageBlock title="Bid Summary">
<apex:slds />
<style type="text/css">
body {background-color: white;}
p { font-weight: bold; }
p { font-style: italic;}
h1 { color: #f00; }
p { background-color: #eec; }
newLink { color: #f60; font-weight: bold; }
</style>
<apex:page lightningStylesheets="true"/>
<apex:form >
<apex:pageBlockTable value="{! Bid_Summaries__c }" var="Bid_Summaries__c">
<apex:column value="{! Bid_Summaries__c.Name }"/>
<apex:column value="{! Bid_Summaries__c.Original_Budget__c }"/>
<apex:column value="{! Bid_Summaries__c.Upgrade_Amount__c }"/>
<apex:column value="{! Bid_Summaries__c.Budget_incl_Upgrades__c }"/>
<apex:column value="{! Bid_Summaries__c.TJH_Service_Fee__c }"/>
<apex:column value="{! Bid_Summaries__c.Concession__c }"/>
<apex:column value="{! Bid_Summaries__c.Upgrade_Total__c}"/>
</apex:pageBlockTable>
</apex:form>
</apex:pageBlock>
</apex:page>
What I'm trying to do is dynamically populate the value of the Bid_Summaries__c object fields on a visualforce page where any changes to the fields in that object will reflect in realtime to the visualforce page. The Bid_Summaries__c object is showing on a record list on the community as Kanaban list, users are able to move the field to select options and change prices. The point is once a user change those fields it will reflect on the visualforce page dynamicly without the need to refresh the page. Any ideas on how to write the apex controller and test class, or if there is any other way to accomplish this. Thanks
<apex:page standardController="Bid_Summaries__c">
<apex:pageBlock title="Bid Summary">
<apex:slds />
<style type="text/css">
body {background-color: white;}
p { font-weight: bold; }
p { font-style: italic;}
h1 { color: #f00; }
p { background-color: #eec; }
newLink { color: #f60; font-weight: bold; }
</style>
<apex:page lightningStylesheets="true"/>
<apex:form >
<apex:pageBlockTable value="{! Bid_Summaries__c }" var="Bid_Summaries__c">
<apex:column value="{! Bid_Summaries__c.Name }"/>
<apex:column value="{! Bid_Summaries__c.Original_Budget__c }"/>
<apex:column value="{! Bid_Summaries__c.Upgrade_Amount__c }"/>
<apex:column value="{! Bid_Summaries__c.Budget_incl_Upgrades__c }"/>
<apex:column value="{! Bid_Summaries__c.TJH_Service_Fee__c }"/>
<apex:column value="{! Bid_Summaries__c.Concession__c }"/>
<apex:column value="{! Bid_Summaries__c.Upgrade_Total__c}"/>
</apex:pageBlockTable>
</apex:form>
</apex:pageBlock>
</apex:page>
What I'm trying to do is dynamically populate the value of the Bid_Summaries__c object fields on a visualforce page where any changes to the fields in that object will reflect in realtime to the visualforce page. The Bid_Summaries__c object is showing on a record list on the community as Kanaban list, users are able to move the field to select options and change prices. The point is once a user change those fields it will reflect on the visualforce page dynamicly without the need to refresh the page. Any ideas on how to write the apex controller and test class, or if there is any other way to accomplish this. Thanks
hi Salah Odeh ,
Please visit the below url it is similar to what you are looking for.
https://trailhead.salesforce.com/content/learn/modules/visualforce_fundamentals/visualforce_custom_controllers
Please mark it as a best answer if it helps you.
Thanks for your respones, I have already built a apex controller and a test class, but when I run the test there is no coverage. Not sure what I'm missing. Here is my controller and test class:
Controller:
public class BidSummariesController {
public List<Bid_Summaries__c> Bid {get; set;}
public BidSummariesController(){
List<Bid_Summaries__c> Bid= [Select Id, Selected_Option__c,Concession__c, Status__c,TJH_Service_Fee__c,
Upgrade_Amount__c,Upgrade_Total__c, Original_Budget__c From Bid_Summaries__c] ;
}
PageReference pageRef = Page.BidSummary1;
public list <Bid_Summaries__c> getBid(){
return Bid;
}
}
Test Class:
@isTest
public class BidSummariesControllertest {
public static testMethod void BidSummariesController() {
test.StartTest();
Bid_Summaries__c Bid = new Bid_Summaries__c();
Bid.Upgrade_Amount__c = 1000;
Bid.Concession__c = 1000;
Bid.Original_Budget__c = 100;
Bid.Status__c = 'New';
Insert Bid;
hi salah,
You need to call the controller in your test class.
ApexPages.StandardController sc = new ApexPages.StandardController(Bid);
PageReference pageRef = Page.PageName;
Please mark it as a best answer if it helps you.
one more thing is you need to add test.stopTest also at the end.
also add Bid_Summaries__c bs = new Bid_Summaries__c(sc);
I actually did call the controller but did not copy it here. Here is the test class:
@isTest
public class BidSummariesControllertest {
public static testMethod void BidSummariesController() {
test.StartTest();
Bid_Summaries__c Bid = new Bid_Summaries__c();
Bid.Upgrade_Amount__c = 1000;
Bid.Concession__c = 1000;
Bid.Original_Budget__c = 100;
Bid.Status__c = 'New';
Insert Bid;
PageReference pageRef = Page.BidSummary1;
Test.setCurrentPage(pageRef);
ApexPages.StandardController sc = new ApexPages.StandardController(Bid);
test.stopTest();
List<Bid_Summaries__c> BidSum = [Select Id, Selected_Option__c,Concession__c, Status__c,TJH_Service_Fee__c,
Upgrade_Amount__c,Upgrade_Total__c, Original_Budget__c From Bid_Summaries__c ];
}
List<Bid_Summaries__c> BidSumm = New List<Bid_Summaries__c>();
}
what error you are getting?
Type requires name=value pair construction: Bid_Summaries___c