From 3852d16a212f90069a7256bcff5407fdfd3646d2 Mon Sep 17 00:00:00 2001
From: Carsten  Rose <carsten.rose@math.uzh.ch>
Date: Sun, 7 Nov 2021 18:50:58 +0100
Subject: [PATCH] Refs #13330 - Fix unit test

---
 extension/Classes/Core/QuickFormQuery.php |  2 +-
 extension/Classes/Core/Save.php           | 11 +++++------
 extension/Tests/Unit/Core/SaveTest.php    | 10 +++++-----
 3 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/extension/Classes/Core/QuickFormQuery.php b/extension/Classes/Core/QuickFormQuery.php
index 65c66019e..8b8b4555c 100644
--- a/extension/Classes/Core/QuickFormQuery.php
+++ b/extension/Classes/Core/QuickFormQuery.php
@@ -576,7 +576,7 @@ class QuickFormQuery {
                 // SAVE
                 $save = new Save($this->formSpec, $this->feSpecAction, $this->feSpecNative, $this->feSpecNativeRaw);
 
-                $rc = $save->process($recordId, $formAction);
+                $rc = $save->process($recordId);
 
                 if ($formMode == FORM_REST) {
                     $data = $this->doRestPostPut($rc);
diff --git a/extension/Classes/Core/Save.php b/extension/Classes/Core/Save.php
index e3882d414..436ee89ce 100644
--- a/extension/Classes/Core/Save.php
+++ b/extension/Classes/Core/Save.php
@@ -94,7 +94,6 @@ class Save {
      * Starts save process. Returns recordId.
      *
      * @param $recordId
-     * @param $formAction
      * @return int
      * @throws \CodeException
      * @throws \DbException
@@ -103,8 +102,8 @@ class Save {
      * @throws \UserFormException
      * @throws \UserReportException
      */
-    public function process($recordId, FormAction $formAction) {
-        $rc = 0;
+    public function process($recordId) {
+        $formAction = new FormAction($this->formSpec, $this->dbArray[$this->dbIndexData]);
 
         if ($this->formSpec[F_MULTI_SQL] == '') {
             // If an old record exist: load it. Necessary to delete uploaded files which should be overwritten.
@@ -156,7 +155,7 @@ class Save {
         }
 
         // Action: Paste
-        $this->pasteClipboard($this->formSpec[F_ID], $formAction);
+        $this->pasteClipboard($this->formSpec[F_ID] ?? '', $formAction);
 
         return $rc;
     }
@@ -855,8 +854,8 @@ class Save {
             $this->store->setVar(SYSTEM_FORM_ELEMENT, "Column: " . $formElement[FE_NAME], STORE_SYSTEM);
 
             // Normalize FE_MODE
-            $mode = Support::handleEscapeSpaceComment($formElement[FE_MODE_SQL]);
-            $mode = empty($mode) ? $formElement[FE_MODE] : $this->evaluate->parse($mode);
+            $mode = Support::handleEscapeSpaceComment($formElement[FE_MODE_SQL] ?? '');
+            $mode = empty($mode) ? ($formElement[FE_MODE] ?? '') : $this->evaluate->parse($mode);
             $this->feSpecNative[$key][FE_MODE] = $formElement[FE_MODE] = $mode;
             $this->feSpecNative[$key][FE_MODE_SQL] = $formElement[FE_MODE_SQL] = '';
 
diff --git a/extension/Tests/Unit/Core/SaveTest.php b/extension/Tests/Unit/Core/SaveTest.php
index 6de3664c4..db7a82436 100644
--- a/extension/Tests/Unit/Core/SaveTest.php
+++ b/extension/Tests/Unit/Core/SaveTest.php
@@ -110,7 +110,7 @@ class SaveTest extends AbstractDatabaseTest {
         // ------------- Check: Insert -------------
         // 1) Expect INSERT into Person
         $save = new Save($formSpec, [], $feSpecNative, $feSpecNative);
-        $save->process();
+        $save->process(0);
 
         // Get newly save record
         $sql = "SELECT name, firstName FROM Person WHERE name like 'DoeTmp'";
@@ -127,7 +127,7 @@ class SaveTest extends AbstractDatabaseTest {
         $this->store::setVar(SIP_RECORD_ID, $id, STORE_SIP, true);
 
         // 1) Expect UPDATE Person
-        $save->process();
+        $save->process($id);
 
         // Get newly save record
         $sql = "SELECT name, firstName FROM Person WHERE name like 'DoeTmp'";
@@ -187,7 +187,7 @@ class SaveTest extends AbstractDatabaseTest {
          * sqlAfter adds '+' after city name.
          */
         $save = new Save($formSpec, [], $feSpecNative, $feSpecNative);
-        $save->process();
+        $save->process(0);
 
         // Get newly save record
         $sql = "SELECT city FROM Address WHERE street like 'deleteMe'";
@@ -205,7 +205,7 @@ class SaveTest extends AbstractDatabaseTest {
          * sqlAfter adds '+' after city name.
          */
 
-        $save->process();
+        $save->process(0);
 
         // Get newly save record
         $sql = "SELECT city FROM Address WHERE street like 'deleteMe'";
@@ -238,7 +238,7 @@ class SaveTest extends AbstractDatabaseTest {
         $feSpecNative = HelperFormElement::formElementSetDefault($feSpecNative, $formSpec);
 
         $save = new Save($formSpec, [], $feSpecNative, $feSpecNative);
-        $save->process();
+        $save->process(0);
 
         // Get newly save record
         $sql = "SELECT city FROM Address WHERE street like 'deleteMe'";
-- 
GitLab