Create Basic Salesforce LWT Test Data Using Apex
Fri Jul 19 2024 11:01:38 GMT+0000 (Coordinated Universal Time)
Saved by @Justus
/** * Create the test data, ideally run 1 by 1 to prevent govenor limits * Run accounts and contacts first. Cases and opportunities require both */ upsertAccounts(0,10); upsertContacts(0,10,0,10); upsertCases(0,10,0,10); upsertOpportunities(0,10,0,10); /** * @description Method to create Basic Test Contacts */ public void upsertAccounts(Integer accountOffset, Integer numberOfAccounts){ // List to store the new cases Account[] accounts = new Account[]{}; // Loop for to create all top level accounts for (Integer i = accountOffset; i < numberOfAccounts; i++) { // A postfix to keep track of what item we're dealing with String postfix = String.valueOf(i+1).leftPad(4,'0'); // Create a new account accounts.add(new Account( Name = 'LWT - Test - Account - ' + postfix, UUID__c = UUID.randomUUID().toString(), External_Id__c = 'ACC - ' + postfix )); } upsert accounts External_Id__c; } /** * @description Method to create Basic Test Contacts */ public void upsertContacts(Integer accountOffset, Integer numberOfAccounts, Integer contactOffset,Integer numberOfContacts){ // Get the account and contact data Account[] accounts = [SELECT Id FROM Account WHERE Name LIKE 'LWT - Test - %' ORDER BY Name ASC LIMIT :numberOfAccounts]; // Basic error handling if(numberOfAccounts != accounts.size()){throw new StringException('Number of accounts does not match number returned by the query');} // List to store the new contacts Contact[] contacts = new Contact[]{}; // Iterate the top level accounts for(Integer i=accountOffset; i<numberOfAccounts; i++){ // Create a number of contacts for each account for(Integer j=contactOffset; j < numberOfContacts; j++){ // Postfix to keep track of where we are String postfix = String.valueOf(i+1).leftPad(4,'0') + ' - ' + String.valueOf(j+1).leftPad(4,'0'); // Add a new contact to the list contacts.add(new Contact( AccountId = accounts[i].Id, FirstName = 'LWT - Test - ' + postfix, LastName = 'Contact - ' + postfix, UUID__c = UUID.randomUUID().toString(), External_Id__c = 'CON - ' + postfix )); } } upsert contacts External_Id__c; } /** * @description Method to create Basic Test Cases */ public void upsertCases(Integer offset, Integer numberOfAccounts, Integer contactOffset, Integer numberOfContacts){ // Get the account and contact data Account[] accounts = [SELECT Id FROM Account WHERE Name LIKE 'LWT - Test - %' ORDER BY Name ASC LIMIT :numberOfAccounts]; Contact[] contacts = [SELECT Id FROM Contact WHERE Name LIKE 'LWT - Test - %' ORDER BY Name ASC LIMIT :numberOfContacts]; // Basic error handling if(numberOfAccounts != accounts.size()){throw new StringException('Number of accounts does not match number returned by the query');} if(numberOfContacts != contacts.size()){throw new StringException('Number of contacts does not match number returned by the query');} // List to store the new cases Case[] cases = new Case[]{}; // Iterate the top level accounts for(Integer i=offset; i<numberOfAccounts; i++){ // Create a case for each contact in the account for(Integer j=offset; j<numberOfContacts; j++){ // Postfix to keep track of where we are String postfix = String.valueOf(i+1).leftPad(4,'0') + ' - ' + String.valueOf(j+1).leftPad(4,'0'); // Add a new case cases.add(new Case( AccountId = accounts[i].Id, ContactId = contacts[j].Id, Subject = 'LWT - Test - Case - ' + postfix, UUID__c = UUID.randomUUID().toString(), External_Id__c = 'CSE - ' + postfix )); } } upsert cases External_Id__c; } /** * @description Method to create Basic Test Opportunities */ public void upsertOpportunities(Integer offset, Integer numberOfAccounts, Integer contactOffset, Integer numberOfContacts){ // Get the account and contact data Account[] accounts = [SELECT Id FROM Account WHERE Name LIKE 'LWT - Test - %' ORDER BY Name ASC LIMIT :numberOfAccounts]; Contact[] contacts = [SELECT Id FROM Contact WHERE Name LIKE 'LWT - Test - %' ORDER BY Name ASC LIMIT :numberOfContacts]; // Basic error handling if(numberOfAccounts != accounts.size()){throw new StringException('Number of accounts does not match number returned by the query');} if(numberOfContacts != contacts.size()){throw new StringException('Number of contacts does not match number returned by the query');} // List to store the new cases Opportunity[] opportunities = new Opportunity[]{}; // Iterate the top level accounts for(Integer i=offset; i<numberOfAccounts; i++){ // Create an opportunity for each contact in the account for(Integer j=offset; j<numberOfContacts; j++){ // Postfix to keep track of where we are String postfix = String.valueOf(i+1).leftPad(4,'0') + ' - ' + String.valueOf(j+1).leftPad(4,'0'); // Add a new opportunity to the list opportunities.add(new Opportunity( AccountId = accounts[i].Id, ContactId = contacts[j].Id, Name = 'LWT - Test - Opportunity - ' + postfix, StageName = (Math.mod(j,2) == 0) ? 'New' : 'Closed/Won', CloseDate = Date.today().addDays(j), UUID__c = UUID.randomUUID().toString(), External_Id__c = 'OPP - ' + postfix )); } } upsert opportunities External_Id__c; }
Comments