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?
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