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() {