@@ -667,6 +667,112 @@ def test_get_evaluation_result__returns_expected(
667667 }
668668
669669
670+ def test_get_evaluation_result__two_segments_override_same_feature__returns_expected () -> (
671+ None
672+ ):
673+ # Given
674+ context_in_segments : EvaluationContext = {
675+ "environment" : {"key" : "api-key" , "name" : "" },
676+ "identity" : {
677+ "identifier" : "identity_2" ,
678+ "key" : "api-key_identity_2" ,
679+ "traits" : {"foo" : "bar" },
680+ },
681+ "features" : {
682+ "feature_1" : {
683+ "key" : "1" ,
684+ "feature_key" : "1" ,
685+ "name" : "feature_1" ,
686+ "enabled" : False ,
687+ "value" : None ,
688+ },
689+ "feature_2" : {
690+ "key" : "2" ,
691+ "feature_key" : "2" ,
692+ "name" : "feature_2" ,
693+ "enabled" : False ,
694+ "value" : None ,
695+ },
696+ },
697+ "segments" : {
698+ "1" : {
699+ "key" : "1" ,
700+ "name" : "my_segment" ,
701+ "rules" : [
702+ {
703+ "type" : "ALL" ,
704+ "conditions" : [
705+ {"property" : "foo" , "operator" : "EQUAL" , "value" : "bar" }
706+ ],
707+ "rules" : [],
708+ }
709+ ],
710+ "overrides" : [
711+ {
712+ "key" : "4" ,
713+ "feature_key" : "1" ,
714+ "name" : "feature_1" ,
715+ "enabled" : False ,
716+ "value" : "segment_override" ,
717+ "priority" : 2 ,
718+ }
719+ ],
720+ },
721+ "3" : {
722+ "key" : "3" ,
723+ "name" : "higher_priority_segment" ,
724+ "rules" : [
725+ {
726+ "type" : "ALL" ,
727+ "conditions" : [
728+ {"property" : "foo" , "operator" : "EQUAL" , "value" : "bar" }
729+ ],
730+ "rules" : [],
731+ }
732+ ],
733+ "overrides" : [
734+ {
735+ "enabled" : True ,
736+ "key" : "2" ,
737+ "feature_key" : "1" ,
738+ "name" : "feature_1" ,
739+ "value" : "segment_override_other" ,
740+ "priority" : 1 ,
741+ }
742+ ],
743+ },
744+ },
745+ }
746+
747+ # When
748+ result = get_evaluation_result (context_in_segments )
749+
750+ # Then
751+ assert result == {
752+ "context" : context_in_segments ,
753+ "flags" : [
754+ {
755+ "enabled" : True ,
756+ "feature_key" : "1" ,
757+ "name" : "feature_1" ,
758+ "reason" : "TARGETING_MATCH; segment=higher_priority_segment" ,
759+ "value" : "segment_override_other" ,
760+ },
761+ {
762+ "enabled" : False ,
763+ "feature_key" : "2" ,
764+ "name" : "feature_2" ,
765+ "reason" : "DEFAULT" ,
766+ "value" : None ,
767+ },
768+ ],
769+ "segments" : [
770+ {"key" : "1" , "name" : "my_segment" },
771+ {"key" : "3" , "name" : "higher_priority_segment" },
772+ ],
773+ }
774+
775+
670776@pytest .mark .parametrize (
671777 "percentage_value, expected_result" ,
672778 (
0 commit comments