Skip to content

Commit bd7df84

Browse files
committed
IBX-12029: Introduced ContentPublicationResult
1 parent 295e436 commit bd7df84

6 files changed

Lines changed: 40 additions & 11 deletions

File tree

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
/**
4+
* @copyright Copyright (C) Ibexa AS. All rights reserved.
5+
* @license For full copyright and license information view LICENSE file distributed with this source code.
6+
*/
7+
declare(strict_types=1);
8+
9+
namespace Ibexa\Contracts\Core\Repository\Strategy\ContentPublication;
10+
11+
use Ibexa\Contracts\Core\Repository\Values\Content\Content;
12+
13+
final readonly class ContentPublicationResult
14+
{
15+
public function __construct(
16+
public ?Content $publishedContent,
17+
) {
18+
}
19+
}

src/contracts/Repository/Strategy/ContentPublication/ContentPublicationStrategyInterface.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,5 @@ public function supports(): bool;
2929
* @throws \Ibexa\Contracts\Core\Repository\Exceptions\BadStateException
3030
* @throws \Ibexa\Contracts\Core\Repository\Exceptions\UnauthorizedException
3131
*/
32-
public function publishVersion(VersionInfo $versionInfo, array $translations = Language::ALL): void;
32+
public function publishVersion(VersionInfo $versionInfo, array $translations = Language::ALL): ContentPublicationResult;
3333
}

src/lib/Repository/Strategy/ContentPublication/ChainContentPublicationStrategy.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
namespace Ibexa\Core\Repository\Strategy\ContentPublication;
1010

11+
use Ibexa\Contracts\Core\Repository\Strategy\ContentPublication\ContentPublicationResult;
1112
use Ibexa\Contracts\Core\Repository\Strategy\ContentPublication\ContentPublicationStrategyInterface;
1213
use Ibexa\Contracts\Core\Repository\Values\Content\Language;
1314
use Ibexa\Contracts\Core\Repository\Values\Content\VersionInfo;
@@ -40,13 +41,11 @@ public function supports(): bool
4041
return false;
4142
}
4243

43-
public function publishVersion(VersionInfo $versionInfo, array $translations = Language::ALL): void
44+
public function publishVersion(VersionInfo $versionInfo, array $translations = Language::ALL): ContentPublicationResult
4445
{
4546
foreach ($this->strategies as $strategy) {
4647
if ($strategy->supports()) {
47-
$strategy->publishVersion($versionInfo, $translations);
48-
49-
return;
48+
return $strategy->publishVersion($versionInfo, $translations);
5049
}
5150
}
5251

src/lib/Repository/Strategy/ContentPublication/SynchronousContentPublicationStrategy.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
namespace Ibexa\Core\Repository\Strategy\ContentPublication;
1010

1111
use Ibexa\Contracts\Core\Repository\ContentService;
12+
use Ibexa\Contracts\Core\Repository\Strategy\ContentPublication\ContentPublicationResult;
1213
use Ibexa\Contracts\Core\Repository\Strategy\ContentPublication\ContentPublicationStrategyInterface;
1314
use Ibexa\Contracts\Core\Repository\Values\Content\Language;
1415
use Ibexa\Contracts\Core\Repository\Values\Content\VersionInfo;
@@ -31,8 +32,10 @@ public function supports(): bool
3132
return true;
3233
}
3334

34-
public function publishVersion(VersionInfo $versionInfo, array $translations = Language::ALL): void
35+
public function publishVersion(VersionInfo $versionInfo, array $translations = Language::ALL): ContentPublicationResult
3536
{
36-
$this->contentService->publishVersion($versionInfo, $translations);
37+
return new ContentPublicationResult(
38+
$this->contentService->publishVersion($versionInfo, $translations)
39+
);
3740
}
3841
}

tests/lib/Repository/Strategy/Publication/ChainContentPublicationStrategyTest.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
namespace Ibexa\Tests\Core\Repository\Strategy\Publication;
1010

11+
use Ibexa\Contracts\Core\Repository\Strategy\ContentPublication\ContentPublicationResult;
1112
use Ibexa\Contracts\Core\Repository\Strategy\ContentPublication\ContentPublicationStrategyInterface;
1213
use Ibexa\Contracts\Core\Repository\Values\Content\VersionInfo;
1314
use Ibexa\Core\Repository\Strategy\ContentPublication\ChainContentPublicationStrategy;
@@ -19,6 +20,7 @@ final class ChainContentPublicationStrategyTest extends TestCase
1920
public function testPublishVersionExecutesFirstSupportingStrategy(): void
2021
{
2122
$versionInfo = $this->createStub(VersionInfo::class);
23+
$result = new ContentPublicationResult(null);
2224

2325
$notSupportingStrategy = $this->createMock(ContentPublicationStrategyInterface::class);
2426
$notSupportingStrategy
@@ -37,7 +39,8 @@ public function testPublishVersionExecutesFirstSupportingStrategy(): void
3739
$supportingStrategy
3840
->expects(self::once())
3941
->method('publishVersion')
40-
->with(self::identicalTo($versionInfo), ['eng-GB']);
42+
->with(self::identicalTo($versionInfo), ['eng-GB'])
43+
->willReturn($result);
4144

4245
$neverConsultedStrategy = $this->createMock(ContentPublicationStrategyInterface::class);
4346
$neverConsultedStrategy
@@ -53,7 +56,7 @@ public function testPublishVersionExecutesFirstSupportingStrategy(): void
5356
$neverConsultedStrategy,
5457
]);
5558

56-
$chain->publishVersion($versionInfo, ['eng-GB']);
59+
self::assertSame($result, $chain->publishVersion($versionInfo, ['eng-GB']));
5760
}
5861

5962
public function testSupportsReturnsTrueWhenAnyStrategySupports(): void

tests/lib/Repository/Strategy/Publication/SynchronousContentPublicationStrategyTest.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
namespace Ibexa\Tests\Core\Repository\Strategy\Publication;
1010

1111
use Ibexa\Contracts\Core\Repository\ContentService;
12+
use Ibexa\Contracts\Core\Repository\Values\Content\Content;
1213
use Ibexa\Contracts\Core\Repository\Values\Content\Language;
1314
use Ibexa\Contracts\Core\Repository\Values\Content\VersionInfo;
1415
use Ibexa\Core\Repository\Strategy\ContentPublication\SynchronousContentPublicationStrategy;
@@ -36,20 +37,24 @@ public function testPublishVersionDelegatesToContentService(
3637
array $expectedTranslations
3738
): void {
3839
$versionInfo = $this->createStub(VersionInfo::class);
40+
$content = $this->createStub(Content::class);
3941

4042
$contentService = $this->createMock(ContentService::class);
4143
$contentService
4244
->expects(self::once())
4345
->method('publishVersion')
44-
->with(self::identicalTo($versionInfo), $expectedTranslations);
46+
->with(self::identicalTo($versionInfo), $expectedTranslations)
47+
->willReturn($content);
4548

4649
$publishArguments = ['versionInfo' => $versionInfo];
4750
if (null !== $translations) {
4851
$publishArguments['translations'] = $translations;
4952
}
5053

51-
(new SynchronousContentPublicationStrategy($contentService))
54+
$result = (new SynchronousContentPublicationStrategy($contentService))
5255
->publishVersion(...$publishArguments);
56+
57+
self::assertSame($content, $result->publishedContent);
5358
}
5459

5560
/**

0 commit comments

Comments
 (0)