From 765af38d8997681b19fc90180f2dcee22d07ac23 Mon Sep 17 00:00:00 2001 From: robertSt7 <104770750+robertSt7@users.noreply.github.com> Date: Tue, 7 Jun 2022 14:49:30 +0200 Subject: [PATCH] [Bug]: "0" is interpreted as "--EMPTY--" in transformation pipeline (#213) * fix 0 in str_replace-Operator * Update src/Processing/ImportProcessingService.php Co-authored-by: mcop1 <89011527+mcop1@users.noreply.github.com> * Apply php-cs-fixer changes Co-authored-by: mcop1 <89011527+mcop1@users.noreply.github.com> Co-authored-by: robertSt7 --- src/Processing/ImportProcessingService.php | 6 ++-- tests/unit/SimpleOperatorTest.php | 36 ++++++++++++++++++++++ 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/src/Processing/ImportProcessingService.php b/src/Processing/ImportProcessingService.php index 967aabdf..82f6788d 100644 --- a/src/Processing/ImportProcessingService.php +++ b/src/Processing/ImportProcessingService.php @@ -331,10 +331,10 @@ public function generateTransformationResultPreview(array $importDataRow, Mappin $data = $operator->generateResultPreview($data); } - if (empty($data)) { - return '-- EMPTY --'; - } elseif (is_string($data)) { + if (is_string($data) && $data !== '') { return $data; + } elseif (empty($data)) { + return '-- EMPTY --'; } elseif (is_array($data)) { $dataStrings = []; foreach ($data as $key => $dataEntry) { diff --git a/tests/unit/SimpleOperatorTest.php b/tests/unit/SimpleOperatorTest.php index 5acb07fc..bc50303b 100644 --- a/tests/unit/SimpleOperatorTest.php +++ b/tests/unit/SimpleOperatorTest.php @@ -46,4 +46,40 @@ public function testStringReplaceEvaluateReturnTypeFunctionWithWrongInputType() $service->setSettings(['search' => 'Test', 'replace' => 'Result']); $service->evaluateReturnType("boolean"); } + + public function testStringReplaceProcessFunctionWithZero() { + $service = $this->tester->grabService(StringReplace::class); + $service->setSettings(['search' => 'ObjectKey ', 'replace' => '']); + $data = $service->process("ObjectKey 0"); + + $this->assertEquals($data, "0"); + } + + public function testStringReplaceProcessFunctionWithZeroInArray() { + $service = $this->tester->grabService(StringReplace::class); + $service->setSettings(['search' => 'Test', 'replace' => 'Result']); + $data = $service->process(["Test", "Test 0", "0"]); + + $this->assertEquals($data[0], "Result"); + $this->assertEquals($data[1], "Result 0"); + $this->assertEquals($data[2], "0"); + } + + public function testStringReplaceProcessFunctionWithEmpty() { + $service = $this->tester->grabService(StringReplace::class); + $service->setSettings(['search' => 'ObjectKey', 'replace' => '']); + $data = $service->process("ObjectKey"); + + $this->assertEquals($data, ''); + } + + public function testStringReplaceProcessFunctionWithEmptyInArray() { + $service = $this->tester->grabService(StringReplace::class); + $service->setSettings(['search' => 'Test', 'replace' => '']); + $data = $service->process(["Hello Test", "", "Test"]); + + $this->assertEquals($data[0], "Hello "); + $this->assertEquals($data[1], ""); + $this->assertEquals($data[2], ""); + } }