From 8426f0a81e88e58f6d9202476a879d51755be6b2 Mon Sep 17 00:00:00 2001 From: soyuka Date: Mon, 25 Jan 2021 22:26:44 +0100 Subject: [PATCH 1/2] fix #3980 DataPersister supports called without context --- .../DataPersister/TraceableChainDataPersister.php | 2 +- .../TraceableChainDataPersisterTest.php | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/Bridge/Symfony/Bundle/DataPersister/TraceableChainDataPersister.php b/src/Bridge/Symfony/Bundle/DataPersister/TraceableChainDataPersister.php index 801d12e82d7..a85a79f2219 100644 --- a/src/Bridge/Symfony/Bundle/DataPersister/TraceableChainDataPersister.php +++ b/src/Bridge/Symfony/Bundle/DataPersister/TraceableChainDataPersister.php @@ -73,7 +73,7 @@ private function tracePersisters($data, array $context = []) $found = false; foreach ($this->persisters as $persister) { if ( - ($this->persistersResponse[\get_class($persister)] = $found ? false : $persister->supports($data)) + ($this->persistersResponse[\get_class($persister)] = $found ? false : $persister->supports($data, $context)) && !($persister instanceof ResumableDataPersisterInterface && $persister->resumable()) && !$found ) { diff --git a/tests/Bridge/Symfony/Bundle/DataPersister/TraceableChainDataPersisterTest.php b/tests/Bridge/Symfony/Bundle/DataPersister/TraceableChainDataPersisterTest.php index 4a231cd2fea..a8fdf1e4b9d 100644 --- a/tests/Bridge/Symfony/Bundle/DataPersister/TraceableChainDataPersisterTest.php +++ b/tests/Bridge/Symfony/Bundle/DataPersister/TraceableChainDataPersisterTest.php @@ -60,6 +60,16 @@ public function testRemove($persister, $expected) $this->assertSame($expected, array_values($result)); } + public function testSupports() { + $context = ['ok' => true]; + $persister = $this->prophesize(DataPersisterInterface::class); + $persister->supports('', $context)->willReturn(true)->shouldBeCalled(); + $chain = new ChainDataPersister([$persister->reveal()]); + $persister->persist('', $context)->shouldBeCalled(); + $dataPersister = new TraceableChainDataPersister($chain); + $dataPersister->persist('',$context); + } + public function dataPersisterProvider(): iterable { yield [ @@ -163,7 +173,7 @@ public function persist($data) public function remove($data) { } - }, + } ]), [true, false, true], ]; From eda9d8b95233ab6207c79783a74e929aace7b4ac Mon Sep 17 00:00:00 2001 From: Antoine Bluchet Date: Tue, 26 Jan 2021 09:37:39 +0100 Subject: [PATCH 2/2] Update tests/Bridge/Symfony/Bundle/DataPersister/TraceableChainDataPersisterTest.php Co-authored-by: Maks Rafalko --- .../Bundle/DataPersister/TraceableChainDataPersisterTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Bridge/Symfony/Bundle/DataPersister/TraceableChainDataPersisterTest.php b/tests/Bridge/Symfony/Bundle/DataPersister/TraceableChainDataPersisterTest.php index a8fdf1e4b9d..bb4cea1ef56 100644 --- a/tests/Bridge/Symfony/Bundle/DataPersister/TraceableChainDataPersisterTest.php +++ b/tests/Bridge/Symfony/Bundle/DataPersister/TraceableChainDataPersisterTest.php @@ -67,7 +67,7 @@ public function testSupports() { $chain = new ChainDataPersister([$persister->reveal()]); $persister->persist('', $context)->shouldBeCalled(); $dataPersister = new TraceableChainDataPersister($chain); - $dataPersister->persist('',$context); + $dataPersister->persist('', $context); } public function dataPersisterProvider(): iterable