From 07a6b8ff4c6159ee3d0fe95f9bd9c8aa9e427edb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20L=C3=A9v=C3=AAque?= Date: Thu, 30 Mar 2023 10:26:35 +0200 Subject: [PATCH] fix(resultSet): Fix buildModel argument order when called via buildModelFromIndexAndData (#159) --- src/ResultSetBuilder.php | 2 +- tests/ResultSetBuilderTest.php | 70 ++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 tests/ResultSetBuilderTest.php diff --git a/src/ResultSetBuilder.php b/src/ResultSetBuilder.php index fbee602..355414c 100644 --- a/src/ResultSetBuilder.php +++ b/src/ResultSetBuilder.php @@ -56,7 +56,7 @@ public function buildResultSet(Response $response, Query $query): ResultSet public function buildModelFromIndexAndData(string $indexName, $source) { - return $this->buildModel($indexName, $source, []); + return $this->buildModel($source, $indexName, []); } public function buildModelFromDocument(ElasticaDocument $document) diff --git a/tests/ResultSetBuilderTest.php b/tests/ResultSetBuilderTest.php new file mode 100644 index 0000000..7e88cf7 --- /dev/null +++ b/tests/ResultSetBuilderTest.php @@ -0,0 +1,70 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace JoliCode\Elastically\Tests; + +use JoliCode\Elastically\IndexNameMapper; +use JoliCode\Elastically\ResultSetBuilder; +use JoliCode\Elastically\Serializer\ContextBuilderInterface; +use PHPUnit\Framework\TestCase; +use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; + +class ResultSetBuilderTest extends TestCase +{ + public function testBuildModelFromIndexAndData(): void + { + $indexNameMapper = $this->getMockBuilder(IndexNameMapper::class) + ->disableOriginalConstructor() + ->getMock() + ; + + $indexNameMapper + ->expects($this->once()) + ->method('getPureIndexName') + ->with($this->equalTo('indexName')) + ->willReturn('indexName') + ; + + $indexNameMapper + ->expects($this->once()) + ->method('getClassFromIndexName') + ->with($this->equalTo('indexName')) + ->willReturn(TestDTO::class) + ; + + $contextBuilder = $this->getMockBuilder(ContextBuilderInterface::class) + ->disableOriginalConstructor() + ->getMock() + ; + + $contextBuilder + ->expects($this->once()) + ->method('buildContext') + ->with($this->equalTo(TestDTO::class)) + ->willReturn([]) + ; + + $denormalizer = $this->getMockBuilder(DenormalizerInterface::class) + ->disableOriginalConstructor() + ->getMock() + ; + + $denormalizer + ->expects($this->once()) + ->method('denormalize') + ->with(['id' => 1234], TestDTO::class, null, []) + ->willReturn([]) + ; + + $resultSetBuilder = new ResultSetBuilder($indexNameMapper, $contextBuilder, $denormalizer); + $resultSetBuilder->buildModelFromIndexAndData('indexName', ['id' => 1234]); + } +}