Skip to content

Instantly share code, notes, and snippets.

@mannharleen
Last active November 24, 2022 10:00
Show Gist options
  • Save mannharleen/5e58d0c2f3d841cf0d51ddd01d2acc11 to your computer and use it in GitHub Desktop.
Save mannharleen/5e58d0c2f3d841cf0d51ddd01d2acc11 to your computer and use it in GitHub Desktop.
Salesforce trailhead - Apex-Integration-Services-Apex-Web-Services
@RestResource(urlMapping='/Accounts/*/contacts')
global with sharing class AccountManager {
@HttpGet
global static account getAccount() {
RestRequest request = RestContext.request;
String accountId = request.requestURI.substring(request.requestURI.lastIndexOf('/')-18,
request.requestURI.lastIndexOf('/'));
List<Account> a = [select id, name, (select id, name from contacts) from account where id = :accountId];
List<contact> co = [select id, name from contact where account.id = :accountId];
system.debug('** a[0]= '+ a[0]);
return a[0];
}
}
@Istest(SeeAllData=true)
public class AccountManagerTest {
@IsTest
public static void testaccountmanager() {
RestRequest request = new RestRequest();
request.requestUri = 'https://mannharleen-dev-ed.my.salesforce.com/services/apexrest/Accounts/00190000016cw4tAAA/contacts';
request.httpMethod = 'GET';
RestContext.request = request;
system.debug('test account result = '+ AccountManager.getAccount());
}
}
@vyuvalv
Copy link

vyuvalv commented May 3, 2018

@istest
public class AccountManagerTest {

@isTest static void testGetAccount() {
    Id recordId = createTestRecord();
    // Set up a test request
    RestRequest request = new RestRequest();
    request.requestUri =
        'https://resourceful-badger-76636-dev-ed.my.salesforce.com/services/apexrest/Accounts/'+recordId+'/contacts'
        + recordId;
    request.httpMethod = 'GET';
    RestContext.request = request;
    // Call the method to test
    Account thisAcc = AccountManager.getAccount();
    // Verify results
    System.assert(thisAcc != null);
    System.assertEquals('Test record', thisAcc.Name);
}

// Helper method
static Id createTestRecord() {
    // Create test record
    Account accTest = new Account(
        Name='Test record');
    insert accTest;
    return accTest.Id;
}     

}

@davidrobertslogicom
Copy link

In getAccount, Lei Shi (https://developer.salesforce.com/forums/?id=906F0000000MIs9IAG) suggests

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

@fernajskod
Copy link

@istest
public 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
);
return accountTest.Id;
}
}

@fernajskod
Copy link

@RestResource(urlMapping='/Accounts/*/contacts')
global with sharing class AccountManager {
@httpget
global static Account getAccount(){
RestRequest request=RestContext.request;
String accountId=request.requestURI.substringBetween('Account/','/contacts');
Account result=[Select Id, Name, (Select Id, Name from Contacts) from Account where Id=:accountId];
return result;
}
}

@AfreedSfdc
Copy link

Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment