WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

Commit 4749a5f

Browse files
committed
Fix infinte resolve loop
1 parent f36e36d commit 4749a5f

File tree

2 files changed

+24
-7
lines changed

2 files changed

+24
-7
lines changed

Content/Infrastructure/Sulu/Structure/DecoratedStructureResolver.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,12 @@ public function __construct(private StructureResolverInterface $inner)
2929
/**
3030
* @return mixed[]
3131
*/
32-
public function resolve(StructureInterface $structure, bool $loadExcerpt = true): array
32+
public function resolve(StructureInterface $structure, bool $loadExcerpt = true/*, array $includedProperties = null*/): array
3333
{
34-
$data = $this->inner->resolve($structure, $loadExcerpt);
34+
$includedProperties = (\func_num_args() > 2) ? \func_get_arg(2) : null;
35+
36+
/** @phpstan-ignore-next-line */
37+
$data = $this->inner->resolve($structure, $loadExcerpt, $includedProperties);
3538

3639
if (!$structure instanceof ContentStructureBridge) {
3740
return $data;

Tests/Unit/Content/Infrastructure/Sulu/Structure/DecoratedStructureResolverTest.php

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public function testResolveWithNonContentStructureBridge(): void
5050
$structure = $this->prophesize(StructureInterface::class);
5151
$expectedData = ['key' => 'value'];
5252

53-
$this->innerResolver->resolve($structure->reveal(), true)
53+
$this->innerResolver->resolve($structure->reveal(), true, null)
5454
->willReturn($expectedData);
5555

5656
$result = $this->decoratedResolver->resolve($structure->reveal());
@@ -68,7 +68,7 @@ public function testResolveWithContentStructureBridgeNonAuthorInterface(): void
6868
$document->getContent()->willReturn($content);
6969

7070
$expectedData = ['key' => 'value'];
71-
$this->innerResolver->resolve($structure->reveal(), true)
71+
$this->innerResolver->resolve($structure->reveal(), true, null)
7272
->willReturn($expectedData);
7373

7474
$result = $this->decoratedResolver->resolve($structure->reveal());
@@ -88,7 +88,7 @@ public function testResolveWithContentStructureBridgeAndAuthorInterface(): void
8888
$document->getContent()->willReturn($content->reveal());
8989

9090
$expectedData = ['key' => 'value'];
91-
$this->innerResolver->resolve($structure->reveal(), true)
91+
$this->innerResolver->resolve($structure->reveal(), true, null)
9292
->willReturn($expectedData);
9393

9494
$authDate = new \DateTimeImmutable();
@@ -117,7 +117,7 @@ public function testResolveWithContentStructureBridgeAndAuthorInterfaceNoAuthor(
117117
$document->getContent()->willReturn($content->reveal());
118118

119119
$expectedData = ['key' => 'value'];
120-
$this->innerResolver->resolve($structure->reveal(), true)
120+
$this->innerResolver->resolve($structure->reveal(), true, null)
121121
->willReturn($expectedData);
122122

123123
$content->getAuthored()->willReturn(null);
@@ -138,11 +138,25 @@ public function testResolveWithExcerptFlag(): void
138138
$structure = $this->prophesize(StructureInterface::class);
139139
$expectedData = ['key' => 'value'];
140140

141-
$this->innerResolver->resolve($structure->reveal(), false)
141+
$this->innerResolver->resolve($structure->reveal(), false, null)
142142
->willReturn($expectedData);
143143

144144
$result = $this->decoratedResolver->resolve($structure->reveal(), false);
145145

146146
$this->assertSame($expectedData, $result);
147147
}
148+
149+
public function testResolveWithIncludedProperties(): void
150+
{
151+
$structure = $this->prophesize(StructureInterface::class);
152+
$includedProperties = ['title' => 'title', 'url' => 'url'];
153+
$expectedData = ['key' => 'value'];
154+
155+
$this->innerResolver->resolve($structure->reveal(), false, $includedProperties)
156+
->willReturn($expectedData);
157+
158+
$result = $this->decoratedResolver->resolve($structure->reveal(), false, $includedProperties);
159+
160+
$this->assertSame($expectedData, $result);
161+
}
148162
}

0 commit comments

Comments
 (0)