Skip to content

Commit 29aea81

Browse files
reda-alaouiodrotbohm
authored andcommitted
GH-2257 - Explicitly declare properties in HalFormsOptions.
1 parent 2b3aea9 commit 29aea81

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed

Diff for: src/main/java/org/springframework/hateoas/mediatype/hal/forms/HalFormsOptions.java

+5
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
* Representation of HAL-FORMS {@code options} attribute.
3333
*
3434
* @author Oliver Drotbohm
35+
* @author Réda Housni Alaoui
3536
* @see https://rwcbook.github.io/hal-forms/#options-element
3637
* @since 1.3
3738
*/
@@ -151,6 +152,7 @@ protected AbstractHalFormsOptions(@Nullable String promptRef, @Nullable String v
151152
*/
152153
@Nullable
153154
@Override
155+
@JsonProperty
154156
public String getPromptField() {
155157
return promptField;
156158
}
@@ -161,6 +163,7 @@ public String getPromptField() {
161163
*/
162164
@Nullable
163165
@Override
166+
@JsonProperty
164167
public String getValueField() {
165168
return valueField;
166169
}
@@ -171,6 +174,7 @@ public String getValueField() {
171174
*/
172175
@Nullable
173176
@Override
177+
@JsonProperty
174178
public Long getMinItems() {
175179
return minItems;
176180
}
@@ -181,6 +185,7 @@ public Long getMinItems() {
181185
*/
182186
@Nullable
183187
@Override
188+
@JsonProperty
184189
public Long getMaxItems() {
185190
return maxItems;
186191
}

Diff for: src/test/java/org/springframework/hateoas/mediatype/hal/forms/Jackson2HalFormsIntegrationTest.java

+40
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import java.util.Collections;
2929
import java.util.List;
3030
import java.util.Locale;
31+
import java.util.Map;
3132
import java.util.function.Consumer;
3233

3334
import org.junit.jupiter.api.BeforeEach;
@@ -83,6 +84,7 @@
8384
/**
8485
* @author Greg Turnquist
8586
* @author Oliver Drotbohm
87+
* @author Réda Housni Alaoui
8688
*/
8789
class Jackson2HalFormsIntegrationTest {
8890

@@ -571,6 +573,44 @@ void rendersPromptedOptionsValues() throws Exception {
571573
.isEqualTo("My Prompt");
572574
}
573575

576+
@Test
577+
// #2257
578+
void rendersFullInlineOptions() {
579+
Inline inline = HalFormsOptions.inline(Map.of("my-prompt-field", "foo","my-value-field", "bar")).withPromptField("my-prompt-field")
580+
.withValueField("my-value-field")
581+
.withMinItems(2L)
582+
.withMaxItems(3L);
583+
584+
DocumentContext result = JsonPath.parse(getCuriedObjectMapper().writeObject(inline));
585+
assertThat(result.read("$.inline[0].my-prompt-field", String.class)).isEqualTo("foo");
586+
assertThat(result.read("$.inline[0].my-value-field", String.class)).isEqualTo("bar");
587+
assertThat(result.read("$.promptField", String.class)).isEqualTo("my-prompt-field");
588+
assertThat(result.read("$.valueField", String.class)).isEqualTo("my-value-field");
589+
assertThat(result.read("$.minItems", Long.class)).isEqualTo(2L);
590+
assertThat(result.read("$.maxItems", Long.class)).isEqualTo(3L);
591+
}
592+
593+
@Test
594+
// #2257
595+
void rendersFullRemoteOptions() {
596+
Link link = Link.of("/foo{?bar}").withType(MediaType.APPLICATION_JSON_VALUE);
597+
598+
Remote remote = HalFormsOptions.remote(link)
599+
.withPromptField("my-prompt-field")
600+
.withValueField("my-value-field")
601+
.withMinItems(2L)
602+
.withMaxItems(3L);
603+
604+
DocumentContext result = JsonPath.parse(getCuriedObjectMapper().writeObject(remote));
605+
assertThat(result.read("$.link.href", String.class)).isEqualTo("/foo{?bar}");
606+
assertThat(result.read("$.link.type", String.class)).isEqualTo(MediaType.APPLICATION_JSON_VALUE);
607+
assertThat(result.read("$.link.templated", boolean.class)).isTrue();
608+
assertThat(result.read("$.promptField", String.class)).isEqualTo("my-prompt-field");
609+
assertThat(result.read("$.valueField", String.class)).isEqualTo("my-value-field");
610+
assertThat(result.read("$.minItems", Long.class)).isEqualTo(2L);
611+
assertThat(result.read("$.maxItems", Long.class)).isEqualTo(3L);
612+
}
613+
574614
@Test // #1483
575615
void rendersRemoteOptions() {
576616

0 commit comments

Comments
 (0)