Skip to content

Commit

Permalink
Merge branch '4.4' into 5.1
Browse files Browse the repository at this point in the history
* 4.4:
  Fix tests
  [Lock] Fix StoreFactory to accept same DSN syntax as AbstractAdapter
  [Serializer][Minor] Fix exception message
  • Loading branch information
fabpot committed Oct 3, 2020
2 parents acffef3 + 8e97a9c commit 6b673b8
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 11 deletions.
23 changes: 18 additions & 5 deletions Tests/Normalizer/Features/CircularReferenceTestTrait.php
Original file line number Diff line number Diff line change
Expand Up @@ -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)];
Expand Down
4 changes: 2 additions & 2 deletions Tests/Normalizer/GetSetMethodNormalizerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
4 changes: 2 additions & 2 deletions Tests/Normalizer/ObjectNormalizerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
4 changes: 2 additions & 2 deletions Tests/Normalizer/PropertyNormalizerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit 6b673b8

Please sign in to comment.