Apex Integration Services

 AccountManager.apxc

@RestResource(urlMapping='/Accounts/*/contacts')

global with sharing class AccountManager {

    @HttpGet

    global static Account getAccount() {

        RestRequest request = RestContext.request;

        // grab the caseId from the middle of the URL

        String accountId = request.requestURI.substringBetween('Accounts/','/contacts');

        Account result =  [SELECT Id, Name, (Select Id, Name from Contacts)

                           FROM Account

                           WHERE Id = :accountId];

        return result;

    }

}    

AccountManagerTest

@IsTest

private class AccountManagerTest {

    @isTest static void testGetContactsByAccountId() {

        Id recordId = createTestRecord();

        // Set up a test request

        RestRequest request = new RestRequest();

        request.requestUri =

            'https://yourInstance.salesforce.com/services/apexrest/Accounts/'+recordId+'/contacts';

        request.httpMethod = 'GET';

        RestContext.request = request;

        // Call the method to test

        Account thisAccount = AccountManager.getAccount();

        // Verify results

        

        System.assert(thisAccount != null);

        System.assertEquals('Test record', thisAccount.Name);

    }

    

    // Helper method

    static Id createTestRecord() {

        // Create test record

        Account accountTest = new Account(

            Name='Test record');

        insert accountTest;

        

        Contact contactTest = new Contact(

            FirstName = 'John',

            LastName='Doe',

            AccountId=accountTest.Id

        );

        insert contactTest;

        return accountTest.Id;

    }          

}

Comments

Popular posts from this blog

Apex REST Callouts - Create an Apex class that calls a REST endpoint and write a test class.

Apex SOAP Callouts - Generate an Apex class using WSDL2Apex and write a test class.

Control Processes with Queueable Apex - Create an Queueable Apex class that inserts Contacts for Accounts.