Platform Developer I Certification for Winter ’23 Solutions

Today, We are going to answer the Platform Developer 1 Certification Maintenance Winter'23 questions.


Unit 1: 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?

Ans. Before-save and after-save

2. Which Apex class is used to determine the hostnames for the domains that Salesforce hosts for your org?

Ans. System.DomainCreator

3. Which modules can be used for notifications in a Lightning web component instead of native APIs?

Ans. LightningAlert, LightningConfirm and LightningPrompt

4. What determines an org’s “shape” in Salesforce?

Ans. Features, settings, edition, limits and licenses

5. Which lightning-modal-* component is required to create a modal?

Ans. Body

6. How do you call an invocable action from Apex code?

Ans. Reference Invocable.Action

Also Read: Platform App Builder Certification Maintenance (Winter '23) Solutions

Unit 2: Get Hands-On With Apex Assertions

Step 1: Create a new Playground or use the previous one. But don't use developer org for this.

Step 2: Open Developer Console and create a new class named as Test Factory. Copy the below code and paste it into the class and Save it.

@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 3: Create a new class named as DataGenerationTest and Copy the below code and paste it into the class and Save it.

@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');
}
}

Note: To keep your certification, complete the  Platform Developer I Certification Maintenance (Winter '23) Module

Comments

Anonymous said…
Very Helpful. Thanks for this.