tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:Apex開発と取引先チームについて

Apex開発と取引先チームについてです。取引先チーム(AccountTeamMember)のテストデータはApexクラス内で作成することができます。


次のような感じです。

Apexクラス

f:id:tyoshikawa1106:20160113202707p:plain

/**
 * 取引先チームメンバー
 */
public static AccountTeamMember createAccountTeamMember(Account account, User user, Boolean isInsert) {
    AccountTeamMember accountTeamMember = new AccountTeamMember(
         AccountId = account.Id
        ,TeamMemberRole = 'Account Manager'
        ,UserId = user.Id
    );
    
    if (isInsert) {
        insert accountTeamMember;
    }
    return accountTeamMember;
}
Apexテストクラス

f:id:tyoshikawa1106:20160113202716p:plain

/**
 * 取引先チームメンバー
 */
static testMethod void createAccountTeamMemberTest() {
    
    System.runAs(testAdminUser) {
        Account account = CommonTester.createAccount(true);
        // レコード無しをチェック
        List<AccountTeamMember> testAccountTeamMembers = [SELECT Id FROM AccountTeamMember LIMIT 10];
        System.assertEquals(testAccountTeamMembers.size(), 0);
        
        Test.startTest();
        
        // INSERTなし
        AccountTeamMember result = CommonTester.createAccountTeamMember(account, testAdminUser, false);
        System.assertEquals(String.isEmpty(result.Id), true);
        
        // INSERTあり
        result = CommonTester.createAccountTeamMember(account, testAdminUser, true);
        System.assertEquals(String.isNotEmpty(result.Id), true);
        
        Test.stopTest();
        
         // レコードありをチェック
        List<AccountTeamMember> resultAccountTeamMembers = [SELECT Id FROM AccountTeamMember LIMIT 10];
        System.assertEquals(resultAccountTeamMembers.size(), 1);
    }
}


取引先チームオブジェクトはシステムオブジェクトではないので、基本的にはテストクラス内から既存組織のレコードにアクセスすることはできません。


テストクラス内でINSERTすることでテストデータとして扱うことができます。
f:id:tyoshikawa1106:20160113203151p:plain


取引先チームオブジェクトの詳細はこちらです。


さいごに組織で取引先チームを使うには事前に有効化する必要があります。
f:id:tyoshikawa1106:20160113203557p:plain