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

Need help in Test class for external datasource
Hi All,
I am weak in writing test class. I have written a controller class related to external object. I want to write test class for the same.
This is my controller class
Thanks in Advance
I am weak in writing test class. I have written a controller class related to external object. I want to write test class for the same.
This is my controller class
global class DataSourcCon extends DataSource.Connection { public String LookupUrl {get; set;} global DataSourcCon(DataSource.ConnectionParams connectionParams) { } global DataSourcCon(DataSource.ConnectionParams connectionParams, String baseURL) { LookupUrl = baseURL; } override public DataSource.TableResult query(DataSource.QueryContext context) { String SOQLObject = context.tableSelection.columnsSelected.get(0).tableName; DataSource.Filter filter = context.tableSelection.filter; String validslordNumber = '666'; String validgoId = '900'; List<Map<String,String>> resultMap=new List<Map<String,String>>(); if(SOQLObject == 'sp_ord') { IntClass intdord = new IntClass(); IntClass.SearchParameters searchParameter = new IntClass.SearchParameters(); if(filter != null && filter.columnName != null && filter.columnValue != null) { if(filter.columnName == 'g_o_Id') { searchParameter.oppgRecId = String.valueof(filter.columnValue); } else if(filter.columnName == 'sl_ord_number') { searchParameter.slordNumber = String.valueof(filter.columnValue); } } else { searchParameter.oppgRecId = validgoId; } intdord.searchParam = searchParameter; IntWrap.SearchslordResponse resp = null; IntServ service = new IntServ(); resp = (IntWrap.SearchslordResponse) service.getordchapByCriteria(intdord); IntViHel helper=new IntViHel(); resultMap = helper.getResponseDataAsListMap(resp); return DataSource.TableResult.get(context,resultMap); } else if(SOQLObject == 'chap') { IntClass intdchap = new IntClass(); IntClass.SearchParameters searchParameter = new IntClass.SearchParameters(); if(filter != null && filter.columnName != null && filter.columnValue != null) { if(filter.columnName == 'g_o_Id') { searchParameter.oppgRecId = String.valueof(filter.columnValue); } else if(filter.columnName == 'sp_ord') { searchParameter.slordNumber = String.valueof(filter.columnValue); } } else { searchParameter.oppgRecId = validgoId; } intdchap.searchParam = searchParameter; IntWrap.SearchslordResponse resp = null; IntServ service = new IntServ(); resp = (IntWrap.SearchslordResponse) service.getordchapByCriteria(intdchap); IntViHel helper=new IntViHel(); resultMap = helper.getResponseDataAsListMap(resp); return DataSource.TableResult.get(context,resultMap); } else { return null; } } public DataSource.TableResult queryfromDBC(DataSource.QueryContext context) { System.PageReference lookupURL = Apexpages.currentPage(); if (context.tableSelection.columnsSelected.size() == 1 && context.tableSelection.columnsSelected.get(0).aggregation == DataSource.QueryAggregation.COUNT) { List<Map<String,Object>> rows = getRows(context); List<Map<String,Object>> response = DataSource.QueryUtils.filter(context, getRows(context)); List<Map<String, Object>> countResponse = new List<Map<String, Object>>(); Map<String, Object> countRow = new Map<String, Object>(); countRow.put(context.tableSelection.columnsSelected.get(0).columnName,response.size()); countResponse.add(countRow); return DataSource.TableResult.get(context,countResponse); } else { List<Map<String,Object>> filteredRows = DataSource.QueryUtils.filter(context, getRows(context)); List<Map<String,Object>> filteredRowsCustom = filterRows(context, getRows(context)); List<Map<String,Object>> sortedRows = DataSource.QueryUtils.sort(context, filteredRows); List<Map<String,Object>> limitedRows = DataSource.QueryUtils.applyLimitAndOffset(context,sortedRows); return DataSource.TableResult.get(context, limitedRows); } } override global List<DataSource.TableResult> search(DataSource.SearchContext c) { List<DataSource.TableResult> results = new List<DataSource.TableResult>(); for (DataSource.TableSelection tableSelection : c.tableSelections) { results.add(DataSource.TableResult.get(tableSelection, findRows(c))); } return results; } global override List<DataSource.UpsertResult> upsertRows(DataSource.UpsertContext context) { if (context.tableSelected == 'Sample') { List<DataSource.UpsertResult> results = new List<DataSource.UpsertResult>(); List<Map<String, Object>> rows = context.rows; for (Map<String, Object> row : rows){ HttpResponse response; if (row.get('ExternalId') == null){ response = null; } else { response = null; } Map<String, Object> m = (Map<String, Object>)JSON.deserializeUntyped( response.getBody()); if (response.getStatusCode() == 200){ results.add(DataSource.UpsertResult.success( String.valueOf(m.get('id')))); } else { results.add(DataSource.UpsertResult.failure( String.valueOf(m.get('id')), 'The callout resulted in an error: ' + response.getStatusCode())); } } return results; } return null; } global override List<DataSource.DeleteResult> deleteRows(DataSource.DeleteContext context) { if (context.tableSelected == 'Sample'){ List<DataSource.DeleteResult> results = new List<DataSource.DeleteResult>(); for (String externalId : context.externalIds){ HttpResponse response = null; if (response.getStatusCode() == 200){ results.add(DataSource.DeleteResult.success(externalId)); } else { results.add(DataSource.DeleteResult.failure(externalId, 'Callout delete error:' + response.getBody())); } } return results; } return null; } private DataSource.DataType getFieldDataType(String dataType) { DataSource.DataType fieldType; if(dataType == 'Checkbox') fieldType = DataSource.DataType.BOOLEAN_TYPE; else if(dataType == 'Date/Time') fieldType = DataSource.DataType.DATETIME_TYPE; else if(dataType == 'Lookup Relationship') fieldType = DataSource.DataType.LOOKUP_TYPE; else if(dataType == 'External lookup relationship') fieldType = DataSource.DataType.EXTERNAL_LOOKUP_TYPE; else if(dataType == 'Indirect lookup relationship') fieldType = DataSource.DataType.INDIRECT_LOOKUP_TYPE; else if(dataType == 'Number') fieldType = DataSource.DataType.NUMBER_TYPE; else if(dataType == 'Text (40)') fieldType = DataSource.DataType.STRING_SHORT_TYPE; else if(dataType == 'Text Area (255)') fieldType = DataSource.DataType.STRING_LONG_TYPE; else if(dataType == 'Text Area Long (32768)') fieldType = DataSource.DataType.STRING_LONG_TYPE; else if(dataType == 'URL') fieldType = DataSource.DataType.URL_TYPE; return fieldType; } private DataSource.Column setupCustomFieldData(ext_External_Field__c extField) { DataSource.DataType fieldType = getFieldDataType(extField.Data_Type__c); DataSource.Column fieldData; Integer fieldLength = 0; Integer fieldDecimalsLength = 0; if(fieldType == DataSource.DataType.NUMBER_TYPE) { fieldLength = ((extField.Length__c + extField.Decimal_Places__c) <= 18) ? Integer.valueof(extField.Length__c) : 16; fieldDecimalsLength = ((extField.Length__c + extField.Decimal_Places__c) <= 18) ? Integer.valueof(extField.Decimal_Places__c) : 2; } else if(fieldType == DataSource.DataType.STRING_SHORT_TYPE) { fieldLength = (extField.Data_Type__c == 'Text (40)') ? 40 : 255; } else if(fieldType == DataSource.DataType.STRING_LONG_TYPE) { fieldLength = 32768; } if(fieldType == DataSource.DataType.LOOKUP_TYPE) { fieldData = DataSource.Column.lookup(extField.Name, extField.ReferenceTo__c); } else if(fieldType == DataSource.DataType.EXTERNAL_LOOKUP_TYPE) { fieldData = DataSource.Column.externalLookup(extField.Name, extField.ReferenceTo__c); } else if(fieldType == DataSource.DataType.INDIRECT_LOOKUP_TYPE) { fieldData = DataSource.Column.indirectLookup(extField.Name, extField.ReferenceTo__c, extField.ReferenceTargetField__c); } else if(fieldType != DataSource.DataType.LOOKUP_TYPE && fieldType != DataSource.DataType.EXTERNAL_LOOKUP_TYPE && fieldType != DataSource.DataType.INDIRECT_LOOKUP_TYPE) { fieldData = DataSource.Column.get(extField.Name, extField.Field_Label__c, extField.Description__c, extField.Sortable__c, extField.Filterable__c, fieldType, fieldLength, fieldDecimalsLength, null, null); } return fieldData; } private DataSource.Table setupTableData(ext_External_Object__c extObj, List<DataSource.Column> columns_extObj) { DataSource.Table extObj_Table = new DataSource.Table(); extObj_Table.labelSingular = extObj.Label_Singular__c; extObj_Table.labelPlural = extObj.Label_Plural__c; extObj_Table.name = extObj.Name; extObj_Table.description = extObj.Description__c; extObj_Table.nameColumn = extObj.Name_Column__c; extObj_Table.columns = columns_extObj; return extObj_Table; } private List<Map<String,Object>> filterRows(DataSource.QueryContext context, List<Map<String,Object>> allRows){ List<Map<String,Object>> objRowList = new List<Map<String,Object>>(); DataSource.TableSelection tableSelection=null; String tableName = null; if(context != null){ tableSelection = context.tableSelection; tableName=tableSelection.tableSelected; if(tablename.equalsIgnoreCase('sp_ord')) { } } return objRowList; } private List<Map<String,Object>> getObjRows(DataSource.QueryContext c){ List<Map<String,Object>> objRowList=new List<Map<String,Object>>(); DataSource.TableSelection tableSelection=null; String tableName=null; if(c!=null){ tableSelection=c.tableSelection; tableName=tableSelection.tableSelected; } return objRowList; } private List<Map<String,Object>> getRows(DataSource.ReadContext context) { List<Map<String, Object>> rows = new List<Map<String, Object>>(); DataSource.QueryContext myContext = (DataSource.QueryContext)context; DataSource.Filter filter = myContext.tableSelection.filter; return rows; } private List<Map<String,Object>> findRows(DataSource.ReadContext context) { List<Map<String, Object>> rows = new List<Map<String, Object>>(); DataSource.ReadContext myContext = (DataSource.ReadContext)context; return rows; } private Map<String,Object> foundRow(Map<String,Object> foundRow) { Map<String,Object> row = new Map<String,Object>(); row.put('ExternalId', string.valueOf(foundRow.get('Id'))); row.put('DisplayUrl', string.valueOf(foundRow.get('DisplayUrl'))); row.put('Name', string.valueOf(foundRow.get('Name'))); return row; } private static HttpResponse makeGetCallout() { Http h = new Http(); HttpRequest req = new HttpRequest(); req.setEndpoint('https://test.com'); req.setMethod('GET'); HttpResponse response=h.send(req); return response; } }Please help me how to write test class for this
Thanks in Advance
Below blog will help you to write test class for Connection and Provider classes.
Link: https://nealhobert.wordpress.com/2017/07/28/salesforce-connect-custom-adapter-part-3-test-classes/
Thanks,
Suraj