Salesforceライセンスが変わったら、何かが起きた!その1【Salesforce】

読者の皆様、どうも~ コムコム.comです。

最近ヘルプで入ったプロジェクトで、遭遇したなんじゃこりゃな話です。

ヘルプ内容は、アンケート投稿機能の改修で、既存のVisualforceとApexで構成された画面を丸コピーして、別のアンケート用に書き換えると言う簡単な内容でした。

実装も終わりテストコードのコードカバー率が90%越えたのを確認して、いざ本番にリリースしたら、テストコードのコードカバー率エラーでリリース出来ない状態に・・・。

作成したソースコードに不備がないか、Sandbox環境を調査しても原因が見つからず(そもそもSandbox環境で90%越えているので調べようがない)、ソースコードではなく、環境に原因があると判断し、新しく調査用にSandbox環境を1つ作成しました。

作成したSandbox環境に該当のソースをリリースして、テストコードを実行したら、コードカバー率が42%と明らかに不足していることが判明しました。

さて、原因を色々と調査すること数時間(メタデータ全部取得して差分取ったり)、やっとこ見つかりました。

テストコードの中で、ユーザレコード作成の為にプロファイルを指定していたのですが、いつのまにか本番環境でライセンス変更があり、使えるプロファイルが変わっていました。

Salesforceのプロファイルを格納しているオブジェクトには古いプロファイルの情報が残っているので、本番環境でもテストコードはエラーなく通りますが、ライセンス上使えないプロファイルを使おうとしたため、ユーザが作成出来ず、テストコードがSandbox環境で実行した時と異なる動作をしました。

ヘルプで入ったために、本番環境とSandbox環境の差になかなか気付けなかった話でした。

ちなみに、この話には続きがあるのですが、それはまた次回にでも。