- 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