Skip to content

Commit e567698

Browse files
authored
fix: handles integer foreign-key priority (#215)
1 parent ee4dd8b commit e567698

2 files changed

Lines changed: 67 additions & 0 deletions

File tree

src/main/java/com/flagsmith/models/features/FeatureSegmentModel.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,13 @@
66
@Data
77
public class FeatureSegmentModel extends BaseModel {
88
private Integer priority;
9+
10+
public FeatureSegmentModel() {
11+
}
12+
13+
// Tolerates the integer foreign-key shape emitted by self-hosted Core/EE
14+
// /api/v1/identities/ — Edge emits {"priority": <int>} instead.
15+
public FeatureSegmentModel(Integer priority) {
16+
this.priority = priority;
17+
}
918
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package com.flagsmith.flagengine.models;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
5+
import com.fasterxml.jackson.core.JsonProcessingException;
6+
import com.flagsmith.MapperFactory;
7+
import com.flagsmith.models.features.FeatureStateModel;
8+
import org.junit.jupiter.api.Test;
9+
10+
public class FeatureSegmentModelTest {
11+
12+
@Test
13+
public void deserializesFeatureSegmentAsIntegerForeignKey() throws JsonProcessingException {
14+
String json = "{"
15+
+ "\"feature\": {\"id\": 1, \"name\": \"my_feature\", \"type\": \"STANDARD\"},"
16+
+ "\"enabled\": true,"
17+
+ "\"feature_state_value\": \"foo\","
18+
+ "\"feature_segment\": 321"
19+
+ "}";
20+
21+
FeatureStateModel model =
22+
MapperFactory.getMapper().readValue(json, FeatureStateModel.class);
23+
24+
assertThat(model.getFeatureSegment()).isNotNull();
25+
assertThat(model.getFeatureSegment().getPriority()).isEqualTo(321);
26+
}
27+
28+
@Test
29+
public void deserializesFeatureSegmentAsEngineObject() throws JsonProcessingException {
30+
String json = "{"
31+
+ "\"feature\": {\"id\": 1, \"name\": \"my_feature\", \"type\": \"STANDARD\"},"
32+
+ "\"enabled\": true,"
33+
+ "\"feature_state_value\": \"foo\","
34+
+ "\"feature_segment\": {\"priority\": 5}"
35+
+ "}";
36+
37+
FeatureStateModel model =
38+
MapperFactory.getMapper().readValue(json, FeatureStateModel.class);
39+
40+
assertThat(model.getFeatureSegment()).isNotNull();
41+
assertThat(model.getFeatureSegment().getPriority()).isEqualTo(5);
42+
}
43+
44+
@Test
45+
public void deserializesNullFeatureSegment() throws JsonProcessingException {
46+
String json = "{"
47+
+ "\"feature\": {\"id\": 1, \"name\": \"my_feature\", \"type\": \"STANDARD\"},"
48+
+ "\"enabled\": true,"
49+
+ "\"feature_state_value\": \"foo\","
50+
+ "\"feature_segment\": null"
51+
+ "}";
52+
53+
FeatureStateModel model =
54+
MapperFactory.getMapper().readValue(json, FeatureStateModel.class);
55+
56+
assertThat(model.getFeatureSegment()).isNull();
57+
}
58+
}

0 commit comments

Comments
 (0)