From f4df5b247d889e192f53196cd2a5bd5f937a08dc Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Thu, 4 Jul 2024 12:59:16 -0700 Subject: [PATCH] Add System.Id.getSObjectType() --- .../System_Id_getSObjectType.cls | 37 ++++++++++++++ .../System_Id_getSObjectType.cls-meta.xml | 9 ++++ .../System_Id_getSObjectType_TEST.cls | 49 +++++++++++++++++++ ...System_Id_getSObjectType_TEST.cls-meta.xml | 9 ++++ 4 files changed, 104 insertions(+) create mode 100644 src/System/Id/getSObjectType/System_Id_getSObjectType.cls create mode 100644 src/System/Id/getSObjectType/System_Id_getSObjectType.cls-meta.xml create mode 100644 src/System/Id/getSObjectType/System_Id_getSObjectType_TEST.cls create mode 100644 src/System/Id/getSObjectType/System_Id_getSObjectType_TEST.cls-meta.xml diff --git a/src/System/Id/getSObjectType/System_Id_getSObjectType.cls b/src/System/Id/getSObjectType/System_Id_getSObjectType.cls new file mode 100644 index 0000000..64d8d58 --- /dev/null +++ b/src/System/Id/getSObjectType/System_Id_getSObjectType.cls @@ -0,0 +1,37 @@ +/* + * SPDX-FileCopyrightText: 2024 Chris Duncan + * SPDX-License-Identifier: GPL-3.0-or-later + */ + + global class System_Id_getSObjectType { + + @InvocableMethod(label='System.Id.getSObjectType()' category='Flowpex' iconName='slds:utility:record_lookup' description='Returns the token for the sObject corresponding to this ID. This method is primarily used with describe information.') + + global static List System_Id_getSObjectType (List requests) { + List responses = new List(); + for (Request req : requests) { + Id reqId = req.Id; + Schema.SObjectType sObjectType = reqId.System_Id_getSObjectType(); + Schema.DescribeSObjectResult describe = sObjectType.getDescribe(); + Response res = new Response(); + res.sObjectType = new Schema_SObjectType(describe); + responses.add(res); + } + return responses; + } + + global class Request { + @InvocableVariable(label='ID' required='true' description='ID used to describe a corresponding sObject.') + global String id; + + global Request () {} + global Request (String s) { + this.id = s; + } + } + + global class Response { + @InvocableVariable(label='SObject Type' description='Token of the sObject corresponding to the ID.') + global Schema_SObjectType sObjectType; + } +} \ No newline at end of file diff --git a/src/System/Id/getSObjectType/System_Id_getSObjectType.cls-meta.xml b/src/System/Id/getSObjectType/System_Id_getSObjectType.cls-meta.xml new file mode 100644 index 0000000..66cdc5b --- /dev/null +++ b/src/System/Id/getSObjectType/System_Id_getSObjectType.cls-meta.xml @@ -0,0 +1,9 @@ + + + + 61.0 + Active + diff --git a/src/System/Id/getSObjectType/System_Id_getSObjectType_TEST.cls b/src/System/Id/getSObjectType/System_Id_getSObjectType_TEST.cls new file mode 100644 index 0000000..0cdb2f3 --- /dev/null +++ b/src/System/Id/getSObjectType/System_Id_getSObjectType_TEST.cls @@ -0,0 +1,49 @@ +/* + * SPDX-FileCopyrightText: 2024 Chris Duncan + * SPDX-License-Identifier: GPL-3.0-or-later + */ + + @isTest +private class System_Id_getSObjectType_TEST { + + @isTest + static void testNoArgs () { + List req = new List(); + + Test.startTest(); + List res = System_Id_getSObjectType.System_Id_getSObjectType(req); + Test.stopTest(); + + Assert.areEqual(0, res.size()); + } + + @isTest + static void testManyArgs () { + List listAccounts = new List(); + for (Integer i = 0; i < 5; i++) { + Account a = new Account( + Name = 'Test Account ' + i, + BillingStreet = '123 Main Street', + BillingCity = 'New York', + BillingState = 'New York', + BillingPostalCode = '10001', + BillingCountry = 'United States' + ); + listAccounts.add(a); + } + insert listAccounts; + + Test.startTest(); + List listSystem_Id_getSObjectTypeRequest = new List(); + for (Account a : listAccounts) { + listSystem_Id_getSObjectTypeRequest.add(new System_Id_getSObjectType.Request(a.Id)); + } + List results = System_Id_getSObjectType.System_Id_getSObjectType(listSystem_Id_getSObjectTypeRequest); + Test.stopTest(); + + Assert.areEqual(5, results.size()); + for (Integer i = 0; i < results.size(); i++) { + Assert.areEqual('Account', results[i].sObjectType.name); + } + } +} \ No newline at end of file diff --git a/src/System/Id/getSObjectType/System_Id_getSObjectType_TEST.cls-meta.xml b/src/System/Id/getSObjectType/System_Id_getSObjectType_TEST.cls-meta.xml new file mode 100644 index 0000000..66cdc5b --- /dev/null +++ b/src/System/Id/getSObjectType/System_Id_getSObjectType_TEST.cls-meta.xml @@ -0,0 +1,9 @@ + + + + 61.0 + Active + -- 2.52.0