From 6f31bcce09e99858d3ef6c9cf18fb0eb3d559919 Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Sun, 23 Jun 2024 23:27:20 -0700 Subject: [PATCH] Add System.Blob.toPdf() --- src/System/Blob/toPdf/System_Blob_toPdf.cls | 40 +++++++++ .../Blob/toPdf/System_Blob_toPdf.cls-meta.xml | 9 ++ .../Blob/toPdf/System_Blob_toPdf_TEST.cls | 86 +++++++++++++++++++ .../toPdf/System_Blob_toPdf_TEST.cls-meta.xml | 9 ++ 4 files changed, 144 insertions(+) create mode 100644 src/System/Blob/toPdf/System_Blob_toPdf.cls create mode 100644 src/System/Blob/toPdf/System_Blob_toPdf.cls-meta.xml create mode 100644 src/System/Blob/toPdf/System_Blob_toPdf_TEST.cls create mode 100644 src/System/Blob/toPdf/System_Blob_toPdf_TEST.cls-meta.xml diff --git a/src/System/Blob/toPdf/System_Blob_toPdf.cls b/src/System/Blob/toPdf/System_Blob_toPdf.cls new file mode 100644 index 0000000..46d6eed --- /dev/null +++ b/src/System/Blob/toPdf/System_Blob_toPdf.cls @@ -0,0 +1,40 @@ +/* + * SPDX-FileCopyrightText: 2024 Chris Duncan + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +global class System_Blob_toPdf { + + @InvocableMethod(label='System.Blob.toPdf()' category='Flowpex System' iconName='slds:standard:form' description='Creates a binary object out of the given string, encoding it as a PDF file.') + + public static List System_Blob_toPdf (List requests) { + List responses = new List(); + for (Request req : requests) { + Response res = new Response(); + try { + if (req.stringToPdf != null) { + res.pdfOfString = System.Blob.toPdf(req.stringToPdf); + } + } catch (Exception e) { + System.debug(e); + } + responses.add(res); + } + return responses; + } + + public class Request { + @InvocableVariable(required='true' label='String to PDF' description='') + public String stringToPdf; + + public Request () {} + public Request (String s) { + this.stringToPdf = s; + } + } + + public class Response { + @InvocableVariable(label='PDF' description='') + public Blob pdfOfString; + } +} \ No newline at end of file diff --git a/src/System/Blob/toPdf/System_Blob_toPdf.cls-meta.xml b/src/System/Blob/toPdf/System_Blob_toPdf.cls-meta.xml new file mode 100644 index 0000000..ff0b65f --- /dev/null +++ b/src/System/Blob/toPdf/System_Blob_toPdf.cls-meta.xml @@ -0,0 +1,9 @@ + + + + 61.0 + Active + \ No newline at end of file diff --git a/src/System/Blob/toPdf/System_Blob_toPdf_TEST.cls b/src/System/Blob/toPdf/System_Blob_toPdf_TEST.cls new file mode 100644 index 0000000..7dbc239 --- /dev/null +++ b/src/System/Blob/toPdf/System_Blob_toPdf_TEST.cls @@ -0,0 +1,86 @@ +/* + * SPDX-FileCopyrightText: 2024 Chris Duncan + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +@isTest +private class System_Blob_toPdf_TEST { + + @isTest + static void testNoArgs () { + List requests = new List(); + + Test.startTest(); + List responses = System_Blob_toPdf.System_Blob_toPdf(requests); + Test.stopTest(); + + Assert.areEqual(0, responses.size()); + } + + @isTest + static void testEmptyRequest () { + List requests = new List(); + System_Blob_toPdf.Request req = new System_Blob_toPdf.Request(); + requests.add(req); + + Test.startTest(); + List responses = System_Blob_toPdf.System_Blob_toPdf(requests); + Test.stopTest(); + + Assert.areEqual(1, responses.size()); + System_Blob_toPdf.Response res = responses[0]; + Assert.areEqual(null, res.pdfOfString); + } + + @isTest + static void testBlankArg () { + List requests = new List(); + System_Blob_toPdf.Request req = new System_Blob_toPdf.Request(''); + requests.add(req); + + Test.startTest(); + List responses = System_Blob_toPdf.System_Blob_toPdf(requests); + Test.stopTest(); + + Assert.areEqual(1, responses.size()); + System_Blob_toPdf.Response res = responses[0]; + Assert.areEqual(null, res.pdfOfString); + } + + @isTest + static void testWhitespaceArg () { + List requests = new List(); + System_Blob_toPdf.Request req = new System_Blob_toPdf.Request(' '); + requests.add(req); + + Test.startTest(); + List responses = System_Blob_toPdf.System_Blob_toPdf(requests); + Test.stopTest(); + + Assert.areEqual(1, responses.size()); + System_Blob_toPdf.Response res = responses[0]; + Assert.areNotEqual(null, res.pdfOfString); + } + + @isTest + static void testManyArgs () { + List stringList = new List(); + for (Integer i = 0; i < 10; i++) { + stringList.add(i.toString()); + } + + Test.startTest(); + List requests = new List(); + for (String s : stringList) { + System_Blob_toPdf.Request req = new System_Blob_toPdf.Request(s); + requests.add(req); + } + List responses = System_Blob_toPdf.System_Blob_toPdf(requests); + Test.stopTest(); + + Assert.areEqual(10, responses.size()); + for (System_Blob_toPdf.Response res : responses) { + Assert.areNotEqual(null, res.pdfOfString); + } + } +} \ No newline at end of file diff --git a/src/System/Blob/toPdf/System_Blob_toPdf_TEST.cls-meta.xml b/src/System/Blob/toPdf/System_Blob_toPdf_TEST.cls-meta.xml new file mode 100644 index 0000000..ff0b65f --- /dev/null +++ b/src/System/Blob/toPdf/System_Blob_toPdf_TEST.cls-meta.xml @@ -0,0 +1,9 @@ + + + + 61.0 + Active + \ No newline at end of file -- 2.52.0