add getIdFieldByStringField()
This commit is contained in:
@@ -397,6 +397,35 @@ public virtual class fflib_SObjects2
|
||||
return getRecords().get(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a map with the values of a String field as key and Id field
|
||||
* Key fields containing null values are omitted
|
||||
*
|
||||
* @param valueField The Id field to use as the Value of the Map
|
||||
* @param keyField The String field to use as the Key of the map
|
||||
*
|
||||
* @return Returns a map with the values of two fields
|
||||
*
|
||||
* @example
|
||||
* Contacts contacts = Contacts.newInstance(records);
|
||||
* Map<String, Id> accountIdByContactId = contacts.getIdFieldByStringField(Contact.Id, Contact.Name);
|
||||
*/
|
||||
@TestVisible
|
||||
protected virtual Map<String, Id> getIdFieldByStringField(Schema.SObjectField valueField, Schema.SObjectField keyField)
|
||||
{
|
||||
Map<String, Id> result = new Map<String, Id>();
|
||||
for (SObject record : getRecords())
|
||||
{
|
||||
if (record.get(keyField) == null) continue;
|
||||
|
||||
result.put(
|
||||
(String) record.get(keyField),
|
||||
(Id) record.get(valueField)
|
||||
);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a map with the values of two Id fields
|
||||
* Key fields containing null values are omitted
|
||||
|
||||
@@ -124,6 +124,19 @@ private class fflib_SObjects2Test
|
||||
// todo - add assertions
|
||||
}
|
||||
|
||||
@IsTest
|
||||
static void itShouldReturnStringById()
|
||||
{
|
||||
final Id accountId = fflib_IDGenerator.generate(Schema.Account.SObjectType);
|
||||
final Account record = new Account(Id = accountId, Name = 'Test');
|
||||
fflib_SObjects2 domain = new fflib_SObjects2(new List<Account>{ record });
|
||||
System.Test.startTest();
|
||||
Map<String, Id> nameById = domain.getIdFieldByStringField(Schema.Account.Id, Schema.Account.Name);
|
||||
System.Test.stopTest();
|
||||
System.assert(nameById.containsKey('Test'));
|
||||
System.assertEquals(accountId, nameById.get(accountId));
|
||||
}
|
||||
|
||||
@IsTest
|
||||
static void itShouldReturnRecordIdById()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user