From 41d88253a9ee2daadc2bf92cfd7de1edb9f64197 Mon Sep 17 00:00:00 2001 From: exaby73 Date: Fri, 9 Aug 2024 15:49:38 +0530 Subject: [PATCH] fix: Double results when iterating after deserialization --- src/Types/AbstractCypherSequence.php | 2 +- tests/Unit/CypherListTest.php | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/Types/AbstractCypherSequence.php b/src/Types/AbstractCypherSequence.php index 1b5bb977..7b7a54f6 100644 --- a/src/Types/AbstractCypherSequence.php +++ b/src/Types/AbstractCypherSequence.php @@ -564,7 +564,7 @@ public function __serialize(): array $this->preload(); $tbr = get_object_vars($this); - $tbr['generator'] = new ArrayIterator($this->cache); + $tbr['generator'] = new ArrayIterator(); $tbr['currentPosition'] = 0; $tbr['generatorPosition'] = 0; diff --git a/tests/Unit/CypherListTest.php b/tests/Unit/CypherListTest.php index b5307df0..f83e155f 100644 --- a/tests/Unit/CypherListTest.php +++ b/tests/Unit/CypherListTest.php @@ -47,6 +47,21 @@ public function setUp(): void $this->list = new CypherList(['A', 'B', 'C']); } + // https://github.com/neo4j-php/neo4j-php-client/issues/220 + public function testNoDoubleResultsAfterDeserialization(): void + { + $list = new CypherList(['A', 'B', 'C']); + $serialized = serialize($list); + $unserialized = unserialize($serialized); + + $count = 0; + foreach ($unserialized as $item) { + ++$count; + } + + self::assertEquals(3, $count); + } + public function testFromIterableEqual(): void { $fromIterable = CypherList::fromIterable($this->list);