Skip to content

Commit ea6878b

Browse files
committed
Test invalidation for dependent documents
1 parent c38800b commit ea6878b

File tree

2 files changed

+64
-1
lines changed

2 files changed

+64
-1
lines changed

tests/Integration/Helpers/TestDocumentFactory.php

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
namespace Neusta\Pimcore\HttpCacheBundle\Tests\Integration\Helpers;
44

5+
use Pimcore\Model\DataObject\TestObject;
6+
use Pimcore\Model\Document\Editable\Relation;
57
use Pimcore\Model\Document\Email;
68
use Pimcore\Model\Document\Folder;
79
use Pimcore\Model\Document\Hardlink;
@@ -10,14 +12,25 @@
1012

1113
final class TestDocumentFactory
1214
{
13-
public static function simplePage(int $id, string $key = 'test_document_page'): Page
15+
public static function simplePage(int $id, string $key = 'test_document_page', ?TestObject $relatedObject = null): Page
1416
{
1517
$page = new Page();
1618
$page->setId($id);
1719
$page->setKey($key);
1820
$page->setPublished(true);
1921
$page->setParentId(1);
2022

23+
if (null !== $relatedObject) {
24+
$objectRelation = new Relation();
25+
$objectRelation->setDataFromResource([
26+
'id' => $relatedObject->getId(),
27+
'type' => 'object',
28+
'subtype' => 'object',
29+
]);
30+
31+
$page->setEditable($objectRelation);
32+
}
33+
2134
return $page;
2235
}
2336

tests/Integration/Invalidation/InvalidateDocumentTest.php

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@
33
namespace Neusta\Pimcore\HttpCacheBundle\Tests\Integration\Invalidation;
44

55
use FOS\HttpCacheBundle\CacheManager;
6+
use Neusta\Pimcore\HttpCacheBundle\Cache\CacheTag;
67
use Neusta\Pimcore\HttpCacheBundle\Tests\Integration\Helpers\ArrangeCacheTest;
78
use Neusta\Pimcore\HttpCacheBundle\Tests\Integration\Helpers\TestDocumentFactory;
9+
use Neusta\Pimcore\HttpCacheBundle\Tests\Integration\Helpers\TestObjectFactory;
810
use Neusta\Pimcore\TestingFramework\Database\ResetDatabase;
911
use Neusta\Pimcore\TestingFramework\Test\Attribute\ConfigureExtension;
1012
use Neusta\Pimcore\TestingFramework\Test\ConfigurableKernelTestCase;
@@ -57,6 +59,30 @@ public function response_is_invalidated_when_document_is_updated(): void
5759
$this->cacheManager->invalidateTags(['d5'])->shouldHaveBeenCalledTimes(1);
5860
}
5961

62+
/**
63+
* @test
64+
*/
65+
#[ConfigureExtension('neusta_pimcore_http_cache', [
66+
'elements' => [
67+
'objects' => true,
68+
'documents' => true,
69+
],
70+
])]
71+
public function dependent_document_is_invalidated_on_object_update(): void
72+
{
73+
$dependent = self::arrange(
74+
fn () => TestObjectFactory::simpleObject(12)->save(),
75+
);
76+
$document = self::arrange(
77+
fn () => TestDocumentFactory::simplePage(96, 'other_test_document_page', $dependent)->save(),
78+
);
79+
80+
$dependent->setContent('Updated test content')->save();
81+
82+
$this->cacheManager->invalidateTags([CacheTag::fromElement($document)->toString()])
83+
->shouldHaveBeenCalledTimes(1);
84+
}
85+
6086
/**
6187
* @test
6288
*/
@@ -72,6 +98,30 @@ public function response_is_invalidated_when_document_is_deleted(): void
7298
$this->cacheManager->invalidateTags(['d5'])->shouldHaveBeenCalledTimes(1);
7399
}
74100

101+
/**
102+
* @test
103+
*/
104+
#[ConfigureExtension('neusta_pimcore_http_cache', [
105+
'elements' => [
106+
'objects' => true,
107+
'documents' => true,
108+
],
109+
])]
110+
public function dependent_document_is_invalidated_on_object_deletion(): void
111+
{
112+
$dependent = self::arrange(
113+
fn () => TestObjectFactory::simpleObject(12)->save(),
114+
);
115+
$document = self::arrange(
116+
fn () => TestDocumentFactory::simplePage(96, 'other_test_document_page', $dependent)->save(),
117+
);
118+
119+
$dependent->delete();
120+
121+
$this->cacheManager->invalidateTags([CacheTag::fromElement($document)->toString()])
122+
->shouldHaveBeenCalledTimes(1);
123+
}
124+
75125
/**
76126
* @test
77127
*/

0 commit comments

Comments
 (0)