Skip to content

Commit 0916acc

Browse files
Merge branch '7.0' into 7
2 parents 16363d0 + db8adfd commit 0916acc

File tree

4 files changed

+78
-1
lines changed

4 files changed

+78
-1
lines changed

src/Extension/Engine/SiteTreePublishingEngine.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ public function collectChanges($context)
196196
}
197197

198198
// The page does not include the required extension, and it doesn't implement a Trigger
199-
if (!$siteTree->hasExtension(PublishableSiteTree::class) && !($siteTree instanceof StaticPublishingTrigger)) {
199+
if (!$siteTree->hasExtension(StaticPublishingTrigger::class) && !($siteTree instanceof StaticPublishingTrigger)) {
200200
return;
201201
}
202202

tests/php/Extension/Engine/SiteTreePublishingEngineTest.php

+35
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
use SilverStripe\StaticPublishQueue\Job\GenerateStaticCacheJob;
1515
use SilverStripe\StaticPublishQueue\Service\UrlBundleService;
1616
use SilverStripe\StaticPublishQueue\Test\QueuedJobsTestService;
17+
use SilverStripe\StaticPublishQueue\Test\StaticPublisherTest\Model\ExtensionAddsTrigger;
18+
use SilverStripe\StaticPublishQueue\Test\StaticPublisherTest\Model\DataObjectNoTrigger;
1719
use Symbiote\QueuedJobs\DataObjects\QueuedJobDescriptor;
1820
use Symbiote\QueuedJobs\Services\QueuedJob;
1921
use Symbiote\QueuedJobs\Services\QueuedJobHandler;
@@ -232,6 +234,39 @@ public function testDoUnpublish(): void
232234
$this->assertEqualsCanonicalizing($expectedUrls, $resultUrls);
233235
}
234236

237+
public function testStaticPublishingTriggerOnExtension(): void
238+
{
239+
// Inclusion of parent/child is tested in PublishableSiteTreeTest
240+
SiteTree::config()->set('regenerate_parents', PublishableSiteTree::REGENERATE_RELATIONS_NONE);
241+
SiteTree::config()->set('regenerate_children', PublishableSiteTree::REGENERATE_RELATIONS_NONE);
242+
243+
DataObjectNoTrigger::add_extension(ExtensionAddsTrigger::class);
244+
DataObjectNoTrigger::add_extension(SiteTreePublishingEngine::class);
245+
246+
/** @var QueuedJobsTestService $service */
247+
$service = QueuedJobService::singleton();
248+
249+
$dataObject = DataObjectNoTrigger::create()->write();
250+
$dataObject->publishRecursive();
251+
252+
$jobs = $service->getJobs();
253+
254+
// We should only have 1 job queued
255+
$this->assertCount(1, $jobs);
256+
257+
// Let's grab the job and inspect the contents
258+
/** @var GenerateStaticCacheJob $updateJob */
259+
$updateJob = $this->getJobByClassName($jobs, GenerateStaticCacheJob::class);
260+
261+
$expectedUrls = [
262+
'http://example.com/subpage/dataobject-1',
263+
];
264+
$resultUrls = array_keys($updateJob->getJobData()->jobData->URLsToProcess);
265+
266+
$this->assertInstanceOf(GenerateStaticCacheJob::class, $updateJob);
267+
$this->assertEqualsCanonicalizing($expectedUrls, $resultUrls);
268+
}
269+
235270
protected function getJobByClassName(array $jobs, string $className): ?QueuedJob
236271
{
237272
foreach ($jobs as $job) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
3+
namespace SilverStripe\StaticPublishQueue\Test\StaticPublisherTest\Model;
4+
5+
use SilverStripe\Dev\TestOnly;
6+
use SilverStripe\ORM\DataObject;
7+
8+
class DataObjectNoTrigger extends DataObject implements TestOnly
9+
{
10+
public function AbsoluteLink()
11+
{
12+
return 'http://example.com/subpage/dataobject-1';
13+
}
14+
}
15+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
3+
namespace SilverStripe\StaticPublishQueue\Test\StaticPublisherTest\Model;
4+
5+
use SilverStripe\Dev\TestOnly;
6+
use SilverStripe\Core\Extension;
7+
use SilverStripe\StaticPublishQueue\Contract\StaticPublishingTrigger;
8+
use SilverStripe\StaticPublishQueue\Contract\StaticallyPublishable;
9+
10+
class ExtensionAddsTrigger extends Extension implements StaticallyPublishable, StaticPublishingTrigger, TestOnly
11+
{
12+
public function urlsToCache()
13+
{
14+
return [$this->owner->AbsoluteLink() => 0];
15+
}
16+
17+
public function objectsToUpdate($context)
18+
{
19+
return $this->owner;
20+
}
21+
22+
public function objectsToDelete($context)
23+
{
24+
return [];
25+
}
26+
}
27+

0 commit comments

Comments
 (0)