2010年4月9日金曜日

[SFDC]:カスタマーポータルinApexTest

カスタマーポータルのUserが作成されたらうんたらかんたらするという
処理を作成しました。

テストメソッドで、あれ?どうすんの?と思ったので、メモ
// Userのトリガー
trigger UserTrigger on User (after insert) {
  // ユーザ作成後にオブジェクトを作成する。
  UserInsertExecute.insertUserInfo(Trigger.newMap.keySet());
}

UserInsertExecute クラス
@future
public static void insertUserInfo(Set ids) {
  User user = [Select Id,CompanyName,LastName,FirstName,Department
@futureが必要みたい。理由はググって教えてください。

というような、処理。以下テスト
private static final String TEST_EMAIL = 'hogehoge@exsample.com';

private static final String TEST_ACCOUNT_NAME = 'ApexAccountName';
private static final String TEST_CONTACT_LASTNAME = 'ApexContactLASTNAME';
private static final String TEST_CONTACT_FIRSTNAME = 'ApexContactFIRSTNAME';
private static final String TEST_USER_ALIAS = '別名';

Account acc = new Account(Name=TEST_ACCOUNT_NAME);
insert acc;
System.debug('■acc : ' + acc.Id);
Contact con = new Contact(
  AccountId = acc.Id
  ,LastName = TEST_CONTACT_LASTNAME
  ,FirstName = TEST_CONTACT_FIRSTNAME
  ,CanAllowPortalSelfReg = true
);
insert con;
System.debug('■con : ' + con.Id);
Profile pro = [Select name, id From Profile where UserLicense.Name like '%Customer Portal%' LIMIT 1];
User u = new User(
  Username = TEST_EMAIL
  ,LastName = TEST_CONTACT_LASTNAME
  ,Alias = TEST_USER_ALIAS
  ,TimeZoneSidKey = 'Asia/Tokyo'
  ,LocaleSidKey = 'ja_JP'
  ,EmailEncodingKey = 'ISO-2022-JP'
  ,LanguageLocaleKey = 'ja'
  ,Email = TEST_EMAIL
  ,CommunityNickname = 'CommunityNickname'
  ,ContactId = con.Id
  ,ProfileId = pro.Id
);
insert u;
参考:Provisioning Customer Portal Users with Apex

0 件のコメント: