diff --git a/sfdx-source/apex-extensions/main/default/classes/utils/fflib_ArrayUtils.cls b/sfdx-source/apex-extensions/main/default/classes/utils/fflib_ArrayUtils.cls index 90b05d7..dff2c07 100644 --- a/sfdx-source/apex-extensions/main/default/classes/utils/fflib_ArrayUtils.cls +++ b/sfdx-source/apex-extensions/main/default/classes/utils/fflib_ArrayUtils.cls @@ -73,6 +73,26 @@ public class fflib_ArrayUtils return objects.get(0); } + /** + * Gets all String values for the given Ids + * + * @param stringsByIds the data map to process + * @param idsToRetrieve The keys for which to retrieve their string values + * + * @return Returns all the values for the provided keys + */ + public static Set getAllValues(Map stringsByIds, Set idsToRetrieve) + { + Set result = new Set(); + for (Id id : idsToRetrieve) + { + if (stringsByIds.containsKey(id) == false) continue; + + result.add(stringsByIds.get(id)); + } + return result; + } + /** * Validates if a list is empty * diff --git a/sfdx-source/apex-extensions/tests/classes/utils/fflib_ArrayUtilsTest.cls b/sfdx-source/apex-extensions/tests/classes/utils/fflib_ArrayUtilsTest.cls index c240706..6281736 100644 --- a/sfdx-source/apex-extensions/tests/classes/utils/fflib_ArrayUtilsTest.cls +++ b/sfdx-source/apex-extensions/tests/classes/utils/fflib_ArrayUtilsTest.cls @@ -238,6 +238,27 @@ private class fflib_ArrayUtilsTest System.assertEquals(8, result, 'Did not return the last value in the list of objects'); } + @IsTest + static void itShouldReturnAllValuesForTheGivenIds() + { + // GIVEN a map with String by Ids + Id accountIdA = fflib_IDGenerator.generate(Schema.Account.SObjectType); + Id accountIdB = fflib_IDGenerator.generate(Schema.Account.SObjectType); + Id accountIdC = fflib_IDGenerator.generate(Schema.Account.SObjectType); + Map stringsByIds = new Map + { + accountIdA => 'Account A', + accountIdB => 'Account B', + accountIdC => 'Account C' + }; + + // WHEN we retrieve a sub-set of Ids + Set result = fflib_ArrayUtils.getAllValues(stringsByIds, new Set {accountIdA, accountIdB}); + + // THEN we get the values of the provide sub-set Ids + System.assert(result.containsAll(new Set{'Account A', 'Account B'})); + } + private static List generateDateTimes() { return new List