From 273e47f0db3761c7a975cda96c7b6efb4f87c31b Mon Sep 17 00:00:00 2001 From: Wim Velzeboer Date: Wed, 10 Apr 2024 10:19:27 +0100 Subject: [PATCH] Add method overload for getIdFieldValues to omit null values --- .../classes/domains/fflib_SObjects2.cls | 22 +++++++++++++++++++ .../classes/domains/fflib_SObjects2Test.cls | 15 +++++++++---- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/sfdx-source/apex-extensions/main/default/classes/domains/fflib_SObjects2.cls b/sfdx-source/apex-extensions/main/default/classes/domains/fflib_SObjects2.cls index 9181259..02334d1 100644 --- a/sfdx-source/apex-extensions/main/default/classes/domains/fflib_SObjects2.cls +++ b/sfdx-source/apex-extensions/main/default/classes/domains/fflib_SObjects2.cls @@ -657,6 +657,26 @@ public virtual class fflib_SObjects2 return result; } + /** + * Gets the Id values, but with the option to omit null values + * + * @param field The Schema.SObjectField to get their Id values + * @param omitNulls If set to TRUE, null values will be removed from the result + * + * @return The Id values of the given sObjectField, null values are omitted + */ + @TestVisible + protected Set getIdFieldValues(Schema.SObjectField field, Boolean omitNulls) + { + Set result = getIdFieldValues(field); + + if (omitNulls) + { + result.remove(null); + } + return result; + } + /** * @param sObjectField The Schema.SObjectField to get their Id values * @param criteria The criteria condition that must be met to include the value in the return @@ -791,11 +811,13 @@ public virtual class fflib_SObjects2 return result; } + @TestVisible protected virtual List getRecordsIsNot(Schema.SObjectField sObjectField, Id idValue) { return getRecordsNotIn(sObjectField, new Set{ idValue }); } + @TestVisible protected virtual List getRecordsNotIn(Schema.SObjectField sObjectField, Set idValues) { List result = new List(); diff --git a/sfdx-source/apex-extensions/tests/classes/domains/fflib_SObjects2Test.cls b/sfdx-source/apex-extensions/tests/classes/domains/fflib_SObjects2Test.cls index 506b241..bee698d 100644 --- a/sfdx-source/apex-extensions/tests/classes/domains/fflib_SObjects2Test.cls +++ b/sfdx-source/apex-extensions/tests/classes/domains/fflib_SObjects2Test.cls @@ -105,7 +105,7 @@ private class fflib_SObjects2Test domain.getFieldsByField(Account.Id, Account.AnnualRevenue); domain.getFieldByField(Account.Id, Account.Id); domain.getIdFieldsByIdField(Account.Id, Account.Id); - domain.getIdFieldsByStringField(Account.Name, Account.Id); + domain.getIdFieldsByStringField(Account.Id, Account.Name); domain.getIdFieldValues(Account.Id); domain.getIdFieldValues(Account.Id, criteria); domain.getDecimalFieldValues(Account.BillingLatitude, criteria); @@ -117,8 +117,16 @@ private class fflib_SObjects2Test domain.getSObjectsByStringField(Account.Name); domain.getStringFieldByStringField(Account.Name, Account.AccountNumber); domain.getStringFieldValues(Account.Name, criteria); - domain.stri - + domain.stripInaccessibleFields(); + domain.getDateFieldValues(Account.CreatedDate); + domain.getDateFieldValues(Account.CreatedDate, criteria); + domain.getIdFieldValues(Account.Id, criteria); + domain.getRecords(Account.Id, domain.getFirstSObject().Id); + domain.getRecords(Account.Name, 'A'); + domain.getRecordsIsNot(Account.Name, 'A'); + domain.getRecordsIsNot(Account.Id, domain.getFirstSObject().Id); + domain.getSObjectByIdField(Account.Id); + domain.getIdFieldValues(Account.Id, true); // todo - add assertions } @@ -462,7 +470,6 @@ private class fflib_SObjects2Test ); } - @IsTest static void itShouldReturnRecordsIds() {