]> git.codecow.com Git - flowpex.git/commitdiff
Add System.Id.getSObjectType()
authorChris Duncan <chris@flowpex.dev>
Thu, 4 Jul 2024 19:59:16 +0000 (12:59 -0700)
committerChris Duncan <chris@flowpex.dev>
Thu, 4 Jul 2024 19:59:16 +0000 (12:59 -0700)
src/System/Id/getSObjectType/System_Id_getSObjectType.cls [new file with mode: 0644]
src/System/Id/getSObjectType/System_Id_getSObjectType.cls-meta.xml [new file with mode: 0644]
src/System/Id/getSObjectType/System_Id_getSObjectType_TEST.cls [new file with mode: 0644]
src/System/Id/getSObjectType/System_Id_getSObjectType_TEST.cls-meta.xml [new file with mode: 0644]

diff --git a/src/System/Id/getSObjectType/System_Id_getSObjectType.cls b/src/System/Id/getSObjectType/System_Id_getSObjectType.cls
new file mode 100644 (file)
index 0000000..64d8d58
--- /dev/null
@@ -0,0 +1,37 @@
+/*\r
+ * SPDX-FileCopyrightText: 2024 Chris Duncan <chris@flowpex.dev>\r
+ * SPDX-License-Identifier: GPL-3.0-or-later\r
+ */\r
+\r
+ global class System_Id_getSObjectType {\r
+\r
+    @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.')\r
+\r
+    global static List<Response> System_Id_getSObjectType (List<Request> requests) {\r
+        List<Response> responses = new List<Response>();\r
+        for (Request req : requests) {\r
+            Id reqId = req.Id;\r
+            Schema.SObjectType sObjectType = reqId.System_Id_getSObjectType();\r
+            Schema.DescribeSObjectResult describe = sObjectType.getDescribe();\r
+            Response res = new Response();\r
+            res.sObjectType = new Schema_SObjectType(describe);\r
+            responses.add(res);\r
+        }\r
+        return responses;\r
+    }\r
+\r
+    global class Request {\r
+        @InvocableVariable(label='ID' required='true' description='ID used to describe a corresponding sObject.')\r
+        global String id;\r
+\r
+        global Request () {}\r
+        global Request (String s) {\r
+            this.id = s;\r
+        }\r
+    }\r
+\r
+    global class Response {\r
+        @InvocableVariable(label='SObject Type' description='Token of the sObject corresponding to the ID.')\r
+        global Schema_SObjectType sObjectType;\r
+    }\r
+}
\ 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 (file)
index 0000000..66cdc5b
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!--\r
+SPDX-FileCopyrightText: 2024 Chris Duncan <chris@flowpex.dev>\r
+SPDX-License-Identifier: GPL-3.0-or-later\r
+-->\r
+<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">\r
+    <apiVersion>61.0</apiVersion>\r
+    <status>Active</status>\r
+</ApexClass>\r
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 (file)
index 0000000..0cdb2f3
--- /dev/null
@@ -0,0 +1,49 @@
+/*\r
+ * SPDX-FileCopyrightText: 2024 Chris Duncan <chris@flowpex.dev>\r
+ * SPDX-License-Identifier: GPL-3.0-or-later\r
+ */\r
+\r
+ @isTest\r
+private class System_Id_getSObjectType_TEST {\r
+\r
+    @isTest\r
+    static void testNoArgs () {\r
+        List<System_Id_getSObjectType.Request> req = new List<System_Id_getSObjectType.Request>();\r
+\r
+        Test.startTest();\r
+        List<System_Id_getSObjectType.Response> res = System_Id_getSObjectType.System_Id_getSObjectType(req);\r
+        Test.stopTest();\r
+\r
+        Assert.areEqual(0, res.size());\r
+    }\r
+\r
+    @isTest\r
+    static void testManyArgs () {\r
+        List<Account> listAccounts = new List<Account>();\r
+        for (Integer i = 0; i < 5; i++) {\r
+            Account a = new Account(\r
+            Name = 'Test Account ' + i,\r
+            BillingStreet = '123 Main Street',\r
+            BillingCity = 'New York',\r
+            BillingState = 'New York',\r
+            BillingPostalCode = '10001',\r
+            BillingCountry = 'United States'\r
+            );\r
+            listAccounts.add(a);\r
+        }\r
+        insert listAccounts;\r
+\r
+        Test.startTest();\r
+        List<System_Id_getSObjectType.Request> listSystem_Id_getSObjectTypeRequest = new List<System_Id_getSObjectType.Request>();\r
+        for (Account a : listAccounts) {\r
+            listSystem_Id_getSObjectTypeRequest.add(new System_Id_getSObjectType.Request(a.Id));\r
+        }\r
+        List<System_Id_getSObjectType.Response> results = System_Id_getSObjectType.System_Id_getSObjectType(listSystem_Id_getSObjectTypeRequest);\r
+        Test.stopTest();\r
+\r
+        Assert.areEqual(5, results.size());\r
+        for (Integer i = 0; i < results.size(); i++) {\r
+            Assert.areEqual('Account', results[i].sObjectType.name);\r
+        }\r
+    }\r
+}
\ 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 (file)
index 0000000..66cdc5b
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!--\r
+SPDX-FileCopyrightText: 2024 Chris Duncan <chris@flowpex.dev>\r
+SPDX-License-Identifier: GPL-3.0-or-later\r
+-->\r
+<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">\r
+    <apiVersion>61.0</apiVersion>\r
+    <status>Active</status>\r
+</ApexClass>\r