You need to sign in to do that
Don't have an account?

Test class for lookup controller?
Hi,
can you please help me test class
public with sharing class LookupController {
/* Method to query records using SOSL*/
@AuraEnabled
public static String search(String objectAPIName, String searchText,
List<String> whereClause, List<String> extrafields){
objectAPIName = String.escapeSingleQuotes(objectAPIName);
searchText = String.escapeSingleQuotes(searchText);
String searchQuery = 'FIND \'' + searchText + '*\' IN ALL FIELDS RETURNING ' + objectAPIName + '(Id,Name' ;
if(!extrafields.isEmpty()){
searchQuery = searchQuery + ',' + String.join(extrafields, ',') ;
}
system.debug(whereClause);
if(!whereClause.isEmpty()){
searchQuery = searchQuery + ' WHERE ' ;
searchQuery = searchQuery + String.join(whereClause, 'AND') ;
}
searchQuery = searchQuery + ' LIMIT 10 ) ';
system.debug(searchQuery);
return JSON.serializePretty(search.query(searchQuery)) ;
}
/* Method to query records using SOQL*/
@AuraEnabled
public static List<SObject> getRecentlyViewed(
String objectAPIName,
List<String> whereClause,
List<String> extrafields){
String searchQuery = 'SELECT Id, Name';
if(!extrafields.isEmpty()){
searchQuery = searchQuery + ',' + String.join(extrafields, ',') ;
}
//searchQuery = searchQuery + ' FROM ' + objectAPIName + ' WHERE LastViewedDate != NULL ';
searchQuery = searchQuery + ' FROM ' + objectAPIName ;
if(!whereClause.isEmpty()){
searchQuery = searchQuery + ' AND ' ;
searchQuery = searchQuery + String.join(whereClause, 'AND') ;
system.debug(searchQuery);
}
searchQuery = searchQuery + ' ORDER BY LastViewedDate DESC LIMIT 10 ' ;
List<SObject> objectList = new List<SObject>();
system.debug('-----------------------'+searchQuery);
objectList = Database.query(searchQuery);
return objectList;
}
}
Thanks
can you please help me test class
public with sharing class LookupController {
/* Method to query records using SOSL*/
@AuraEnabled
public static String search(String objectAPIName, String searchText,
List<String> whereClause, List<String> extrafields){
objectAPIName = String.escapeSingleQuotes(objectAPIName);
searchText = String.escapeSingleQuotes(searchText);
String searchQuery = 'FIND \'' + searchText + '*\' IN ALL FIELDS RETURNING ' + objectAPIName + '(Id,Name' ;
if(!extrafields.isEmpty()){
searchQuery = searchQuery + ',' + String.join(extrafields, ',') ;
}
system.debug(whereClause);
if(!whereClause.isEmpty()){
searchQuery = searchQuery + ' WHERE ' ;
searchQuery = searchQuery + String.join(whereClause, 'AND') ;
}
searchQuery = searchQuery + ' LIMIT 10 ) ';
system.debug(searchQuery);
return JSON.serializePretty(search.query(searchQuery)) ;
}
/* Method to query records using SOQL*/
@AuraEnabled
public static List<SObject> getRecentlyViewed(
String objectAPIName,
List<String> whereClause,
List<String> extrafields){
String searchQuery = 'SELECT Id, Name';
if(!extrafields.isEmpty()){
searchQuery = searchQuery + ',' + String.join(extrafields, ',') ;
}
//searchQuery = searchQuery + ' FROM ' + objectAPIName + ' WHERE LastViewedDate != NULL ';
searchQuery = searchQuery + ' FROM ' + objectAPIName ;
if(!whereClause.isEmpty()){
searchQuery = searchQuery + ' AND ' ;
searchQuery = searchQuery + String.join(whereClause, 'AND') ;
system.debug(searchQuery);
}
searchQuery = searchQuery + ' ORDER BY LastViewedDate DESC LIMIT 10 ' ;
List<SObject> objectList = new List<SObject>();
system.debug('-----------------------'+searchQuery);
objectList = Database.query(searchQuery);
return objectList;
}
}
Thanks
Thanks,let us know if it helps you
http://sfdcMonkey.com
Small change in your class also in line 41. You have used the AND instead of Where.
Please change the class first as like below then run the test class.
The below test class give 100% coverage.
@isTest
public class LookupControllerTest {
static testMethod void testMethodOne() {
List<string> lstExtraFields = new List<string>();
lstExtraFields.add('Phone');
List<string> lstWhere = new List<string>();
lstWhere.add('Id != Null');
LookupController.search('Account', 'test',lstWhere,lstExtraFields);
LookupController.getRecentlyViewed('Account',lstWhere, lstExtraFields);
}
}
===================
public with sharing class LookupController {
/* Method to query records using SOSL*/
@AuraEnabled
public static String search(String objectAPIName, String searchText,
List<String> whereClause, List<String> extrafields){
system.debug('@@@ whereClause = '+whereClause);
system.debug('@@@ whereClause = '+whereClause[0]);
objectAPIName = String.escapeSingleQuotes(objectAPIName);
searchText = String.escapeSingleQuotes(searchText);
String searchQuery = 'FIND \'' + searchText + '*\' IN ALL FIELDS RETURNING ' + objectAPIName + '(Id,Name' ;
if(!extrafields.isEmpty()){
searchQuery = searchQuery + ',' + String.join(extrafields, ',') ;
}
system.debug(whereClause);
if(!whereClause.isEmpty()){
searchQuery = searchQuery + ' WHERE ' ;
searchQuery = searchQuery + String.join(whereClause, ' AND') ;
}
searchQuery = searchQuery + ' LIMIT 10 ) ';
system.debug(searchQuery);
return JSON.serializePretty(search.query(searchQuery)) ;
}
/* Method to query records using SOQL*/
@AuraEnabled
public static List<SObject> getRecentlyViewed(
String objectAPIName,
List<String> whereClause,
List<String> extrafields){
system.debug('@@@ whereClause = '+whereClause);
system.debug('@@@ whereClause = '+whereClause[0]);
String searchQuery = 'SELECT Id, Name';
if(!extrafields.isEmpty()){
searchQuery = searchQuery + ',' + String.join(extrafields, ',') ;
}
//searchQuery = searchQuery + ' FROM ' + objectAPIName + ' WHERE LastViewedDate != NULL ';
searchQuery = searchQuery + ' FROM ' + objectAPIName ;
if(!whereClause.isEmpty()){
// searchQuery = searchQuery + ' AND ' ;
searchQuery = searchQuery + ' WHERE ' ;
searchQuery = searchQuery + String.join(whereClause, ' AND') ;
system.debug(searchQuery);
}
searchQuery = searchQuery + ' ORDER BY LastViewedDate DESC LIMIT 10 ' ;
List<SObject> objectList = new List<SObject>();
system.debug('-----------------------'+searchQuery);
objectList = Database.query(searchQuery);
return objectList;
}
}
Can you please Let me know if it helps or not!!!
If it helps don't forget to mark this as a best answer!!!
Thanks,
Maharajan.C
Below test class can fulfill your requirements. Hope this will work for you.
@isTest
private class AccountRecord_Test {
@isTest
static void Controller_Test(){
List<Account> accInsert=new List<Account>();
for(integer i=0;i<5;i++){
Account acc=new Account();
acc.Name='Test Account';
acc.Phone='9415825000';
acc.Billingcity='VNS';
acc.BillingPostalcode='221002';
accInsert.add(acc);
}
Insert accInsert;
List<string> newFieldList = new List<string>();
newFieldList.add('Phone');
List<string> lstSelect = new List<string>();
test.startTest();
LookupController.search('Account', 'Test Account',lstSelect,newFieldList);
LookupController.getRecentlyViewed('Account',lstSelect, newFieldList);
test.stopTest();
}
}
Please mark this as best answer if this solves your problem.
Thank you
Ajay Dubedi