From d6e1b3627a50a5cce56d5320b56accabd107d851 Mon Sep 17 00:00:00 2001 From: Soufiane Ghzal Date: Sat, 25 Nov 2017 13:14:54 +0100 Subject: [PATCH] ability to dump resultSet from method getData() --- src/Core/Serp/BaseResult.php | 10 ++++-- test/suites/TDD/Core/Serp/BaseResultTest.php | 33 ++++++++++++++++++++ 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/src/Core/Serp/BaseResult.php b/src/Core/Serp/BaseResult.php index 5f869ef..a7af75c 100644 --- a/src/Core/Serp/BaseResult.php +++ b/src/Core/Serp/BaseResult.php @@ -65,10 +65,16 @@ public function getData() $data = []; foreach ($this->data as $k => $v) { $datum = $this->getDataValue($k); - if (is_array($datum)) { - foreach ($datum as $subK => $subV) { + if (is_array($datum) || (is_object($datum) && $datum instanceof ResultSetInterface)) { + // make sur datum is an array + $baseDatum = $datum; + $datum = []; + + foreach ($baseDatum as $subK => $subV) { if (is_object($subV) && $subV instanceof ResultDataInterface) { $datum[$subK] = $subV->getData(); + } else { + $datum[$subK] = $subV; } } } elseif (is_object($datum) && $datum instanceof ResultDataInterface) { diff --git a/test/suites/TDD/Core/Serp/BaseResultTest.php b/test/suites/TDD/Core/Serp/BaseResultTest.php index 293516e..939d555 100644 --- a/test/suites/TDD/Core/Serp/BaseResultTest.php +++ b/test/suites/TDD/Core/Serp/BaseResultTest.php @@ -6,6 +6,7 @@ namespace Serps\Test\TDD\Core; use Serps\Core\Serp\BaseResult; +use Serps\Core\Serp\ResultSet; /** * @covers Serps\Core\Serp\BaseResult @@ -103,6 +104,38 @@ public function testNestedInArrayGetData() } + public function testResultsetNestedInArrayGetData() + { + + + + $result = new BaseResult('classical', [ + 'foo' => 'bar', + 'bar' => function () { + $resultSet = new ResultSet(); + $resultSet->addItems([ + new BaseResult('foo', [ + 'bar' => 'baz', + 'foo' => 'qux' + ]), + new BaseResult('foo', [ + 'bar' => 'far', + 'foo' => 'boz' + ]), + ]); + return $resultSet; + } + ]); + $this->assertEquals([ + 'foo' => 'bar', + 'bar' => [ + ['bar' => 'baz', 'foo' => 'qux'], + ['bar' => 'far', 'foo' => 'boz'], + ] + ], $result->getData()); + } + + public function testGetDataValue()