@@ -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