Add getAllValues to fflib_ArrayUtils

Signed-off-by: WimVelzeboer <wimvelzeboer@protonmail.com>
This commit is contained in:
WimVelzeboer
2022-03-16 09:47:30 +00:00
parent 778a44dffa
commit d139917d69
2 changed files with 41 additions and 0 deletions
@@ -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<String> getAllValues(Map<Id, String> stringsByIds, Set<Id> idsToRetrieve)
{
Set<String> result = new Set<String>();
for (Id id : idsToRetrieve)
{
if (stringsByIds.containsKey(id) == false) continue;
result.add(stringsByIds.get(id));
}
return result;
}
/**
* Validates if a list is empty
*
@@ -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<Id, String> stringsByIds = new Map<Id, String>
{
accountIdA => 'Account A',
accountIdB => 'Account B',
accountIdC => 'Account C'
};
// WHEN we retrieve a sub-set of Ids
Set<String> result = fflib_ArrayUtils.getAllValues(stringsByIds, new Set<Id> {accountIdA, accountIdB});
// THEN we get the values of the provide sub-set Ids
System.assert(result.containsAll(new Set<String>{'Account A', 'Account B'}));
}
private static List<Datetime> generateDateTimes()
{
return new List<Datetime>