--- /dev/null
+/*\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
--- /dev/null
+<?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
--- /dev/null
+/*\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
--- /dev/null
+<?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