Search In This Blog

2024-05-07

Salesforce認定 AIアソシエイト合格体験記

Salesforce認定AIアソシエイト試験の合格体験記です。
〇試験について
難易度は低いです。誰も受験できます。
内容:多肢選択/複数選択方式の 40 問
試験時間:70 分
合格点:65 %(26 問以上で合格)
受験料:10,000 円(税抜)
再受験:無料試験

〇問題範囲について
AI の基本事項: 全問中 17%
CRM での AI 機能: 全問中 8%
AI の倫理的な考慮事項: 全問中 39%
AI 用のデータ: 全問中 36%

〇学習方法について
筆者は公式のTrailmixで勉強しました。一発合格です。
https://trailhead.salesforce.com/ja/users/strailhead/trailmixes/prepare-for-your-salesforce-ai-associate-credential
※Trailmix中のモジュールにある練習問題は実際試験中に出ました。
Trailmixの内容を理解できていれば、合格できると思います。元々AI知識を持っている人なら、「CRM での AI 機能」をメインに勉強すれば、簡単に合格できるかもしれません。

2024-04-24

Jest issue: Fix TypeError getAccountInfo(...).then is not a function (test apex class inside @wire method)

To mock an Apex class
import getAccountInfo from "@salesforce/apex/CustomCtrl.getAccountInfo"

@wire(getRecord,[...])
wireRecord() {
    getAccountInfo(accountId).then(do somethings)
}

Create the jest mock.
jest.mock(
    "@salesforce/apex/CustomCtrl.getAccountInfo",
    () => { return { default: jest.fn(), } }, { virtual: true }
)
 
But mocked apex is called inside of @wire method, then getAccountInfo(...).then is not a function error is happened. Need to fix the mock as below:
jest.mock(
    "@salesforce/apex/CustomCtrl.getAccountInfo",
    () => {
        return {
            default: jest.fn((data) => {
                let mockData;
                if (data.accountId == "0000000000") {
                    mockData = [{
                    "Id": "0011700000xxxxx000",
                    "Name": "test"
                    }];
                } else if (data.accountId == "0000000001") {
                    mockData = [{
                    "Id": "0011700000xxxxx001",
                    "Name": "test1"
                    }];
                }
                // use Promise to mock getAccountInfo(...).then
                return Promise.resolve(mockData);
            }),
        };
    }, { virtual: true }
);


2023-12-27

SingleEmailMessage

When setOrgWideEmailAddressId is not set, sender will be excutor.

2023-08-08

Not Admin User, How to delete/insert FinServ__FinancialAccount by Apex

Apex should be "without sharing".

Remove sObject.SObjectType.getDescribe().isDeletable() or sObject.SObjectType.getDescribe().isUpdateable() or sObject.SObjectType.getDescribe().isCreateable()

Inactive record in FinServ__RollupByLookupConfig__c, if need.


To Delete

Before delete, update "OwnerId" to current user. Like: FinServ__FinancialAccount.OwnerId = UserInfo.getUserId(). Then user can delete FinServ__FinancialAccount record.


To insert

If you want the special user can edit this FinServ__FinancialAccount record, don't forget to update "OwnerId" to the special user's id after insert.

2022-12-23

Catch System.LimitException in LWC

System.LimitException cannot catch by [try...catch...] in Apex.

When call Apex method in lwc and LimitException occurred in Apex source, [try...catch...] also not working in js.

But LimitException can be catched by [Promise.catch]

Sample
Promise.all([
    promise1,
    promise2,
    promise3
]).then((values) => {
    console.log(values);
}).catch((error) => {
    // LimitException can be catched here
    console.error(error);
}).finally(() => {
    console.log('Experiment completed');
});