From 193589b61617a60ad848fc77aff0a5f1ceebe22a Mon Sep 17 00:00:00 2001
From: Guillaume Heurtier <guillaume.heurtier@maarch.org>
Date: Mon, 27 Apr 2020 14:32:45 +0200
Subject: [PATCH] FEAT #13676 TIME 1:30 improved folder print tests

---
 .../resource/FolderPrintControllerTest.php    | 199 +++++++++++++++++-
 .../app/resource/ResControllerTest.php        |   2 +-
 2 files changed, 193 insertions(+), 8 deletions(-)

diff --git a/test/unitTests/app/resource/FolderPrintControllerTest.php b/test/unitTests/app/resource/FolderPrintControllerTest.php
index 3169adcc62c..c03516ade53 100755
--- a/test/unitTests/app/resource/FolderPrintControllerTest.php
+++ b/test/unitTests/app/resource/FolderPrintControllerTest.php
@@ -13,6 +13,8 @@ class FolderPrintControllerTest extends TestCase
 {
     private static $noteId = null;
     private static $attachmentId = null;
+    private static $emailId = null;
+    private static $acknowledgementReceiptId = null;
 
     public function testGenerateFile()
     {
@@ -65,6 +67,41 @@ class FolderPrintControllerTest extends TestCase
         self::$attachmentId = $responseBody->id;
         $this->assertIsInt(self::$attachmentId);
 
+        // CREATE EMAIL
+        self::$emailId = \Email\controllers\EmailController::createEmail([
+            'userId'    => $GLOBALS['id'],
+            'data'      => [
+                'sender'        => ['email' => 'support@maarch.fr'],
+                'recipients'    => ['dev@maarch.org'],
+                'object'        => 'TU Folder Print Email',
+                'body'          => 'TU Folder Print Email' . '<a href="#">'._CLICK_HERE.'</a>',
+                'document'      => ['id' => $GLOBALS['resources'][0], 'isLinked' => true, 'original' => true],
+                'isHtml'        => true,
+                'status'        => 'WAITING'
+            ]
+        ]);
+
+        // CREATE ACKNOWLEDGEMENT RECEIPT
+        $storeResult = \Docserver\controllers\DocserverController::storeResourceOnDocServer([
+            'collId'            => 'letterbox_coll',
+            'docserverTypeId'   => 'ACKNOWLEDGEMENT_RECEIPTS',
+            'encodedResource'   => $encodedFile,
+            'format'            => 'txt'
+        ]);
+
+        $this->assertEmpty($storeResult['errors']);
+
+        self::$acknowledgementReceiptId = \AcknowledgementReceipt\models\AcknowledgementReceiptModel::create([
+            'resId'             => $GLOBALS['resources'][0],
+            'type'              => 'simple',
+            'format'            => 'html',
+            'userId'            => $GLOBALS['id'],
+            'contactId'         => 1,
+            'docserverId'       => 'ACKNOWLEDGEMENT_RECEIPTS',
+            'path'              => $storeResult['directory'],
+            'filename'          => $storeResult['file_destination_name'],
+            'fingerprint'       => $storeResult['fingerPrint']
+        ]);
 
         //  CREATE LINK
         \Resource\models\ResModel::update(['set' => ['linked_resources' => json_encode([$GLOBALS['resources'][1], $GLOBALS['resources'][1] * 1000])], 'where' => ['res_id = ?'], 'data' => [$GLOBALS['resources'][0]]]);
@@ -279,6 +316,27 @@ class FolderPrintControllerTest extends TestCase
         $responseBody = json_decode((string)$response->getBody(), true);
         $this->assertSame('Note(s) not found', $responseBody['errors']);
 
+        $body = [
+            "resources" => [
+                [
+                    "resId"                   => $GLOBALS['resources'][1],
+                    "document"                => false,
+                    "attachments"             => [],
+                    "notes"                   => [self::$noteId],
+                    "acknowledgementReceipts" => [],
+                    "emails"                  => [],
+                    "linkedResources"         => []
+                ]
+            ]
+        ];
+
+        $fullRequest = \httpRequestCustom::addContentInBody($body, $request);
+
+        $response     = $folderPrintController->generateFile($fullRequest, new \Slim\Http\Response());
+        $this->assertSame(400, $response->getStatusCode());
+        $responseBody = json_decode((string)$response->getBody(), true);
+        $this->assertSame('Note not linked to resource', $responseBody['errors']);
+
         // Linked resources errors
         $body = [
             "resources" => [
@@ -474,6 +532,134 @@ class FolderPrintControllerTest extends TestCase
         $responseBody = json_decode((string)$response->getBody(), true);
         $this->assertSame('LinkedResources attachment is not linked to resource', $responseBody['errors']);
 
+        // Acknowledgement receipt errors
+        $body = [
+            "resources" => [
+                [
+                    "resId"                   => $GLOBALS['resources'][0],
+                    "document"                => false,
+                    "attachments"             => [],
+                    "notes"                   => [],
+                    "acknowledgementReceipts" => ['wrong format'],
+                    "emails"                  => [],
+                    "linkedResources"         => []
+                ]
+            ]
+        ];
+
+        $fullRequest = \httpRequestCustom::addContentInBody($body, $request);
+
+        $response     = $folderPrintController->generateFile($fullRequest, new \Slim\Http\Response());
+        $this->assertSame(400, $response->getStatusCode());
+        $responseBody = json_decode((string)$response->getBody(), true);
+        $this->assertSame('Acknowledgement Receipt id is not an integer', $responseBody['errors']);
+
+        $body = [
+            "resources" => [
+                [
+                    "resId"                   => $GLOBALS['resources'][0],
+                    "document"                => false,
+                    "attachments"             => [],
+                    "notes"                   => [],
+                    "acknowledgementReceipts" => [self::$acknowledgementReceiptId, self::$acknowledgementReceiptId * 1000],
+                    "emails"                  => [],
+                    "linkedResources"         => []
+                ]
+            ]
+        ];
+
+        $fullRequest = \httpRequestCustom::addContentInBody($body, $request);
+
+        $response     = $folderPrintController->generateFile($fullRequest, new \Slim\Http\Response());
+        $this->assertSame(400, $response->getStatusCode());
+        $responseBody = json_decode((string)$response->getBody(), true);
+        $this->assertSame('Acknowledgement Receipt(s) not found', $responseBody['errors']);
+
+        $body = [
+            "resources" => [
+                [
+                    "resId"                   => $GLOBALS['resources'][1],
+                    "document"                => false,
+                    "attachments"             => [],
+                    "notes"                   => [],
+                    "acknowledgementReceipts" => [self::$acknowledgementReceiptId],
+                    "emails"                  => [],
+                    "linkedResources"         => []
+                ]
+            ]
+        ];
+
+        $fullRequest = \httpRequestCustom::addContentInBody($body, $request);
+
+        $response     = $folderPrintController->generateFile($fullRequest, new \Slim\Http\Response());
+        $this->assertSame(400, $response->getStatusCode());
+        $responseBody = json_decode((string)$response->getBody(), true);
+        $this->assertSame('Acknowledgement Receipt not linked to resource', $responseBody['errors']);
+
+        // Email errors
+        $body = [
+            "resources" => [
+                [
+                    "resId"                   => $GLOBALS['resources'][0],
+                    "document"                => false,
+                    "attachments"             => [],
+                    "notes"                   => [],
+                    "acknowledgementReceipts" => [],
+                    "emails"                  => ['wrong format'],
+                    "linkedResources"         => []
+                ]
+            ]
+        ];
+
+        $fullRequest = \httpRequestCustom::addContentInBody($body, $request);
+
+        $response     = $folderPrintController->generateFile($fullRequest, new \Slim\Http\Response());
+        $this->assertSame(400, $response->getStatusCode());
+        $responseBody = json_decode((string)$response->getBody(), true);
+        $this->assertSame('Email id is not an integer', $responseBody['errors']);
+
+        $body = [
+            "resources" => [
+                [
+                    "resId"                   => $GLOBALS['resources'][0],
+                    "document"                => false,
+                    "attachments"             => [],
+                    "notes"                   => [],
+                    "acknowledgementReceipts" => [],
+                    "emails"                  => [self::$emailId, self::$emailId * 1000],
+                    "linkedResources"         => []
+                ]
+            ]
+        ];
+
+        $fullRequest = \httpRequestCustom::addContentInBody($body, $request);
+
+        $response     = $folderPrintController->generateFile($fullRequest, new \Slim\Http\Response());
+        $this->assertSame(400, $response->getStatusCode());
+        $responseBody = json_decode((string)$response->getBody(), true);
+        $this->assertSame('Email(s) not found', $responseBody['errors']);
+
+        $body = [
+            "resources" => [
+                [
+                    "resId"                   => $GLOBALS['resources'][1],
+                    "document"                => false,
+                    "attachments"             => [],
+                    "notes"                   => [],
+                    "acknowledgementReceipts" => [],
+                    "emails"                  => [self::$emailId],
+                    "linkedResources"         => []
+                ]
+            ]
+        ];
+
+        $fullRequest = \httpRequestCustom::addContentInBody($body, $request);
+
+        $response     = $folderPrintController->generateFile($fullRequest, new \Slim\Http\Response());
+        $this->assertSame(400, $response->getStatusCode());
+        $responseBody = json_decode((string)$response->getBody(), true);
+        $this->assertSame('Email not linked to resource', $responseBody['errors']);
+
         // Success
         $body = [
             "resources" => [[
@@ -481,8 +667,8 @@ class FolderPrintControllerTest extends TestCase
                 "document"                => true,
                 "attachments"             => [self::$attachmentId],
                 "notes"                   => [self::$noteId],
-                "acknowledgementReceipts" => [],
-                "emails"                  => [],
+                "acknowledgementReceipts" => [self::$acknowledgementReceiptId],
+                "emails"                  => [self::$emailId],
                 "linkedResources"         => [
                     [
                         'resId'     => $GLOBALS['resources'][1],
@@ -526,11 +712,10 @@ class FolderPrintControllerTest extends TestCase
         $fullRequest = \httpRequestCustom::addContentInBody($body, $request);
 
         $response     = $folderPrintController->generateFile($fullRequest, new \Slim\Http\Response());
-        $responseBody = json_decode((string)$response->getBody());
-        print_r($responseBody);
         $this->assertSame(200, $response->getStatusCode());
 
-        $this->assertSame(null, $responseBody);
+        $headers = $response->getHeaders();
+        $this->assertSame('application/pdf', $headers['Content-Type'][0]);
 
         // GENERATE FOLDER PRINT 2
 
@@ -585,9 +770,9 @@ class FolderPrintControllerTest extends TestCase
 
         $response     = $folderPrintController->generateFile($fullRequest, new \Slim\Http\Response());
         $this->assertSame(200, $response->getStatusCode());
-        $responseBody = json_decode((string)$response->getBody());
 
-        $this->assertSame(null, $responseBody);
+        $headers = $response->getHeaders();
+        $this->assertSame('application/pdf', $headers['Content-Type'][0]);
 
         // DELETE NOTE
         $environment  = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'DELETE']);
diff --git a/test/unitTests/app/resource/ResControllerTest.php b/test/unitTests/app/resource/ResControllerTest.php
index fdd0a7d7735..94f319c674b 100755
--- a/test/unitTests/app/resource/ResControllerTest.php
+++ b/test/unitTests/app/resource/ResControllerTest.php
@@ -1078,7 +1078,7 @@ class ResControllerTest extends TestCase
         $this->assertIsString($responseBody['information']['fingerprint']);
         $this->assertNotEmpty($responseBody['information']['fingerprint']);
         $this->assertSame(46, $responseBody['information']['filesize']);
-        $this->assertSame('ERROR', $responseBody['information']['fulltext_result']);
+        $this->assertIsString($responseBody['information']['fulltext_result']);
         $this->assertSame(true, $responseBody['information']['canConvert']);
     }
 
-- 
GitLab