Newer Version Available

This content describes an older version of this product. View Latest

SoqlStubProvider Class

Contains a method to create a mock test class for handling SOQL query responses for Data Cloud data model objects (DMOs).

Namespace

System

Usage

To create mock test classes, extend the SoqlStubProvider class and override the handleSoqlQuery() class method.

SOQL For Loops in Apex aren't supported for SOQL stubs in static or dynamic SOQL queries against DMOs.

Note

Example

This example shows a mock test class for the SkyMilesForBusinessOptInController class.

1@IsTest
2public class SkyMilesForBusinessOptInController_Test {
3
4    @IsTest
5    public static void mockSoql() {
6    
7        SoqlStubProvider stub = new UnifiedIndividualSoqlStub();
8        Test.createSoqlStub(UnifiedIndividualSoqlStub__dlm.sObjectType, stub);
9
10        Assert.isTrue(Test.isSoqlStubDefined(UnifiedIndividualSoqlStub__dlm.sObjectType));
11        
12        Test.startTest();
13        string companyId = 'SampleCompanyId';
14        // Performs SOQL query against Data Model Object
15        List<SkyMilesMember> members = SkyMilesForBusinessOptInController.getSkyMilesProfilesFromDataCloud(companyId);
16        
17        Test.stopTest();
18        
19        Assert.areEqual(1, members.size());
20        
21        SkyMilesMember member = members[0];
22        
23        Assert.areEqual(companyId, member.CompanyId);
24        Assert.areEqual(5000, member.SkyMilesBalance);
25    }
26    
27    class UnifiedIndividualSoqlStub extends SoqlStubProvider {
28        public override List<sObject> handleSoqlQuery(sObjectType sot, string stubbedQuery, Map<string, object> bindVars) {
29        
30            Assert.areEqual(UnifiedIndividual__dlm.sObjectType, sot);
31            
32            // Stub assumes that the SOQL query is searching for a single record by company id
33
34            string companyId = 'Default';
35            if(bindVars.containsKey('tmpVar1')) {
36                companyId = (string)bindVars.get('tmpVar1');
37            }
38                     
39            UnifiedIndividual__dlm dmo = (UnifiedIndividual__dlm)Test.createStubQueryRow(
40                sot, 
41                new Map<string, object> {
42                    'ssot__FirstName__c' => 'Codey',
43                    'ssot__LastName__c' => 'Bear',
44                    'ssot__Email__c' => 'developer@salesforce.com',
45                    'ssot__SkyMilesBalance__c' => 5000,
46                    'ssot__MedallionStatus__c' => 'Gold',
47                    'ssot__CompanyId__c' => companyId
48                  } 
49            );           
50            return new List<sObject> { dmo };
51
52        }
53    }
54}
1public with sharing class SkyMilesForBusinessOptInController {
2    public static List<SkyMilesMember> getSkyMilesProfilesFromDataCloud(String companyId) {
3        List<UnifiedIndividual__dlm> unifiedIndividuals = [
4          SELECT
5            Id,
6            ssot__FirstName__c,
7            ssot__LastName__c,
8            ssot__Email__c,
9            ssot__SkyMilesBalance__c,
10            ssot__MedallionStatus__c,
11            ssot__CompanyId__c
12          FROM UnifiedIndividual__dlm
13          WHERE ssot__CompanyId__c = :companyId
14        ];
15        List<SkyMilesMember> skyMilesMembers = new List<SkyMilesMember>();
16        for (UnifiedIndividual__dlm individual : unifiedIndividuals) {
17          skyMilesMembers.add(
18            new SkyMilesMember(
19              individual.Id,
20              individual.ssot__FirstName__c,
21              individual.ssot__LastName__c,
22              individual.ssot__Email__c,
23              individual.ssot__SkyMilesBalance__c,
24              individual.ssot__MedallionStatus__c,
25              individual.ssot__CompanyId__c
26            )
27          );
28        }
29        return skyMilesMembers;
30    }
31}
32
33
34
35

SoqlStubProvider Methods

The following are methods for SoqlStubProvider.

handleSoqlQuery(targetType, stubbedQuery, bindMap)

Defines a mocked response for a SOQL query executed against the specified SObject type.

Signature

public List<SObject> handleSoqlQuery(Schema.SObjectType targetType, String stubbedQuery, Map<String,Object> bindMap)

Parameters

targetType
Type: Schema.SObjectType
The SObject type to be stubbed. This parameter can’t be null.
stubbedQuery
Type: String
The SOQL query whose response is to be stubbed. Bind variables are replaced with placeholders.
bindMap
Type: Map<String,Object>
A map that contains placeholder keys for each bind variable specified in the SOQL query string and its value.

Return Value

Type: List<SObject>

The list of stubbed SObjects resulting from the SOQL query.