--- /dev/null
+/*
+ * SPDX-FileCopyrightText: 2024 Chris Duncan <chris@flowpex.dev>
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
+global class System_Blob_size {
+
+ @InvocableMethod(label='System.Blob.size()' category='Flowpex System' iconName='slds:custom:custom79' description='Returns the number of characters in the Blob.')
+
+ public static List<Response> System_Blob_size (List<Request> requests) {
+ List<Response> responses = new List<Response>();
+ for (Request req : requests) {
+ Response res = new Response();
+ try {
+ res.sizeOfBlob = req.blobToSize.size();
+ } catch (Exception e) {
+ System.debug(e);
+ }
+ responses.add(res);
+ }
+ return responses;
+ }
+
+ public class Request {
+ @InvocableVariable(required='true' label='Blob' description='')
+ public Blob blobToSize;
+
+ public Request () {}
+ public Request (Blob b) {
+ this.blobToSize = b;
+ }
+ }
+
+ public class Response {
+ @InvocableVariable(label='Size' description='')
+ public Integer sizeOfBlob;
+ }
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+SPDX-FileCopyrightText: 2024 Chris Duncan <chris@flowpex.dev>
+SPDX-License-Identifier: GPL-3.0-or-later
+-->
+<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
+ <apiVersion>61.0</apiVersion>
+ <status>Active</status>
+</ApexClass>
\ No newline at end of file
--- /dev/null
+/*
+ * SPDX-FileCopyrightText: 2024 Chris Duncan <chris@flowpex.dev>
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
+@isTest
+private class System_Blob_size_TEST {
+
+ @isTest
+ static void testNoArgs () {
+ List<System_Blob_size.Request> req = new List<System_Blob_size.Request>();
+
+ Test.startTest();
+ List<System_Blob_size.Response> res = System_Blob_size.System_Blob_size(req);
+ Test.stopTest();
+
+ Assert.areEqual(0, res.size());
+ }
+
+ @isTest
+ static void testEmptyRequest () {
+ List<System_Blob_size.Request> req = new List<System_Blob_size.Request>();
+ req.add(new System_Blob_size.Request());
+
+ Test.startTest();
+ List<System_Blob_size.Response> res = System_Blob_size.System_Blob_size(req);
+ Test.stopTest();
+
+ Assert.areEqual(1, res.size());
+ Assert.areEqual(null, res[0].sizeOfBlob);
+ }
+
+ @isTest
+ static void testBlankArg () {
+ List<System_Blob_size.Request> req = new List<System_Blob_size.Request>();
+ req.add(new System_Blob_size.Request(Blob.valueOf('')));
+
+ Test.startTest();
+ List<System_Blob_size.Response> res = System_Blob_size.System_Blob_size(req);
+ Test.stopTest();
+
+ Assert.areEqual(1, res.size());
+ Assert.areEqual(0, res[0].sizeOfBlob);
+ }
+
+ @isTest
+ static void testManyArgs () {
+ List<Blob> blobList = new List<Blob>();
+ blobList.add(Blob.valueOf('0'));
+ for (Integer i = 1; i < 10; i++) {
+ String s = blobList[i-1].toString() + i.toString();
+ blobList.add(Blob.valueOf(s));
+ }
+
+ Test.startTest();
+ List<System_Blob_size.Request> req = new List<System_Blob_size.Request>();
+ for (Blob b : blobList) {
+ req.add(new System_Blob_size.Request(b));
+ }
+ List<System_Blob_size.Response> res = System_Blob_size.System_Blob_size(req);
+ Test.stopTest();
+
+ Assert.areEqual(10, res.size());
+ for (Integer i = 0; i < 10; i++) {
+ Assert.areEqual(i+1, res[i].sizeOfBlob);
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+SPDX-FileCopyrightText: 2024 Chris Duncan <chris@flowpex.dev>
+SPDX-License-Identifier: GPL-3.0-or-later
+-->
+<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
+ <apiVersion>61.0</apiVersion>
+ <status>Active</status>
+</ApexClass>
\ No newline at end of file