function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Akhil Katkam 5Akhil Katkam 5 

test class for lookup field apex class

Hi developer Community , 
i have an apex class , and also i have test class for this apex class , but it is not covering few lines of code , can anyone please check the test class and help me with the solution
 
public with Sharing class lookupfieldController {    
    @AuraEnabled
    public static List<sObject> GetRecentRecords(String ObjectName, List<String> ReturnFields, Integer MaxResults) {
        
        List<Id> recentIds = new List<Id>();
        for(RecentlyViewed recent : [SELECT Id FROM RecentlyViewed WHERE Type = :ObjectName ORDER BY LastViewedDate DESC LIMIT :MaxResults]) {
            recentIds.add(recent.Id);
        }
        
        
        String sQUERY = 'SELECT Id, ';

        if (ReturnFields != null && ReturnFields.Size() > 0) {
            sQuery += String.join(ReturnFields, ',');
        } else {
            sQuery += 'Name';   
        }
        
        sQuery += ' FROM ' + ObjectName + ' WHERE Id IN :recentIds';

        List<sObject> searchResult = Database.query(sQuery);
        
        return searchResult;
    }
    
    @AuraEnabled
    public static List<sObject> SearchRecords(String ObjectName, List<String> ReturnFields, List<String> QueryFields, String SearchText, String SortColumn, String SortOrder, Integer MaxResults, String Filter) {
        
        //always put a limit on the results
        if (MaxResults == null || MaxResults == 0) {
            MaxResults = 20;
        }
        
        SearchText = '%' + SearchText + '%';
        
        List <sObject> returnList = new List <sObject> ();
        
        String sQuery =  'SELECT Id, ';
        
        if (ReturnFields != null && ReturnFields.Size() > 0) {
            sQuery += String.join(ReturnFields, ',');
        } else {
            sQuery += 'Name';   
        }
        
        sQuery += ' FROM ' + ObjectName + ' WHERE ';
        
        if (QueryFields == null || QueryFields.isEmpty()) {
            sQuery += ' Name LIKE :SearchText ';
        } else {
            string likeField = '';
            for(string field : QueryFields) {
                likeField += ' OR ' + field + ' LIKE :SearchText ';    
            }
            sQuery += ' (' + likeField.removeStart(' OR ') + ') ';
        }
        
        if (Filter != null) {
            sQuery += ' AND (' + Filter + ')';
        }
        
        if(string.isNotBlank(SortColumn) && string.isNotBlank(SortOrder)) {
            sQuery += ' ORDER BY ' + SortColumn + ' ' + SortOrder;
        }
        
        sQuery += ' LIMIT ' + MaxResults;
        
        System.debug(sQuery);
        
        List <sObject> searchResult = Database.query(sQuery);
        
        return searchResult;
    }
    
    @AuraEnabled
    public static List<sObject> GetRecord(String ObjectName, List<String> ReturnFields, String Id) {
        String sQUERY = 'SELECT Id, ';

        if (ReturnFields != null && ReturnFields.Size() > 0) {
            sQuery += String.join(ReturnFields, ',');
        } else {
            sQuery += 'Name';   
        }
        
        sQuery += ' FROM ' + ObjectName + ' WHERE Id = :Id';

        List<sObject> searchResult = Database.query(sQuery);
        
        return searchResult;
    }
    
    @AuraEnabled
    public static string findObjectIcon(String ObjectName) {    
        String u;
        List<Schema.DescribeTabResult> tabDesc = new List<Schema.DescribeTabResult>();
        List<Schema.DescribeIconResult> iconDesc = new List<Schema.DescribeIconResult>();
        
        for(Schema.DescribeTabSetResult describeTabSetResult : Schema.describeTabs()) {
            for(Schema.DescribeTabResult describeTabResult : describeTabSetResult.getTabs()) {
                if(describeTabResult.getSobjectName() == ObjectName) { 
                    if( describeTabResult.isCustom() == true ) {
                        for (Schema.DescribeIconResult describeIcon : describeTabResult.getIcons()) {
                            if (describeIcon.getContentType() == 'image/svg+xml'){
                                return 'custom:' + describeIcon.getUrl().substringBetween('custom/','.svg').substringBefore('_');
                            }
                        }
                    } else {
                        return 'standard:' + ObjectName.toLowerCase();
                    }
                }
            }
        }

        return 'standard:default';
    }
    
    @AuraEnabled
    public static objectDetails getObjectDetails(String ObjectName) {    

        objectDetails details = new objectDetails();
        
        Schema.DescribeSObjectResult describeSobjectsResult = Schema.describeSObjects(new List<String>{ObjectName})[0];

        details.label = describeSobjectsResult.getLabel();
        details.pluralLabel = describeSobjectsResult.getLabelPlural();

        details.iconName = findObjectIcon(ObjectName);
        
        return details;
    }
    
    public class objectDetails {
        @AuraEnabled
        public string iconName;
        @AuraEnabled
        public string label;
        @AuraEnabled
        public string pluralLabel;
    }
}

test clas:
@isTest
public class lookupfieldController_Test {
    //This test class just ensures that there is enough code coverage
    //to get the component into production from your sandbox
    //it does not perform any validations.
    static testMethod void testLookupField() {
        List<string> returnFields = new List<string> {'Name'};
            Account acc = new Account();
        acc.Name='test';
        acc.Industry='Banking';
        insert acc;
        Account a = [SELECT Id,Name FROM Account LIMIT 1];
		    lookupfieldController.getObjectDetails('Account');
        lookupfieldController.GetRecentRecords('Account', returnFields, 5);
        lookupfieldController.SearchRecords('Account', returnFields, returnFields, '', 'Name', 'ASC', 5, 'CreatedDate > 2001-01-01T00:00:01Z');
        lookupfieldController.GetRecord('Account', returnFields, a.Id);
    }
}

User-added imageUser-added imagethese lines are not covering , please help me with any ideas
Best Answer chosen by Akhil Katkam 5
Suraj Tripathi 47Suraj Tripathi 47
Hi,

Please follow the below code, this will cover 93% :- 
@isTest
public class lookupfieldController_Test {
    
    static testMethod void testLookupField() {
        List<string> returnFields = new List<string> {'Name'};
            List<string> returnFields1 = new List<string>();
   
        Account acc = new Account();
        acc.Name='test';
        acc.Industry='Banking';
        insert acc;
        Account a = [SELECT Id,Name FROM Account LIMIT 1];
        
        lookupfieldController.getObjectDetails('Account');
        
        lookupfieldController.GetRecentRecords('Account', returnFields, 5);
        lookupfieldController.GetRecentRecords('Account', returnFields1, 5);
        lookupfieldController.SearchRecords('Account', returnFields, returnFields, '', 'Name', 'ASC', 5, 'CreatedDate > 2001-01-01T00:00:01Z');
        lookupfieldController.SearchRecords('Account', returnFields1, returnFields1, '', 'Name', 'ASC', null, 'CreatedDate > 2001-01-01T00:00:01Z');
        
        lookupfieldController.GetRecord('Account', returnFields, a.Id);
        lookupfieldController.GetRecord('Account', returnFields1, a.Id);
     
    }
}
Please mark it as Best Answer if it helps you.

Thanks & Regards
Suraj Tripathi

 

All Answers

Suraj Tripathi 47Suraj Tripathi 47
Hi,

Please follow the below code, this will cover 93% :- 
@isTest
public class lookupfieldController_Test {
    
    static testMethod void testLookupField() {
        List<string> returnFields = new List<string> {'Name'};
            List<string> returnFields1 = new List<string>();
   
        Account acc = new Account();
        acc.Name='test';
        acc.Industry='Banking';
        insert acc;
        Account a = [SELECT Id,Name FROM Account LIMIT 1];
        
        lookupfieldController.getObjectDetails('Account');
        
        lookupfieldController.GetRecentRecords('Account', returnFields, 5);
        lookupfieldController.GetRecentRecords('Account', returnFields1, 5);
        lookupfieldController.SearchRecords('Account', returnFields, returnFields, '', 'Name', 'ASC', 5, 'CreatedDate > 2001-01-01T00:00:01Z');
        lookupfieldController.SearchRecords('Account', returnFields1, returnFields1, '', 'Name', 'ASC', null, 'CreatedDate > 2001-01-01T00:00:01Z');
        
        lookupfieldController.GetRecord('Account', returnFields, a.Id);
        lookupfieldController.GetRecord('Account', returnFields1, a.Id);
     
    }
}
Please mark it as Best Answer if it helps you.

Thanks & Regards
Suraj Tripathi

 
This was selected as the best answer
Akhil Katkam 5Akhil Katkam 5
Thank you tripathi, yes it covered 93%, can u please help me with remaining code which needed to be covered or any suggestion how to cover that 

User-added image

these lines are not covering,

thanks in advance