diff --git a/Tests/Normalizer/Features/CircularReferenceTestTrait.php b/Tests/Normalizer/Features/CircularReferenceTestTrait.php index 1f51cc26a..99eb10120 100644 --- a/Tests/Normalizer/Features/CircularReferenceTestTrait.php +++ b/Tests/Normalizer/Features/CircularReferenceTestTrait.php @@ -10,23 +10,36 @@ */ trait CircularReferenceTestTrait { - abstract protected function getNormalizerForCircularReference(): NormalizerInterface; + abstract protected function getNormalizerForCircularReference(array $defaultContext): NormalizerInterface; abstract protected function getSelfReferencingModel(); - public function testUnableToNormalizeCircularReference() + public function provideUnableToNormalizeCircularReference(): array { - $normalizer = $this->getNormalizerForCircularReference(); + return [ + [[], [], 1], + [['circular_reference_limit' => 2], [], 2], + [['circular_reference_limit' => 2], ['circular_reference_limit' => 3], 3], + ]; + } + + /** + * @dataProvider provideUnableToNormalizeCircularReference + */ + public function testUnableToNormalizeCircularReference(array $defaultContext, array $context, int $expectedLimit) + { + $normalizer = $this->getNormalizerForCircularReference($defaultContext); $obj = $this->getSelfReferencingModel(); $this->expectException(CircularReferenceException::class); - $normalizer->normalize($obj, null, ['circular_reference_limit' => 2]); + $this->expectExceptionMessage(sprintf('A circular reference has been detected when serializing the object of class "%s" (configured limit: %d).', \get_class($obj), $expectedLimit)); + $normalizer->normalize($obj, null, $context); } public function testCircularReferenceHandler() { - $normalizer = $this->getNormalizerForCircularReference(); + $normalizer = $this->getNormalizerForCircularReference([]); $obj = $this->getSelfReferencingModel(); $expected = ['me' => \get_class($obj)]; diff --git a/Tests/Normalizer/GetSetMethodNormalizerTest.php b/Tests/Normalizer/GetSetMethodNormalizerTest.php index 29b4f5498..d6beb7c19 100644 --- a/Tests/Normalizer/GetSetMethodNormalizerTest.php +++ b/Tests/Normalizer/GetSetMethodNormalizerTest.php @@ -231,10 +231,10 @@ protected function getNormalizerForCallbacks(): GetSetMethodNormalizer return new GetSetMethodNormalizer($classMetadataFactory, new MetadataAwareNameConverter($classMetadataFactory)); } - protected function getNormalizerForCircularReference(): GetSetMethodNormalizer + protected function getNormalizerForCircularReference(array $defaultContext): GetSetMethodNormalizer { $classMetadataFactory = new ClassMetadataFactory(new AnnotationLoader(new AnnotationReader())); - $normalizer = new GetSetMethodNormalizer($classMetadataFactory, new MetadataAwareNameConverter($classMetadataFactory)); + $normalizer = new GetSetMethodNormalizer($classMetadataFactory, new MetadataAwareNameConverter($classMetadataFactory), null, null, null, $defaultContext); new Serializer([$normalizer]); return $normalizer; diff --git a/Tests/Normalizer/ObjectNormalizerTest.php b/Tests/Normalizer/ObjectNormalizerTest.php index 87c218818..6b2474c14 100644 --- a/Tests/Normalizer/ObjectNormalizerTest.php +++ b/Tests/Normalizer/ObjectNormalizerTest.php @@ -338,9 +338,9 @@ protected function getNormalizerForCallbacks(): ObjectNormalizer // circular reference - protected function getNormalizerForCircularReference(): ObjectNormalizer + protected function getNormalizerForCircularReference(array $defaultContext): ObjectNormalizer { - $normalizer = new ObjectNormalizer(); + $normalizer = new ObjectNormalizer(null, null, null, null, null, null, $defaultContext); new Serializer([$normalizer]); return $normalizer; diff --git a/Tests/Normalizer/PropertyNormalizerTest.php b/Tests/Normalizer/PropertyNormalizerTest.php index f93f76167..78d75471d 100644 --- a/Tests/Normalizer/PropertyNormalizerTest.php +++ b/Tests/Normalizer/PropertyNormalizerTest.php @@ -163,9 +163,9 @@ protected function getNormalizerForCallbacks(): PropertyNormalizer return new PropertyNormalizer(); } - protected function getNormalizerForCircularReference(): PropertyNormalizer + protected function getNormalizerForCircularReference(array $defaultContext): PropertyNormalizer { - $normalizer = new PropertyNormalizer(); + $normalizer = new PropertyNormalizer(null, null, null, null, null, $defaultContext); new Serializer([$normalizer]); return $normalizer;