Skip to content

Commit 132351b

Browse files
authored
Merge pull request #2089 from mauchede/fix/cache-tags-for-subresources
Add subresource collection to Cache-Tags
2 parents 1da849f + 7137738 commit 132351b

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

src/HttpCache/EventListener/AddTagsListener.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public function onKernelResponse(FilterResponseEvent $event)
5656
}
5757

5858
$resources = $request->attributes->get('_resources');
59-
if (isset($attributes['collection_operation_name'])) {
59+
if (isset($attributes['collection_operation_name']) || ($attributes['subresource_context']['collection'] ?? false)) {
6060
// Allows to purge collections
6161
$iri = $this->iriConverter->getIriFromResourceClass($attributes['resource_class']);
6262
$resources[$iri] = $iri;

tests/HttpCache/EventListener/AddTagsListenerTest.php

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,4 +166,25 @@ public function testAddCollectionIriWhenCollectionIsEmpty()
166166

167167
$this->assertSame('/dummies', $response->headers->get('Cache-Tags'));
168168
}
169+
170+
public function testAddSubResourceCollectionIri()
171+
{
172+
$iriConverterProphecy = $this->prophesize(IriConverterInterface::class);
173+
$iriConverterProphecy->getIriFromResourceClass(Dummy::class)->willReturn('/dummies')->shouldBeCalled();
174+
175+
$request = new Request([], [], ['_resources' => ['/foo', '/bar'], '_api_resource_class' => Dummy::class, '_api_subresource_operation_name' => 'api_dummies_relatedDummies_get_subresource', '_api_subresource_context' => ['collection' => true]]);
176+
177+
$response = new Response();
178+
$response->setPublic();
179+
$response->setEtag('foo');
180+
181+
$event = $this->prophesize(FilterResponseEvent::class);
182+
$event->getRequest()->willReturn($request)->shouldBeCalled();
183+
$event->getResponse()->willReturn($response)->shouldBeCalled();
184+
185+
$listener = new AddTagsListener($iriConverterProphecy->reveal());
186+
$listener->onKernelResponse($event->reveal());
187+
188+
$this->assertSame('/foo,/bar,/dummies', $response->headers->get('Cache-Tags'));
189+
}
169190
}

0 commit comments

Comments
 (0)