Namespace
Usage
You provide mock column metadata and mock row data. The framework auto-generates the query submission and status responses from your mock data. Use setMockRows() to set a single page of results, or call enqueueMockRows() multiple times to simulate multi-page results. If you call cancel() in a test, any subsequent fetch against that query ID raises an exception in the mock layer, simulating production cancellation behavior.
Example
Set up a single-page mock and test an iterator:
@IsTest static void testBasicQuery() { sfsqlquery.SqlTester.clearMocks(); ConnectApi.QuerySqlMetadataItem col = new ConnectApi.QuerySqlMetadataItem(); col.name = 'Name__c'; col.type = ConnectApi.TypeEnum.VARCHAR; sfsqlquery.SqlTester.setMockMetadata(new List<ConnectApi.QuerySqlMetadataItem>{ col }); ConnectApi.QuerySqlRow mockRow = new ConnectApi.QuerySqlRow(); mockRow.rowData = new List<Object>{ 'Acme' }; sfsqlquery.SqlTester.setMockRows(new List<ConnectApi.QuerySqlRow>{ mockRow }); sfsqlquery.SqlRowIterator iterator = sfsqlquery.SqlStatement.create('SELECT Name__c FROM accounts__dlm', 'default') .execute(); Assert.isTrue(iterator.hasNext()); sfsqlquery.Row row = iterator.next(); Assert.areEqual('Acme', row.getString('Name__c')); }
SqlTester Methods
The following are methods for SqlTester.
clearMocks()
Signature
public static void clearMocks()
Return Value
Type: void
Example
Clear mocks at the start of each test:
@IsTest static void testMyQuery() { sfsqlquery.SqlTester.clearMocks(); // Set up fresh mocks for this test // ... test code ... }
enqueueMockRows(rows)
Signature
public static void enqueueMockRows(List<ConnectApi.QuerySqlRow> rows)
Parameters
-
rows:
Type: List<ConnectApi.QuerySqlRow>
List of ConnectApi.QuerySqlRow objects representing one page of results.
Return Value
Type: void
Example
Simulate multi-page results for SqlQueueable:
@IsTest static void testMultiPageQuery() { sfsqlquery.SqlTester.clearMocks(); // Set up metadata ConnectApi.QuerySqlMetadataItem col = new ConnectApi.QuerySqlMetadataItem(); col.name = 'Name__c'; col.type = ConnectApi.TypeEnum.VARCHAR; sfsqlquery.SqlTester.setMockMetadata(new List<ConnectApi.QuerySqlMetadataItem>{ col }); // Page 1 ConnectApi.QuerySqlRow page1Row = new ConnectApi.QuerySqlRow(); page1Row.rowData = new List<Object>{ 'Page 1 Data' }; sfsqlquery.SqlTester.enqueueMockRows(new List<ConnectApi.QuerySqlRow>{ page1Row }); // Page 2 ConnectApi.QuerySqlRow page2Row = new ConnectApi.QuerySqlRow(); page2Row.rowData = new List<Object>{ 'Page 2 Data' }; sfsqlquery.SqlTester.enqueueMockRows(new List<ConnectApi.QuerySqlRow>{ page2Row }); // Execute queueable - will process both pages Test.startTest(); System.enqueueJob(new MyQueryJob( sfsqlquery.SqlStatement.create('SELECT Name__c FROM accounts__dlm', 'default') )); Test.stopTest(); }
isRunningTest()
Signature
public static Boolean isRunningTest()
setMockMetadata(metadata)
Signature
public static void setMockMetadata(List<ConnectApi.QuerySqlMetadataItem> metadata)
Parameters
-
metadata:
Type: List<ConnectApi.QuerySqlMetadataItem>
List of ConnectApi.QuerySqlMetadataItem objects that define the column names and types for the mocked query results.
Return Value
Type: void
Example
Define column metadata for mocked results:
ConnectApi.QuerySqlMetadataItem idCol = new ConnectApi.QuerySqlMetadataItem(); idCol.name = 'Id__c'; idCol.type = ConnectApi.TypeEnum.VARCHAR; ConnectApi.QuerySqlMetadataItem amountCol = new ConnectApi.QuerySqlMetadataItem(); amountCol.name = 'Amount__c'; amountCol.type = ConnectApi.TypeEnum.DECIMAL; sfsqlquery.SqlTester.setMockMetadata(new List<ConnectApi.QuerySqlMetadataItem>{ idCol, amountCol });
setMockRows(rows)
Signature
public static void setMockRows(List<ConnectApi.QuerySqlRow> rows)
Parameters
-
rows:
Type: List<ConnectApi.QuerySqlRow>
List of ConnectApi.QuerySqlRow objects representing the single page of results to return.
Return Value
Type: void
Example
Set a single page of mock results:
ConnectApi.QuerySqlRow row1 = new ConnectApi.QuerySqlRow(); row1.rowData = new List<Object>{ 'acc-001', 1000.00 }; ConnectApi.QuerySqlRow row2 = new ConnectApi.QuerySqlRow(); row2.rowData = new List<Object>{ 'acc-002', 2500.50 }; sfsqlquery.SqlTester.setMockRows(new List<ConnectApi.QuerySqlRow>{ row1, row2 });