- Linda Bliss dev
- NEWBIE
- 10 Points
- Member since 2014
- Business Systems Analyst
- Airbus DS Communications
-
ChatterFeed
-
0Best Answers
-
0Likes Received
-
0Likes Given
-
2Questions
-
1Replies
Need help with test code please
I used the code that Jeff Douglas http://blog.jeffdouglas.com/2010/07/13/building-a-dynamic-search-page-in-visualforce/ wrote to create a case search but cannot get the test code to work.
Here is the controller:
Here is the page:
Here is the test code that I am trying to use, the error is "Error: Compile Error: Variable does not exist: sources at line 25 column 15" and the line it is referring to is "testSources = controller.sources;"
Thanks, Linda
Here is the controller:
public with sharing class CaseSearchController {
// the soql without the order and limit
private String soql {get;set;}
// the collection of cases to display
public List<Case> cases {get;set;}
// the current sort direction. defaults to asc
public String sortDir {
get { if (sortDir == null) { sortDir = 'asc'; } return sortDir; }
set;
}
// the current field to sort by. defaults to caseNumber
public String sortField {
get { if (sortField == null) {sortField = 'caseNumber'; } return sortField; }
set;
}
// format the soql for display on the visualforce page
public String debugSoql {
get { return soql + ' order by ' + sortField + ' ' + sortDir + ' limit 40'; }
set;
}
// init the controller and display some sample data when the page loads
public CaseSearchController() {
soql = 'select casenumber,Business_Unit__c , Site_Account__r.name, product_family__c from case where casenumber != null';
runQuery();
}
// toggles the sorting of query from asc<-->desc
public void toggleSort() {
// simply toggle the direction
sortDir = sortDir.equals('asc') ? 'desc' : 'asc';
// run the query again
runQuery();
}
// runs the actual query
public void runQuery() {
try {
cases = Database.query(soql + ' order by ' + sortField + ' ' + sortDir + ' limit 40');
} catch (Exception e) {
ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, 'Ooops!'));
}
}
// runs the search with parameters passed via Javascript
public PageReference runSearch() {
String caseNumber = Apexpages.currentPage().getParameters().get('caseNumber');
String bu = Apexpages.currentPage().getParameters().get('bu');
String accountSite = Apexpages.currentPage().getParameters().get('accountSite');
String productFamily = Apexpages.currentPage().getParameters().get('productFamily');
soql = 'select CaseNumber, Business_Unit__c, Site_Account__r.name, product_family__c from case where casenumber != null';
if (!caseNumber.equals(''))
soql += ' and caseNumber LIKE \''+String.escapeSingleQuotes(caseNumber)+'%\'';
if (!bu.equals(''))
soql += ' and Business_Unit__c = \''+bu+'\'';
if (!accountSite.equals(''))
soql += ' and Site_Account__r.name LIKE \''+String.escapeSingleQuotes(accountSite)+'%\'';
if (!productFamily.equals(''))
soql += ' and product_family__c = \''+productFamily+'\'';
// run the query again
runQuery();
return null;
}
// use apex describe to build the picklist values
public List<String> productfamilies {
get {
if (productfamilies == null) {
productfamilies = new List<String>();
Schema.DescribeFieldResult field = Case.product_family__c.getDescribe();
for (Schema.PicklistEntry f : field.getPicklistValues())
productfamilies.add(f.getLabel());
}
return productfamilies;
}
set;
}
public List<String> businessunits {
get {
if (businessunits == null) {
businessunits = new List<String>();
Schema.DescribeFieldResult field = Case.Business_Unit__c.getDescribe();
for (Schema.PicklistEntry f : field.getPicklistValues())
businessunits.add(f.getLabel());
}
return businessunits;
}
set;
}
}
Here is the page:
<apex:page controller="CaseSearchController" sidebar="false">
<apex:form >
<apex:pageMessages id="errors" />
<apex:pageBlock title="Case Search" mode="edit">
<table width="100%" border="0">
<tr>
<td width="200" valign="top">
<apex:pageBlock title="Parameters" mode="edit" id="criteria">
<script type="text/javascript">
function doSearch() {
searchServer(
document.getElementById("caseNumber").value,
document.getElementById("bu").options[document.getElementById("bu").selectedIndex].value,
document.getElementById("accountSite").value,
document.getElementById("productFamily").options[document.getElementById("productFamily").selectedIndex].value
);
}
</script>
<apex:actionFunction name="searchServer" action="{!runSearch}" rerender="results,debug,errors">
<apex:param name="caseNumber" value="" />
<apex:param name="bu" value="" />
<apex:param name="accountSite" value="" />
<apex:param name="productFamily" value="" />
</apex:actionFunction>
<table cellpadding="2" cellspacing="2">
<tr>
<td style="font-weight:bold;">Case Number<br/>
<input type="text" id="caseNumber" onkeyup="doSearch();"/>
</td>
</tr>
<tr>
<td style="font-weight:bold;">BU<br/>
<select id="bu" onchange="doSearch();">
<option value=""></option>
<apex:repeat value="{!businessunits}" var="bus">
<option value="{!bus}">{!bus}</option>
</apex:repeat>
</select>
</td>
</tr>
<tr>
<td style="font-weight:bold;">Site Account<br/>
<input type="text" id="accountSite" onkeyup="doSearch();"/>
</td>
</tr>
<tr>
<td style="font-weight:bold;">Product Family<br/>
<select id="productFamily" onchange="doSearch();">
<option value=""></option>
<apex:repeat value="{!productfamilies}" var="prod">
<option value="{!prod}">{!prod}</option>
</apex:repeat>
</select>
</td>
</tr>
</table>
</apex:pageBlock>
</td>
<td valign="top">
<apex:pageBlock mode="edit" id="results">
<apex:pageBlockTable value="{!cases}" var="case">
<apex:column >
<apex:facet name="header">
<apex:commandLink value="Case Number" action="{!toggleSort}" rerender="results,debug">
<apex:param name="sortField" value="caseNumber" assignTo="{!sortField}"/>
</apex:commandLink>
</apex:facet>
<apex:outputLink value="/{!Case.Id}" target="_blank">{!Case.casenumber}</apex:outputLink>
</apex:column>
<apex:column >
<apex:facet name="header">
<apex:commandLink value="BU" action="{!toggleSort}" rerender="results,debug">
<apex:param name="sortField" value="Business_Unit__c" assignTo="{!sortField}"/>
</apex:commandLink>
</apex:facet>
<apex:outputField value="{!case.Business_Unit__c}"/>
</apex:column>
<apex:column >
<apex:facet name="header">
<apex:commandLink value="Site Account" action="{!toggleSort}" rerender="results,debug">
<apex:param name="sortField" value="Site_Account__r.name" assignTo="{!sortField}"/>
</apex:commandLink>
</apex:facet>
<apex:outputField value="{!case.Site_Account__r.name}"/>
</apex:column>
<apex:column >
<apex:facet name="header">
<apex:commandLink value="Product Family" action="{!toggleSort}" rerender="results,debug">
<apex:param name="sortField" value="Product_Family__c" assignTo="{!sortField}"/>
</apex:commandLink>
</apex:facet>
<apex:outputField value="{!case.Product_Family__c}"/>
</apex:column>
</apex:pageBlockTable>
</apex:pageBlock>
</td>
</tr>
</table>
<apex:pageBlock title="Debug - SOQL" id="debug">
<apex:outputText value="{!debugSoql}" />
</apex:pageBlock>
</apex:pageBlock>
</apex:form>
</apex:page>
Here is the test code that I am trying to use, the error is "Error: Compile Error: Variable does not exist: sources at line 25 column 15" and the line it is referring to is "testSources = controller.sources;"
@isTest
private class theCaseSearchController {
static testMethod void testSearchController() {
//instantiate a page
PageReference pg = Page.Case_Search_auto;
Test.setCurrentPage(pg);
pg.getParameters().put('caseNumber', '999999');
pg.getParameters().put('bu', 'test MC');
pg.getParameters().put('accountSite', 'test acct site');
pg.getParameters().put('productFamily', 'test prod family');
// instantiate the controller
CaseSearchController controller=new CaseSearchController();
System.assert(controller.runSearch() == null);
String testDebugSoql = controller.debugSoql;
controller.toggleSort();
System.assertequals (controller.sortDir, 'desc');
List<String> testSources = new List<String>();
testSources = controller.sources;
System.assertequals (testSources[0], 'vesta');
//to test the catch clause we need to make the query fail
controller.sortField = 'badfield';
controller.runQuery();
}
}
Any help is greatly apprechiated!!Thanks, Linda
-
- Linda Bliss dev
- June 10, 2015
- Like
- 0
Update custom field on Opportunity when the Primary Partner is assigned
I am wondering what the best way is to update a custom field called "Primary_Partner__c" on the opportunity object with the related list Parter (partner marked as Primary). I have a trigger setup in my Sandbox that works but was wondering if a headless flow would work for this. I built flow but it is not working - no error messages so wondering if I can write from the Partner object to the Opportunity.
-
- Linda Bliss dev
- May 29, 2015
- Like
- 0
Need help with test code please
I used the code that Jeff Douglas http://blog.jeffdouglas.com/2010/07/13/building-a-dynamic-search-page-in-visualforce/ wrote to create a case search but cannot get the test code to work.
Here is the controller:
Here is the page:
Here is the test code that I am trying to use, the error is "Error: Compile Error: Variable does not exist: sources at line 25 column 15" and the line it is referring to is "testSources = controller.sources;"
Thanks, Linda
Here is the controller:
public with sharing class CaseSearchController {
// the soql without the order and limit
private String soql {get;set;}
// the collection of cases to display
public List<Case> cases {get;set;}
// the current sort direction. defaults to asc
public String sortDir {
get { if (sortDir == null) { sortDir = 'asc'; } return sortDir; }
set;
}
// the current field to sort by. defaults to caseNumber
public String sortField {
get { if (sortField == null) {sortField = 'caseNumber'; } return sortField; }
set;
}
// format the soql for display on the visualforce page
public String debugSoql {
get { return soql + ' order by ' + sortField + ' ' + sortDir + ' limit 40'; }
set;
}
// init the controller and display some sample data when the page loads
public CaseSearchController() {
soql = 'select casenumber,Business_Unit__c , Site_Account__r.name, product_family__c from case where casenumber != null';
runQuery();
}
// toggles the sorting of query from asc<-->desc
public void toggleSort() {
// simply toggle the direction
sortDir = sortDir.equals('asc') ? 'desc' : 'asc';
// run the query again
runQuery();
}
// runs the actual query
public void runQuery() {
try {
cases = Database.query(soql + ' order by ' + sortField + ' ' + sortDir + ' limit 40');
} catch (Exception e) {
ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, 'Ooops!'));
}
}
// runs the search with parameters passed via Javascript
public PageReference runSearch() {
String caseNumber = Apexpages.currentPage().getParameters().get('caseNumber');
String bu = Apexpages.currentPage().getParameters().get('bu');
String accountSite = Apexpages.currentPage().getParameters().get('accountSite');
String productFamily = Apexpages.currentPage().getParameters().get('productFamily');
soql = 'select CaseNumber, Business_Unit__c, Site_Account__r.name, product_family__c from case where casenumber != null';
if (!caseNumber.equals(''))
soql += ' and caseNumber LIKE \''+String.escapeSingleQuotes(caseNumber)+'%\'';
if (!bu.equals(''))
soql += ' and Business_Unit__c = \''+bu+'\'';
if (!accountSite.equals(''))
soql += ' and Site_Account__r.name LIKE \''+String.escapeSingleQuotes(accountSite)+'%\'';
if (!productFamily.equals(''))
soql += ' and product_family__c = \''+productFamily+'\'';
// run the query again
runQuery();
return null;
}
// use apex describe to build the picklist values
public List<String> productfamilies {
get {
if (productfamilies == null) {
productfamilies = new List<String>();
Schema.DescribeFieldResult field = Case.product_family__c.getDescribe();
for (Schema.PicklistEntry f : field.getPicklistValues())
productfamilies.add(f.getLabel());
}
return productfamilies;
}
set;
}
public List<String> businessunits {
get {
if (businessunits == null) {
businessunits = new List<String>();
Schema.DescribeFieldResult field = Case.Business_Unit__c.getDescribe();
for (Schema.PicklistEntry f : field.getPicklistValues())
businessunits.add(f.getLabel());
}
return businessunits;
}
set;
}
}
Here is the page:
<apex:page controller="CaseSearchController" sidebar="false">
<apex:form >
<apex:pageMessages id="errors" />
<apex:pageBlock title="Case Search" mode="edit">
<table width="100%" border="0">
<tr>
<td width="200" valign="top">
<apex:pageBlock title="Parameters" mode="edit" id="criteria">
<script type="text/javascript">
function doSearch() {
searchServer(
document.getElementById("caseNumber").value,
document.getElementById("bu").options[document.getElementById("bu").selectedIndex].value,
document.getElementById("accountSite").value,
document.getElementById("productFamily").options[document.getElementById("productFamily").selectedIndex].value
);
}
</script>
<apex:actionFunction name="searchServer" action="{!runSearch}" rerender="results,debug,errors">
<apex:param name="caseNumber" value="" />
<apex:param name="bu" value="" />
<apex:param name="accountSite" value="" />
<apex:param name="productFamily" value="" />
</apex:actionFunction>
<table cellpadding="2" cellspacing="2">
<tr>
<td style="font-weight:bold;">Case Number<br/>
<input type="text" id="caseNumber" onkeyup="doSearch();"/>
</td>
</tr>
<tr>
<td style="font-weight:bold;">BU<br/>
<select id="bu" onchange="doSearch();">
<option value=""></option>
<apex:repeat value="{!businessunits}" var="bus">
<option value="{!bus}">{!bus}</option>
</apex:repeat>
</select>
</td>
</tr>
<tr>
<td style="font-weight:bold;">Site Account<br/>
<input type="text" id="accountSite" onkeyup="doSearch();"/>
</td>
</tr>
<tr>
<td style="font-weight:bold;">Product Family<br/>
<select id="productFamily" onchange="doSearch();">
<option value=""></option>
<apex:repeat value="{!productfamilies}" var="prod">
<option value="{!prod}">{!prod}</option>
</apex:repeat>
</select>
</td>
</tr>
</table>
</apex:pageBlock>
</td>
<td valign="top">
<apex:pageBlock mode="edit" id="results">
<apex:pageBlockTable value="{!cases}" var="case">
<apex:column >
<apex:facet name="header">
<apex:commandLink value="Case Number" action="{!toggleSort}" rerender="results,debug">
<apex:param name="sortField" value="caseNumber" assignTo="{!sortField}"/>
</apex:commandLink>
</apex:facet>
<apex:outputLink value="/{!Case.Id}" target="_blank">{!Case.casenumber}</apex:outputLink>
</apex:column>
<apex:column >
<apex:facet name="header">
<apex:commandLink value="BU" action="{!toggleSort}" rerender="results,debug">
<apex:param name="sortField" value="Business_Unit__c" assignTo="{!sortField}"/>
</apex:commandLink>
</apex:facet>
<apex:outputField value="{!case.Business_Unit__c}"/>
</apex:column>
<apex:column >
<apex:facet name="header">
<apex:commandLink value="Site Account" action="{!toggleSort}" rerender="results,debug">
<apex:param name="sortField" value="Site_Account__r.name" assignTo="{!sortField}"/>
</apex:commandLink>
</apex:facet>
<apex:outputField value="{!case.Site_Account__r.name}"/>
</apex:column>
<apex:column >
<apex:facet name="header">
<apex:commandLink value="Product Family" action="{!toggleSort}" rerender="results,debug">
<apex:param name="sortField" value="Product_Family__c" assignTo="{!sortField}"/>
</apex:commandLink>
</apex:facet>
<apex:outputField value="{!case.Product_Family__c}"/>
</apex:column>
</apex:pageBlockTable>
</apex:pageBlock>
</td>
</tr>
</table>
<apex:pageBlock title="Debug - SOQL" id="debug">
<apex:outputText value="{!debugSoql}" />
</apex:pageBlock>
</apex:pageBlock>
</apex:form>
</apex:page>
Here is the test code that I am trying to use, the error is "Error: Compile Error: Variable does not exist: sources at line 25 column 15" and the line it is referring to is "testSources = controller.sources;"
@isTest
private class theCaseSearchController {
static testMethod void testSearchController() {
//instantiate a page
PageReference pg = Page.Case_Search_auto;
Test.setCurrentPage(pg);
pg.getParameters().put('caseNumber', '999999');
pg.getParameters().put('bu', 'test MC');
pg.getParameters().put('accountSite', 'test acct site');
pg.getParameters().put('productFamily', 'test prod family');
// instantiate the controller
CaseSearchController controller=new CaseSearchController();
System.assert(controller.runSearch() == null);
String testDebugSoql = controller.debugSoql;
controller.toggleSort();
System.assertequals (controller.sortDir, 'desc');
List<String> testSources = new List<String>();
testSources = controller.sources;
System.assertequals (testSources[0], 'vesta');
//to test the catch clause we need to make the query fail
controller.sortField = 'badfield';
controller.runQuery();
}
}
Any help is greatly apprechiated!!Thanks, Linda

- Linda Bliss dev
- June 10, 2015
- Like
- 0