From 1fd52ab69791581b4c4e68a67cef488596635e5a Mon Sep 17 00:00:00 2001 From: Vidar Langseid Date: Fri, 24 Oct 2025 13:40:57 +0200 Subject: [PATCH 1/8] IBX-10854: Not possible to hide content draft --- src/lib/Repository/ContentService.php | 38 ++++++++++++++++----------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/src/lib/Repository/ContentService.php b/src/lib/Repository/ContentService.php index 2cee84e93a..57509af237 100644 --- a/src/lib/Repository/ContentService.php +++ b/src/lib/Repository/ContentService.php @@ -2528,14 +2528,17 @@ public function deleteTranslationFromDraft(APIVersionInfo $versionInfo, string $ */ public function hideContent(ContentInfo $contentInfo): void { - $locationTarget = (new DestinationLocationTarget($contentInfo->mainLocationId, $contentInfo)); - if (!$this->permissionResolver->canUser( - 'content', - 'hide', - $contentInfo, - [$locationTarget] - )) { - throw new UnauthorizedException('content', 'hide', ['contentId' => $contentInfo->id]); + // If content is in draft state, mainLocationId is yet not set + if ($contentInfo->mainLocationId !== null) { + $locationTarget = (new DestinationLocationTarget($contentInfo->mainLocationId, $contentInfo)); + if (!$this->permissionResolver->canUser( + 'content', + 'hide', + $contentInfo, + [$locationTarget] + )) { + throw new UnauthorizedException('content', 'hide', ['contentId' => $contentInfo->id]); + } } $this->repository->beginTransaction(); @@ -2568,14 +2571,17 @@ public function hideContent(ContentInfo $contentInfo): void */ public function revealContent(ContentInfo $contentInfo): void { - $locationTarget = (new DestinationLocationTarget($contentInfo->mainLocationId, $contentInfo)); - if (!$this->permissionResolver->canUser( - 'content', - 'hide', - $contentInfo, - [$locationTarget] - )) { - throw new UnauthorizedException('content', 'hide', ['contentId' => $contentInfo->id]); + // If content is in draft state, mainLocationId is yet not set + if ($contentInfo->mainLocationId !== null) { + $locationTarget = (new DestinationLocationTarget($contentInfo->mainLocationId, $contentInfo)); + if (!$this->permissionResolver->canUser( + 'content', + 'hide', + $contentInfo, + [$locationTarget] + )) { + throw new UnauthorizedException('content', 'hide', ['contentId' => $contentInfo->id]); + } } $this->repository->beginTransaction(); From 3e38c2464a56077e61eafe1e71cc69aefe5a50d1 Mon Sep 17 00:00:00 2001 From: Vidar Langseid Date: Fri, 24 Oct 2025 14:13:16 +0200 Subject: [PATCH 2/8] Added tests for IBX-10854: Not possible to hide content draft --- .../Core/Repository/ContentServiceTest.php | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/tests/integration/Core/Repository/ContentServiceTest.php b/tests/integration/Core/Repository/ContentServiceTest.php index b609acec3c..a6e7f73a3d 100644 --- a/tests/integration/Core/Repository/ContentServiceTest.php +++ b/tests/integration/Core/Repository/ContentServiceTest.php @@ -6229,6 +6229,76 @@ function (Location $parentLocation) { $this->assertEquals($hiddenLocations, $hiddenLocationsAfterReveal); } + /** + * @covers \Ibexa\Contracts\Core\Repository\ContentService::hideContent + + * + * @throws \Ibexa\Contracts\Core\Repository\Exceptions\APIInvalidArgumentException + * @throws \Ibexa\Contracts\Core\Repository\Exceptions\BadStateException + * @throws \Ibexa\Contracts\Core\Repository\Exceptions\ContentFieldValidationException + * @throws \Ibexa\Contracts\Core\Repository\Exceptions\NotFoundException + * @throws \Ibexa\Contracts\Core\Repository\Exceptions\UnauthorizedException + * @throws \Ibexa\Contracts\Core\Repository\Exceptions\ContentValidationException + */ + public function testHideContentDraft(): void + { + $publishedContent = $this->createContentForHideRevealDraftTests(false); + $location = $this->locationService->loadLocation($publishedContent->contentInfo->mainLocationId); + + $content = $this->contentService->loadContent($publishedContent->contentInfo->id); + self::assertTrue($content->contentInfo->isHidden, 'Content is not hidden'); + self::assertTrue($location->isHidden(), 'Location is visible'); + } + + /** + * @covers \Ibexa\Contracts\Core\Repository\ContentService::revealContent + + * + * @throws \Ibexa\Contracts\Core\Repository\Exceptions\NotFoundException + * @throws \Ibexa\Contracts\Core\Repository\Exceptions\UnauthorizedException + */ + public function testHideAndRevealContentDraft(): void + { + $publishedContent = $this->createContentForHideRevealDraftTests(true); + $location = $this->locationService->loadLocation($publishedContent->contentInfo->mainLocationId); + + $content = $this->contentService->loadContent($publishedContent->contentInfo->id); + self::assertFalse($content->contentInfo->isHidden, 'Content is hidden'); + self::assertFalse($location->isHidden(), 'Location is hidden'); + } + + /** + * @throws \Ibexa\Contracts\Core\Repository\Exceptions\APIInvalidArgumentException + * @throws \Ibexa\Contracts\Core\Repository\Exceptions\BadStateException + * @throws \Ibexa\Contracts\Core\Repository\Exceptions\ContentFieldValidationException + * @throws \Ibexa\Contracts\Core\Repository\Exceptions\NotFoundException + * @throws \Ibexa\Contracts\Core\Repository\Exceptions\UnauthorizedException + * @throws \Ibexa\Contracts\Core\Repository\Exceptions\ContentValidationException + */ + private function createContentForHideRevealDraftTests(bool $hideAndRevel): Content + { + $contentTypeService = $this->getRepository()->getContentTypeService(); + + $locationCreateStructs = $this->locationService->newLocationCreateStruct(2); + + $contentType = $contentTypeService->loadContentTypeByIdentifier('folder'); + + $contentCreate = $this->contentService->newContentCreateStruct($contentType, self::ENG_US); + $contentCreate->setField('name', 'Folder to hide'); + + $draft = $this->contentService->createContent( + $contentCreate, + [$locationCreateStructs] + ); + + $this->contentService->hideContent($draft->contentInfo); + if ($hideAndRevel) { + $this->contentService->revealContent($draft->contentInfo); + } + + return $this->contentService->publishVersion($draft->versionInfo); + } + /** * @depends testRevealContent */ From 3891986e3c6476bbd4f4f966e5d5063f5b2b87e8 Mon Sep 17 00:00:00 2001 From: Vidar Langseid Date: Mon, 27 Oct 2025 12:53:21 +0100 Subject: [PATCH 3/8] fixup! IBX-10854: Not possible to hide content draft --- src/lib/Repository/ContentService.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lib/Repository/ContentService.php b/src/lib/Repository/ContentService.php index 57509af237..1f10734205 100644 --- a/src/lib/Repository/ContentService.php +++ b/src/lib/Repository/ContentService.php @@ -2528,8 +2528,8 @@ public function deleteTranslationFromDraft(APIVersionInfo $versionInfo, string $ */ public function hideContent(ContentInfo $contentInfo): void { - // If content is in draft state, mainLocationId is yet not set - if ($contentInfo->mainLocationId !== null) { + // If ContentInfo is in draft state, mainLocationId is yet not set + if (!$contentInfo->isDraft()) { $locationTarget = (new DestinationLocationTarget($contentInfo->mainLocationId, $contentInfo)); if (!$this->permissionResolver->canUser( 'content', @@ -2571,8 +2571,8 @@ public function hideContent(ContentInfo $contentInfo): void */ public function revealContent(ContentInfo $contentInfo): void { - // If content is in draft state, mainLocationId is yet not set - if ($contentInfo->mainLocationId !== null) { + // If ContentInfo is in draft state, mainLocationId is yet not set + if (!$contentInfo->isDraft()) { $locationTarget = (new DestinationLocationTarget($contentInfo->mainLocationId, $contentInfo)); if (!$this->permissionResolver->canUser( 'content', From ca2b306836164ba76fb01ed95c0599d5e96e5225 Mon Sep 17 00:00:00 2001 From: Vidar Langseid Date: Tue, 10 Feb 2026 12:35:51 +0100 Subject: [PATCH 4/8] fixup! IBX-10854: Not possible to hide content draft --- src/lib/Repository/ContentService.php | 43 ++++++++++++++------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/src/lib/Repository/ContentService.php b/src/lib/Repository/ContentService.php index 1f10734205..7395fa8a8e 100644 --- a/src/lib/Repository/ContentService.php +++ b/src/lib/Repository/ContentService.php @@ -2528,17 +2528,17 @@ public function deleteTranslationFromDraft(APIVersionInfo $versionInfo, string $ */ public function hideContent(ContentInfo $contentInfo): void { - // If ContentInfo is in draft state, mainLocationId is yet not set - if (!$contentInfo->isDraft()) { - $locationTarget = (new DestinationLocationTarget($contentInfo->mainLocationId, $contentInfo)); - if (!$this->permissionResolver->canUser( - 'content', - 'hide', - $contentInfo, - [$locationTarget] - )) { - throw new UnauthorizedException('content', 'hide', ['contentId' => $contentInfo->id]); - } + // If ContentInfo is in draft state, mainocationId is yet not set + $locationTarget = !$contentInfo->isDraft() + ? [new DestinationLocationTarget($contentInfo->mainLocationId, $contentInfo)] + : []; + if (!$this->permissionResolver->canUser( + 'content', + 'hide', + $contentInfo, + $locationTarget + )) { + throw new UnauthorizedException('content', 'hide', ['contentId' => $contentInfo->id]); } $this->repository->beginTransaction(); @@ -2572,16 +2572,17 @@ public function hideContent(ContentInfo $contentInfo): void public function revealContent(ContentInfo $contentInfo): void { // If ContentInfo is in draft state, mainLocationId is yet not set - if (!$contentInfo->isDraft()) { - $locationTarget = (new DestinationLocationTarget($contentInfo->mainLocationId, $contentInfo)); - if (!$this->permissionResolver->canUser( - 'content', - 'hide', - $contentInfo, - [$locationTarget] - )) { - throw new UnauthorizedException('content', 'hide', ['contentId' => $contentInfo->id]); - } + $locationTarget = !$contentInfo->isDraft() + ? [new DestinationLocationTarget($contentInfo->mainLocationId, $contentInfo)] + : []; + + if (!$this->permissionResolver->canUser( + 'content', + 'hide', + $contentInfo, + [$locationTarget] + )) { + throw new UnauthorizedException('content', 'hide', ['contentId' => $contentInfo->id]); } $this->repository->beginTransaction(); From bbf8ce288c32889d7172dba6d562d263a3fce612 Mon Sep 17 00:00:00 2001 From: Vidar Langseid Date: Tue, 10 Feb 2026 15:05:18 +0100 Subject: [PATCH 5/8] fixup! fixup! IBX-10854: Not possible to hide content draft --- src/lib/Repository/ContentService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/Repository/ContentService.php b/src/lib/Repository/ContentService.php index 7395fa8a8e..2d858b9255 100644 --- a/src/lib/Repository/ContentService.php +++ b/src/lib/Repository/ContentService.php @@ -2580,7 +2580,7 @@ public function revealContent(ContentInfo $contentInfo): void 'content', 'hide', $contentInfo, - [$locationTarget] + $locationTarget )) { throw new UnauthorizedException('content', 'hide', ['contentId' => $contentInfo->id]); } From 2b9758a03d47d24bef718cfdf8ffa11aec330d8d Mon Sep 17 00:00:00 2001 From: Vidar Langseid Date: Tue, 10 Feb 2026 15:13:49 +0100 Subject: [PATCH 6/8] fixup! Added tests for IBX-10854: Not possible to hide content draft --- .../Core/Repository/ContentServiceTest.php | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/tests/integration/Core/Repository/ContentServiceTest.php b/tests/integration/Core/Repository/ContentServiceTest.php index a6e7f73a3d..463cb9f6dc 100644 --- a/tests/integration/Core/Repository/ContentServiceTest.php +++ b/tests/integration/Core/Repository/ContentServiceTest.php @@ -6230,20 +6230,17 @@ function (Location $parentLocation) { } /** - * @covers \Ibexa\Contracts\Core\Repository\ContentService::hideContent - - * - * @throws \Ibexa\Contracts\Core\Repository\Exceptions\APIInvalidArgumentException - * @throws \Ibexa\Contracts\Core\Repository\Exceptions\BadStateException - * @throws \Ibexa\Contracts\Core\Repository\Exceptions\ContentFieldValidationException - * @throws \Ibexa\Contracts\Core\Repository\Exceptions\NotFoundException - * @throws \Ibexa\Contracts\Core\Repository\Exceptions\UnauthorizedException + * @throws BadStateException + * @throws ContentFieldValidationException + * @throws NotFoundException + * @throws UnauthorizedException * @throws \Ibexa\Contracts\Core\Repository\Exceptions\ContentValidationException */ public function testHideContentDraft(): void { $publishedContent = $this->createContentForHideRevealDraftTests(false); - $location = $this->locationService->loadLocation($publishedContent->contentInfo->mainLocationId); + self::assertNotNull($publishedContent->contentInfo->getMainLocationId(), 'Expected mainLocationId to be set for this test case.'); + $location = $this->locationService->loadLocation($publishedContent->contentInfo->getMainLocationId()); $content = $this->contentService->loadContent($publishedContent->contentInfo->id); self::assertTrue($content->contentInfo->isHidden, 'Content is not hidden'); @@ -6260,7 +6257,8 @@ public function testHideContentDraft(): void public function testHideAndRevealContentDraft(): void { $publishedContent = $this->createContentForHideRevealDraftTests(true); - $location = $this->locationService->loadLocation($publishedContent->contentInfo->mainLocationId); + self::assertNotNull($publishedContent->contentInfo->getMainLocationId(), 'Expected mainLocationId to be set for this test case.'); + $location = $this->locationService->loadLocation($publishedContent->contentInfo->getMainLocationId()); $content = $this->contentService->loadContent($publishedContent->contentInfo->id); self::assertFalse($content->contentInfo->isHidden, 'Content is hidden'); @@ -6268,11 +6266,11 @@ public function testHideAndRevealContentDraft(): void } /** - * @throws \Ibexa\Contracts\Core\Repository\Exceptions\APIInvalidArgumentException - * @throws \Ibexa\Contracts\Core\Repository\Exceptions\BadStateException - * @throws \Ibexa\Contracts\Core\Repository\Exceptions\ContentFieldValidationException - * @throws \Ibexa\Contracts\Core\Repository\Exceptions\NotFoundException - * @throws \Ibexa\Contracts\Core\Repository\Exceptions\UnauthorizedException + * @throws APIInvalidArgumentException + * @throws BadStateException + * @throws ContentFieldValidationException + * @throws NotFoundException + * @throws UnauthorizedException * @throws \Ibexa\Contracts\Core\Repository\Exceptions\ContentValidationException */ private function createContentForHideRevealDraftTests(bool $hideAndRevel): Content From e498150a04ae9afca8dfa324e82df1917fa6b805 Mon Sep 17 00:00:00 2001 From: Vidar Langseid Date: Tue, 10 Feb 2026 15:14:06 +0100 Subject: [PATCH 7/8] Fixed PHPstan --- phpstan-baseline.neon | 5 --- .../Core/Repository/ContentServiceTest.php | 35 +++++++++++++------ 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 9a1d744f69..113c1da39a 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -33966,11 +33966,6 @@ parameters: count: 4 path: tests/integration/Core/Repository/ContentServiceTest.php - - - message: '#^Parameter \#1 \$locationId of method Ibexa\\Contracts\\Core\\Repository\\LocationService\:\:loadLocation\(\) expects int, int\|null given\.$#' - identifier: argument.type - count: 12 - path: tests/integration/Core/Repository/ContentServiceTest.php - message: '#^Parameter \#1 \$locations of method Ibexa\\Tests\\Integration\\Core\\Repository\\ContentServiceTest\:\:filterHiddenLocations\(\) expects array\, iterable\ given\.$#' diff --git a/tests/integration/Core/Repository/ContentServiceTest.php b/tests/integration/Core/Repository/ContentServiceTest.php index 463cb9f6dc..8b8d286ecc 100644 --- a/tests/integration/Core/Repository/ContentServiceTest.php +++ b/tests/integration/Core/Repository/ContentServiceTest.php @@ -3610,7 +3610,8 @@ public function testLoadRelationsSkipsArchivedContent() $demoDesign ); - $demoDesignLocation = $this->locationService->loadLocation($demoDesign->mainLocationId); + self::assertNotNull($demoDesign->getMainLocationId(), 'Expected mainLocationId to be set for this test case.'); + $demoDesignLocation = $this->locationService->loadLocation($demoDesign->getMainLocationId()); // Trashing Content's last Location will change its status to archived, // in this case relation towards it will not be loaded. @@ -3936,7 +3937,8 @@ public function testLoadReverseRelationsSkipsArchivedContent() $this->contentService->publishVersion($mediaDraft->getVersionInfo()); $this->contentService->publishVersion($demoDesignDraft->getVersionInfo()); - $demoDesignLocation = $this->locationService->loadLocation($demoDesignDraft->contentInfo->mainLocationId); + self::assertNotNull($demoDesignDraft->contentInfo->getMainLocationId(), 'Expected mainLocationId to be set for this test case.'); + $demoDesignLocation = $this->locationService->loadLocation($demoDesignDraft->contentInfo->getMainLocationId()); // Trashing Content's last Location will change its status to archived, // in this case relation from it will not be loaded. @@ -4138,7 +4140,8 @@ public function testLoadReverseRelationListSkipsArchivedContent(): void $draft3, ]); - $locationToTrash = $this->locationService->loadLocation($draft3->contentInfo->mainLocationId); + self::assertNotNull($draft3->contentInfo->getMainLocationId(), 'Expected mainLocationId to be set for this test case.'); + $locationToTrash = $this->locationService->loadLocation($draft3->contentInfo->getMainLocationId()); // Trashing Content's last Location will change its status to archived, in this case relation from it will not be loaded. $trashService->trash($locationToTrash); @@ -5100,8 +5103,9 @@ public function testURLAliasesCreatedForNewContent() // Automatically creates a new URLAlias for the content $liveContent = $this->contentService->publishVersion($draft->getVersionInfo()); + self::assertNotNull($liveContent->getVersionInfo()->getContentInfo()->getMainLocationId(), 'Expected mainLocationId to be set for this test case.'); $location = $this->locationService->loadLocation( - $liveContent->getVersionInfo()->getContentInfo()->mainLocationId + $liveContent->getVersionInfo()->getContentInfo()->getMainLocationId() ); $aliases = $urlAliasService->listLocationAliases($location, false); @@ -5128,8 +5132,9 @@ public function testURLAliasesCreatedForUpdatedContent() $draft = $this->createUpdatedDraftVersion2(); + self::assertNotNull($draft->getVersionInfo()->getContentInfo()->getMainLocationId(), 'Expected mainLocationId to be set for this test case.'); $location = $this->locationService->loadLocation( - $draft->getVersionInfo()->getContentInfo()->mainLocationId + $draft->getVersionInfo()->getContentInfo()->getMainLocationId() ); // Load and assert URL aliases before publishing updated Content, so that @@ -5156,8 +5161,9 @@ public function testURLAliasesCreatedForUpdatedContent() // and creates new aliases, based on the changes $liveContent = $this->contentService->publishVersion($draft->getVersionInfo()); + self::assertNotNull($liveContent->getVersionInfo()->getContentInfo()->getMainLocationId(), 'Expected mainLocationId to be set for this test case.'); $location = $this->locationService->loadLocation( - $liveContent->getVersionInfo()->getContentInfo()->mainLocationId + $liveContent->getVersionInfo()->getContentInfo()->getMainLocationId() ); $aliases = $urlAliasService->listLocationAliases($location, false); @@ -5195,10 +5201,11 @@ public function testCustomURLAliasesNotHistorizedOnUpdatedContent() $content = $this->createContentVersion1(); + self::assertNotNull($content->getVersionInfo()->getContentInfo()->getMainLocationId(), 'Expected mainLocationId to be set for this test case.'); // Create a custom URL alias $urlAliasService->createUrlAlias( $this->locationService->loadLocation( - $content->getVersionInfo()->getContentInfo()->mainLocationId + $content->getVersionInfo()->getContentInfo()->getMainLocationId() ), '/my/fancy/story-about-ibexa-dxp', self::ENG_US @@ -5219,8 +5226,9 @@ public function testCustomURLAliasesNotHistorizedOnUpdatedContent() // the custom one is left untouched $liveContent = $this->contentService->publishVersion($draftVersion2->getVersionInfo()); + self::assertNotNull($liveContent->getVersionInfo()->getContentInfo()->getMainLocationId(), 'Expected mainLocationId to be set for this test case.'); $location = $this->locationService->loadLocation( - $liveContent->getVersionInfo()->getContentInfo()->mainLocationId + $liveContent->getVersionInfo()->getContentInfo()->getMainLocationId() ); $aliases = $urlAliasService->listLocationAliases($location); @@ -5391,7 +5399,8 @@ public function testDeleteTranslationUpdatesUrlAlias() $urlAliasService = $this->getRepository()->getURLAliasService(); $content = $this->createContentVersion2(); - $mainLocation = $this->locationService->loadLocation($content->contentInfo->mainLocationId); + self::assertNotNull($content->contentInfo->getMainLocationId(), 'Expected mainLocationId to be set for this test case.'); + $mainLocation = $this->locationService->loadLocation($content->contentInfo->getMainLocationId()); // create custom URL alias for Content main Location $urlAliasService->createUrlAlias($mainLocation, '/my-custom-url', self::ENG_GB); @@ -6338,7 +6347,9 @@ public function testRevealContentWithHiddenParent() $this->contentService->revealContent($contents[2]->contentInfo); $parentContent = $this->contentService->loadContent($contents[0]->id); - $parentLocation = $this->locationService->loadLocation($parentContent->contentInfo->mainLocationId); + + self::assertNotNull($parentContent->contentInfo->getMainLocationId(), 'Expected mainLocationId to be set for this test case.'); + $parentLocation = $this->locationService->loadLocation($parentContent->contentInfo->getMainLocationId()); $parentSublocations = $this->locationService->loadLocationList([ $contents[1]->contentInfo->mainLocationId, $contents[2]->contentInfo->mainLocationId, @@ -6396,9 +6407,11 @@ public function testRevealContentWithHiddenChildren() $this->contentService->revealContent($contents[0]->contentInfo); $directChildContent = $this->contentService->loadContent($contents[1]->id); - $directChildLocation = $this->locationService->loadLocation($directChildContent->contentInfo->mainLocationId); + self::assertNotNull($directChildContent->contentInfo->getMainLocationId(), 'Expected mainLocationId to be set for this test case.'); + $directChildLocation = $this->locationService->loadLocation($directChildContent->contentInfo->getMainLocationId()); $childContent = $this->contentService->loadContent($contents[2]->id); + self::assertNotNull($childContent->contentInfo->mainLocationId, 'Expected mainLocationId to be set for this test case.'); $childLocation = $this->locationService->loadLocation($childContent->contentInfo->mainLocationId); $childSublocations = $this->locationService->loadLocationList([ $contents[3]->contentInfo->mainLocationId, From c9a3991516f422ce1b67399b1d1c7b71608c389b Mon Sep 17 00:00:00 2001 From: Vidar Langseid Date: Tue, 10 Feb 2026 15:14:57 +0100 Subject: [PATCH 8/8] fixup! fixup! Added tests for IBX-10854: Not possible to hide content draft --- .../Core/Repository/ContentServiceTest.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/integration/Core/Repository/ContentServiceTest.php b/tests/integration/Core/Repository/ContentServiceTest.php index 8b8d286ecc..a8d5a73abc 100644 --- a/tests/integration/Core/Repository/ContentServiceTest.php +++ b/tests/integration/Core/Repository/ContentServiceTest.php @@ -6239,10 +6239,10 @@ function (Location $parentLocation) { } /** - * @throws BadStateException - * @throws ContentFieldValidationException - * @throws NotFoundException - * @throws UnauthorizedException + * @throws \Ibexa\Contracts\Core\Repository\Exceptions\BadStateException + * @throws \Ibexa\Contracts\Core\Repository\Exceptions\ContentFieldValidationException + * @throws \Ibexa\Contracts\Core\Repository\Exceptions\NotFoundException + * @throws \Ibexa\Contracts\Core\Repository\Exceptions\UnauthorizedException * @throws \Ibexa\Contracts\Core\Repository\Exceptions\ContentValidationException */ public function testHideContentDraft(): void @@ -6275,11 +6275,11 @@ public function testHideAndRevealContentDraft(): void } /** - * @throws APIInvalidArgumentException - * @throws BadStateException - * @throws ContentFieldValidationException - * @throws NotFoundException - * @throws UnauthorizedException + * @throws \Ibexa\Contracts\Core\Repository\Exceptions\InvalidArgumentException + * @throws \Ibexa\Contracts\Core\Repository\Exceptions\BadStateException + * @throws \Ibexa\Contracts\Core\Repository\Exceptions\ContentFieldValidationException + * @throws \Ibexa\Contracts\Core\Repository\Exceptions\NotFoundException + * @throws \Ibexa\Contracts\Core\Repository\Exceptions\UnauthorizedException * @throws \Ibexa\Contracts\Core\Repository\Exceptions\ContentValidationException */ private function createContentForHideRevealDraftTests(bool $hideAndRevel): Content