Skip to content

Commit 0aa217f

Browse files
committed
fix: Add unbounded context kind to segment type
1 parent dd688e3 commit 0aa217f

1 file changed

Lines changed: 64 additions & 0 deletions

File tree

src/segment.rs

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ pub struct Segment {
3636
#[serde(default)]
3737
pub unbounded: bool,
3838
#[serde(default)]
39+
unbounded_context_kind: Option<Kind>,
40+
#[serde(default)]
3941
generation: Option<i64>,
4042

4143
/// An integer that is incremented by LaunchDarkly every time the configuration of the segment
@@ -302,6 +304,67 @@ mod tests {
302304
assert!(segment.excluded_contexts.is_empty());
303305
}
304306

307+
#[test]
308+
fn handles_unbounded_context_kind() {
309+
let json = r#"{
310+
"key": "segment",
311+
"included": [],
312+
"excluded": [],
313+
"rules": [],
314+
"salt": "salty",
315+
"unbounded": true,
316+
"unboundedContextKind": "org",
317+
"generation": 2,
318+
"version": 1
319+
}"#;
320+
321+
let segment: Segment = serde_json::from_str(json).expect("Failed to parse segment");
322+
assert!(segment.unbounded);
323+
assert_eq!(
324+
segment.unbounded_context_kind,
325+
Some(Kind::from("org"))
326+
);
327+
assert_eq!(segment.generation, Some(2));
328+
}
329+
330+
#[test]
331+
fn unbounded_context_kind_defaults_to_none() {
332+
let json = r#"{
333+
"key": "segment",
334+
"included": [],
335+
"excluded": [],
336+
"rules": [],
337+
"salt": "salty",
338+
"unbounded": true,
339+
"version": 1
340+
}"#;
341+
342+
let segment: Segment = serde_json::from_str(json).expect("Failed to parse segment");
343+
assert!(segment.unbounded);
344+
assert_eq!(segment.unbounded_context_kind, None);
345+
}
346+
347+
#[test]
348+
fn unbounded_context_kind_user() {
349+
let json = r#"{
350+
"key": "segment",
351+
"included": [],
352+
"excluded": [],
353+
"rules": [],
354+
"salt": "salty",
355+
"unbounded": true,
356+
"unboundedContextKind": "user",
357+
"generation": 1,
358+
"version": 1
359+
}"#;
360+
361+
let segment: Segment = serde_json::from_str(json).expect("Failed to parse segment");
362+
assert_eq!(
363+
segment.unbounded_context_kind,
364+
Some(Kind::user())
365+
);
366+
}
367+
305368
#[test]
306369
fn handles_context_schema() {
307370
let json = &r#"{
@@ -362,6 +425,7 @@ mod tests {
362425
rules: vec![],
363426
salt: "salty".to_string(),
364427
unbounded: false,
428+
unbounded_context_kind: None,
365429
generation: Some(1),
366430
version: 1,
367431
}

0 commit comments

Comments
 (0)