Thursday, February 2, 2023

Platform Developer I Certification Maintenance (Winter '23)



Platform Developer I Certification Maintenance (Winter '23)




→    Maintain Your Platform Developer I Certification for Winter '23

1. Field update actions have changed in API Version 54.0. Which record-triggered flows do field update actions now execute?
A. Only before-save
B. Before-save and after-save
C. Only after-save
D. Repeat in a loop

2. Which Apex class is used to determine the hostnames for the domains that Salesforce hosts for your org?
A. System.DomainCreator
B. System.Domain
C. System.DomainParser
D. System.TypeEnum

3. Which modules can be used for notifications in a Lightning web component instead of native APIs?
A. window.alert(), window.confirm(), and window.prompt()
B. LightningAlert, LightningConfirm, and LightningPrompt
C. alert(), confirm(), and prompt()
D. async/await or .then()

4. What determines an org’s “shape” in Salesforce?
A. Developer, Group, Professional, Enterprise, and Unlimited Editions
B. License, limits, definitions, version, and features
C. Features, settings, edition, limits, and licenses
D. Platform, Domain, Package, Cloud, and Previews

5. Which lightning-modal-* component is required to create a modal?
A. Header
B. Footer
C. Body
D. Tag

6. How do you call an invocable action from Apex code?
A. Reference MyApexClass
B. Use Callout Modifier
C. Use InvocableVariable
D. Reference Invocable.Action

→    Get Hands-On With Apex Assertions

Launch the org you’ll use for the hands-on challenge, then do the following prework.
Step: 1
Now, as mentioned in trailhead challenge, we need to create one apex class.

To open the Developer Console from Salesforce Classic:

  1. Click Your Name.
  2. Click Developer Console.

To open the Developer Console from Lightning Experience:

  1. Click the quick access menu (Setup gear icon).
  2. Click Developer Console.
Follow below steps in developer console
~ File > New > Apex Class

Step: 2
As mentioned in trailhead challenge, enter 'Apex Class' name and click 'OK' button.
    Class Name: TestFactory


Step: 3 
Copy below mentioned code and paste in developer console and 'Save' this apex class.
@isTest
public class TestFactory {
   public static Account getAccount(String accountName, Boolean doInsert) {
       Account account = new Account(Name = accountName);
       if (doInsert) {
           insert account;
       }
       return account;
   }
   public static Contact getContact(Id accountId, String firstName, String lastName, Boolean doInsert){
       Contact contact = new Contact(
           FirstName = firstName,
           LastName = lastName,
           AccountId = accountId
       );
       if (doInsert) {
           insert contact;
       }
       return contact;
   }
   public static void generateAccountWithContacts(Integer numContacts) {
       Account account = getAccount('default account ltd', true);
       List<Contact> contacts = new List<Contact>();
       for (Integer i = 0; i < numContacts; i++) {
           String firstName = 'Contact';
           String lastName = 'Test' + i;
           contacts.add(getContact(account.Id, firstName, lastName, false));
       }
       insert contacts;
   }
   public static Opportunity[] generateOppsForAccount(ID accountId, Decimal amount, Integer numOpps){
       List<Opportunity> oppsForAccounts = new List<Opportunity>();
       for (Integer i = 0; i < numOpps; i++) {
           Opportunity opp = new Opportunity(
               Name = 'Account ' + i,
               AccountId = accountId,
               Amount = amount,
               CloseDate = Date.today().addDays(5),
               StageName = 'Prospecting'
           );
           oppsForAccounts.add(opp);
       }
       return oppsForAccounts;
   }
   public static User generateUser(String profileName) {
       UserRole userRole = new UserRole(
           DeveloperName = 'TestingTeam',
           Name = 'Testing Team'
       );
       insert userRole;
       String uniqueEmail = 'Cpt.Awesome' + DateTime.now().getTime() + '@th.example.com';
       User userForInsert = new User(
           ProfileId = [SELECT Id FROM Profile WHERE Name = :profileName].Id,
           LastName = 'lastName',
           Email = uniqueEmail,
           Username = uniqueEmail,
           CompanyName = 'Testing Co',
           Title = 'Captain',
           Alias = 'alias',
           TimeZoneSidKey = 'America/Los_Angeles',
           EmailEncodingKey = 'UTF-8',
           LanguageLocaleKey = 'en_US',
           LocaleSidKey = 'en_US',
           UserRoleId = userRole.Id
       );
       insert userForInsert;
       return userForInsert;
   }
}

Step: 4  
Now follow step 1 & 2 again and create another apex class.
    Class Name: DataGenerationTest
Copy below mentioned code and paste in developer console and 'Save' this apex class.
@isTest
private class DataGenerationTest {
  @testSetup
  static void dataCreation() {
      Account account = TestFactory.getAccount('Muddy Waters Inc.', true);
      Contact contact = TestFactory.getContact(account.Id, 'Muddy', 'Waters', true);
      Opportunity opp = New Opportunity();
      opp.Name = 'Long lost record';
      opp.AccountId = account.Id;
      opp.CloseDate = Date.today().addDays(14);
      opp.StageName = 'Prospecting';
      insert opp;
  }
  @isTest
  static void testBruteForceAccountCreation() {
      List<Account> accts = new List<Account>();
      Test.startTest();
          accts = [SELECT Id FROM Account];
      Test.stopTest();
      assert.isTrue(accts.size() > 0, 'Was expecting to find at least one account created on the Test Setup');
  }
  @isTest
  static void testUseTestFactoryToCreateAccountsWithContacts() {
      List<Account> accts;
      List<Contact> contacts;
      TestFactory.generateAccountWithContacts(5);
      Test.startTest();
          accts = [SELECT Id FROM Account];
          contacts = [SELECT Id FROM Contact];
      Test.stopTest();
      assert.isTrue(accts.size() > 0, 'Was expecting to find at least one account created');
      assert.isTrue(contacts.size() == 6, 'Was expecting to find 6 contacts');
      assert.areNotEqual(accts.size(), contacts.size(), 'Was expecting there to be a different number of account and contacts');
  }
  @isTest
  static void testAtTestSetupMethodsRule() {
      List<Opportunity> opps = [SELECT Id, AccountId FROM Opportunity];
      assert.areEqual(1, opps.size(), 'Expected test to find a single Opp');
  }
}

Certification Maintenance Due Date:   December 8, 2023

8 comments:

  1. Really nice article and helpful me.

    ReplyDelete
  2. Thank you sharing for this great post.

    ReplyDelete
  3. Thanks for sharing code. Continue doing this.

    ReplyDelete
  4. Thanks for sharing this details

    ReplyDelete
  5. Very nice really amazing post thank for this.

    ReplyDelete
  6. Thanks for your time and help!!

    ReplyDelete
  7. Thanks much, appreciate your help :)

    ReplyDelete