From dc451e26290be6a8b0d4172e9a2645223cd306c3 Mon Sep 17 00:00:00 2001 From: guqing <38999863+guqing@users.noreply.github.com> Date: Fri, 10 May 2024 12:32:24 +0800 Subject: [PATCH] fix: changes to Unstructured metadata do not take effect (#5880) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #### What type of PR is this? /kind bug /area core /milestone 2.16.x #### What this PR does / why we need it: 修复对 Unstructured 的 metadata 进行更改不会被应用的问题 #### Does this PR introduce a user-facing change? ```release-note 修复插件定义的权限没有在插件详情页显示的问题 ``` --- .../run/halo/app/extension/Unstructured.java | 7 +---- .../halo/app/extension/UnstructuredTest.java | 30 ++++++++++++++++++- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/api/src/main/java/run/halo/app/extension/Unstructured.java b/api/src/main/java/run/halo/app/extension/Unstructured.java index 2d3a078210..2ea80b5c5a 100644 --- a/api/src/main/java/run/halo/app/extension/Unstructured.java +++ b/api/src/main/java/run/halo/app/extension/Unstructured.java @@ -220,12 +220,7 @@ public static Optional getNestedMap(Map map, String... fields) { public static Optional> getNestedStringStringMap(Map map, String... fields) { return getNestedValue(map, fields) - .map(labelsObj -> { - var labels = (Map) labelsObj; - var result = new HashMap(); - labels.forEach((key, value) -> result.put((String) key, (String) value)); - return result; - }); + .map(labelsObj -> (Map) labelsObj); } public static Optional getNestedInstant(Map map, String... fields) { diff --git a/application/src/test/java/run/halo/app/extension/UnstructuredTest.java b/application/src/test/java/run/halo/app/extension/UnstructuredTest.java index 808ac66082..8db9b04494 100644 --- a/application/src/test/java/run/halo/app/extension/UnstructuredTest.java +++ b/application/src/test/java/run/halo/app/extension/UnstructuredTest.java @@ -2,6 +2,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue; import static run.halo.app.extension.MetadataOperator.metadataDeepEquals; @@ -98,10 +99,37 @@ void shouldNotBeEqual() { } @Test - void shouldGetFinalizersCorrectly() throws JsonProcessingException, JSONException { + void shouldGetFinalizersCorrectly() throws JsonProcessingException { var extension = objectMapper.readValue(extensionJson, Unstructured.class); assertEquals(Set.of("finalizer.1", "finalizer.2"), extension.getMetadata().getFinalizers()); + + extension.getMetadata().setFinalizers(Set.of("finalizer.3", "finalizer.4")); + assertEquals(Set.of("finalizer.3", "finalizer.4"), extension.getMetadata().getFinalizers()); + } + + @Test + void shouldSetLabelsCorrectly() throws JsonProcessingException { + var extension = objectMapper.readValue(extensionJson, Unstructured.class); + + assertEquals(Map.of("category", "fake", "default", "true"), + extension.getMetadata().getLabels()); + + extension.getMetadata().setLabels(Map.of("category", "fake", "default", "false")); + assertEquals(Map.of("category", "fake", "default", "false"), + extension.getMetadata().getLabels()); + } + + @Test + void shouldSetAnnotationsCorrectly() throws JsonProcessingException { + var extension = objectMapper.readValue(extensionJson, Unstructured.class); + + assertNull(extension.getMetadata().getAnnotations()); + + extension.getMetadata() + .setAnnotations(Map.of("annotation1", "value1", "annotation2", "value2")); + assertEquals(Map.of("annotation1", "value1", "annotation2", "value2"), + extension.getMetadata().getAnnotations()); } Unstructured createUnstructured() {