From 5dbfb3a4ab87fd64f7e0ca4170ebe95d3bde5379 Mon Sep 17 00:00:00 2001 From: wimvelzeboer Date: Fri, 27 May 2022 13:35:47 +0100 Subject: [PATCH 1/3] Make sure method return non-null values --- .../apex-common/main/classes/fflib_SObjects.cls | 14 ++++++++++++-- .../test/classes/fflib_SObjectsTest.cls | 2 -- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/sfdx-source/apex-common/main/classes/fflib_SObjects.cls b/sfdx-source/apex-common/main/classes/fflib_SObjects.cls index 95c48ccf017..dcd5ae6bf8b 100644 --- a/sfdx-source/apex-common/main/classes/fflib_SObjects.cls +++ b/sfdx-source/apex-common/main/classes/fflib_SObjects.cls @@ -161,11 +161,16 @@ public virtual class fflib_SObjects * @return Return a set with all the Id values of the given field */ @TestVisible - protected Set getIdFieldValues(Schema.SObjectField field) + protected virtual Set getIdFieldValues(Schema.SObjectField field) { Set result = new Set(); for (SObject record : getRecords()) { + if (record.get(field) == null) + { + continue; + } + result.add((Id) record.get(field)); } return result; @@ -177,11 +182,16 @@ public virtual class fflib_SObjects * @return Return a set with all the String values of the given field */ @TestVisible - protected Set getStringFieldValues(Schema.SObjectField field) + protected virtual Set getStringFieldValues(Schema.SObjectField field) { Set result = new Set(); for (SObject record : getRecords()) { + if (String.isBlank((String) record.get(field))) + { + continue; + } + result.add((String) record.get(field)); } return result; diff --git a/sfdx-source/apex-common/test/classes/fflib_SObjectsTest.cls b/sfdx-source/apex-common/test/classes/fflib_SObjectsTest.cls index dd5bd13f0a0..221144d1e2d 100644 --- a/sfdx-source/apex-common/test/classes/fflib_SObjectsTest.cls +++ b/sfdx-source/apex-common/test/classes/fflib_SObjectsTest.cls @@ -134,8 +134,6 @@ private class fflib_SObjectsTest final Set expected = new Set { - null, - '', 'Canada', 'Ireland', 'UK', From e4ea531a6d7444b2fe967ea36dab5de599aa0d09 Mon Sep 17 00:00:00 2001 From: wimvelzeboer Date: Tue, 2 Aug 2022 15:10:33 +0100 Subject: [PATCH 2/3] Change into isSet --- sfdx-source/apex-common/main/classes/fflib_SObjects.cls | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/sfdx-source/apex-common/main/classes/fflib_SObjects.cls b/sfdx-source/apex-common/main/classes/fflib_SObjects.cls index dcd5ae6bf8b..d6c61029306 100644 --- a/sfdx-source/apex-common/main/classes/fflib_SObjects.cls +++ b/sfdx-source/apex-common/main/classes/fflib_SObjects.cls @@ -166,12 +166,10 @@ public virtual class fflib_SObjects Set result = new Set(); for (SObject record : getRecords()) { - if (record.get(field) == null) + if (record.isSet(field)) { - continue; + result.add((Id) record.get(field)); } - - result.add((Id) record.get(field)); } return result; } From d0f4f68412919f0984c260056428f9d1ad55cab6 Mon Sep 17 00:00:00 2001 From: wimvelzeboer Date: Tue, 2 Aug 2022 17:10:28 +0100 Subject: [PATCH 3/3] Fix unit test itShouldReturnFieldValues --- .../test/classes/fflib_SObjectsTest.cls | 33 ++++++++++++------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/sfdx-source/apex-common/test/classes/fflib_SObjectsTest.cls b/sfdx-source/apex-common/test/classes/fflib_SObjectsTest.cls index 221144d1e2d..b205e626aef 100644 --- a/sfdx-source/apex-common/test/classes/fflib_SObjectsTest.cls +++ b/sfdx-source/apex-common/test/classes/fflib_SObjectsTest.cls @@ -132,20 +132,29 @@ private class fflib_SObjectsTest { DomainAccounts domain = generateDomain(); - final Set expected = new Set - { - 'Canada', - 'Ireland', - 'UK', - 'USA' - }; - System.assert( - domain.getStringFieldValues(Schema.Account.ShippingCountry).equals(expected) - ); - + // Return only string, omitting nulls and blanks + System.assertEquals( + new Set + { + 'Canada', + 'Ireland', + 'UK', + 'USA' + }, + domain.getStringFieldValues(Schema.Account.ShippingCountry)); + + // Return all the values, including nulls and blanks System.assert( domain.getFieldValues(Schema.Account.ShippingCountry) - .equals(expected) + .equals(new Set + { + 'Canada', + 'Ireland', + 'UK', + 'USA', + '', + null + }) ); }