From 14b9508dfcbbec24bd96d0c50b25ef68b3d0a03f Mon Sep 17 00:00:00 2001 From: Jan-Niclas Loosen Date: Sat, 26 Sep 2026 05:06:53 +0200 Subject: [PATCH] fix: menu location assignment is destructive, neutral download hint in media preview --- src/Integrations/Media/MediaPreviewAbility.php | 2 +- .../WordPress/Menus/MenuAssignLocationAbility.php | 2 +- tests/Unit/Integrations/Media/MediaPreviewAbilityTest.php | 4 ++++ .../WordPress/Menus/MenuAssignLocationAbilityTest.php | 7 +++++++ 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/Integrations/Media/MediaPreviewAbility.php b/src/Integrations/Media/MediaPreviewAbility.php index 68ad717..fc5d30c 100644 --- a/src/Integrations/Media/MediaPreviewAbility.php +++ b/src/Integrations/Media/MediaPreviewAbility.php @@ -87,7 +87,7 @@ final class MediaPreviewAbility implements Ability if (! wp_attachment_is_image($id)) { return Errors::unsupported( 'Das Medium ist kein Bild.', - 'Metadaten über lit/media-get abrufen; Dateien über lit-media-download.' + 'Metadaten über lit/media-get abrufen; Dateien über lit/media-download (direkt: lit-media-download).' ); } diff --git a/src/Integrations/WordPress/Menus/MenuAssignLocationAbility.php b/src/Integrations/WordPress/Menus/MenuAssignLocationAbility.php index a7f8344..138aac1 100644 --- a/src/Integrations/WordPress/Menus/MenuAssignLocationAbility.php +++ b/src/Integrations/WordPress/Menus/MenuAssignLocationAbility.php @@ -64,7 +64,7 @@ final class MenuAssignLocationAbility implements Ability public function annotations(): array { - return ['readonly' => false, 'destructive' => false, 'idempotent' => true]; + return ['readonly' => false, 'destructive' => true, 'idempotent' => true]; } public function isDirect(): bool diff --git a/tests/Unit/Integrations/Media/MediaPreviewAbilityTest.php b/tests/Unit/Integrations/Media/MediaPreviewAbilityTest.php index 40138f8..572c62b 100644 --- a/tests/Unit/Integrations/Media/MediaPreviewAbilityTest.php +++ b/tests/Unit/Integrations/Media/MediaPreviewAbilityTest.php @@ -69,6 +69,10 @@ final class MediaPreviewAbilityTest extends TestCase $result = (new MediaPreviewAbility())->execute(['id' => 33]); self::assertSame('lit_unsupported', $result->get_error_code()); + self::assertStringContainsString( + 'lit/media-download (direkt: lit-media-download)', + (string) $result->get_error_data()['hint'] + ); } public function testFilesOutsideTheUploadsDirectoryAreRefused(): void diff --git a/tests/Unit/Integrations/WordPress/Menus/MenuAssignLocationAbilityTest.php b/tests/Unit/Integrations/WordPress/Menus/MenuAssignLocationAbilityTest.php index 9ceccca..43fced5 100644 --- a/tests/Unit/Integrations/WordPress/Menus/MenuAssignLocationAbilityTest.php +++ b/tests/Unit/Integrations/WordPress/Menus/MenuAssignLocationAbilityTest.php @@ -122,4 +122,11 @@ final class MenuAssignLocationAbilityTest extends TestCase self::assertSame('lit_forbidden', $ability->permission($input)->get_error_code()); } + + public function testIsDestructiveBecauseItReplacesTheMenuOfTheLocation(): void + { + $ability = new MenuAssignLocationAbility(Mockery::mock(ChangeLog::class)); + + self::assertSame(['readonly' => false, 'destructive' => true, 'idempotent' => true], $ability->annotations()); + } }