@@ -802,3 +802,338 @@ def test_get_configuration_with_envelope_and_raw(mocker, config):
802
802
803
803
assert "log_level" in config
804
804
assert "log_level" not in features_config
805
+
806
+ ##
807
+ ## Inequality test cases
808
+ ##
809
+
810
+ # Test not equals
811
+ def test_flags_not_equal_no_match (mocker , config ):
812
+ expected_value = False
813
+ mocked_app_config_schema = {
814
+ "my_feature" : {
815
+ "default" : expected_value ,
816
+ "rules" : {
817
+ "tenant id not equals 345345435" : {
818
+ "when_match" : True ,
819
+ "conditions" : [
820
+ {
821
+ "action" : RuleAction .NOT_EQUALS .value ,
822
+ "key" : "tenant_id" ,
823
+ "value" : "345345435" ,
824
+ }
825
+ ],
826
+ }
827
+ },
828
+ }
829
+ }
830
+ feature_flags = init_feature_flags (mocker , mocked_app_config_schema , config )
831
+ toggle = feature_flags .evaluate (name = "my_feature" , context = {"tenant_id" : "345345435" , "username" : "a" }, default = False )
832
+ assert toggle == expected_value
833
+
834
+ def test_flags_not_equal_match (mocker , config ):
835
+ expected_value = True
836
+ mocked_app_config_schema = {
837
+ "my_feature" : {
838
+ "default" : expected_value ,
839
+ "rules" : {
840
+ "tenant id not equals 345345435" : {
841
+ "when_match" : True ,
842
+ "conditions" : [
843
+ {
844
+ "action" : RuleAction .NOT_EQUALS .value ,
845
+ "key" : "tenant_id" ,
846
+ "value" : "345345435" ,
847
+ }
848
+ ],
849
+ }
850
+ },
851
+ }
852
+ }
853
+ feature_flags = init_feature_flags (mocker , mocked_app_config_schema , config )
854
+ toggle = feature_flags .evaluate (name = "my_feature" , context = {"tenant_id" : "" , "username" : "a" }, default = False )
855
+ assert toggle == expected_value
856
+
857
+
858
+ # Test less than
859
+ def test_flags_less_than_no_match_1 (mocker , config ):
860
+ expected_value = False
861
+ mocked_app_config_schema = {
862
+ "my_feature" : {
863
+ "default" : expected_value ,
864
+ "rules" : {
865
+ "Date less than 2021.10.31" : {
866
+ "when_match" : True ,
867
+ "conditions" : [
868
+ {
869
+ "action" : RuleAction .KEY_LESS_THAN_VALUE .value ,
870
+ "key" : "current_date" ,
871
+ "value" : "2021.10.31" ,
872
+ }
873
+ ],
874
+ }
875
+ },
876
+ }
877
+ }
878
+ feature_flags = init_feature_flags (mocker , mocked_app_config_schema , config )
879
+ toggle = feature_flags .evaluate (name = "my_feature" , context = {"tenant_id" : "345345435" , "username" : "a" , "current_date" : "2021.12.25" }, default = False )
880
+ assert toggle == expected_value
881
+
882
+ def test_flags_less_than_no_match_2 (mocker , config ):
883
+ expected_value = False
884
+ mocked_app_config_schema = {
885
+ "my_feature" : {
886
+ "default" : expected_value ,
887
+ "rules" : {
888
+ "Date less than 2021.10.31" : {
889
+ "when_match" : True ,
890
+ "conditions" : [
891
+ {
892
+ "action" : RuleAction .KEY_LESS_THAN_VALUE .value ,
893
+ "key" : "current_date" ,
894
+ "value" : "2021.10.31" ,
895
+ }
896
+ ],
897
+ }
898
+ },
899
+ }
900
+ }
901
+ feature_flags = init_feature_flags (mocker , mocked_app_config_schema , config )
902
+ toggle = feature_flags .evaluate (name = "my_feature" , context = {"tenant_id" : "345345435" , "username" : "a" , "current_date" : "2021.10.31" }, default = False )
903
+ assert toggle == expected_value
904
+
905
+ def test_flags_less_than_match (mocker , config ):
906
+ expected_value = True
907
+ mocked_app_config_schema = {
908
+ "my_feature" : {
909
+ "default" : expected_value ,
910
+ "rules" : {
911
+ "Date less than 2021.10.31" : {
912
+ "when_match" : True ,
913
+ "conditions" : [
914
+ {
915
+ "action" : RuleAction .KEY_LESS_THAN_VALUE .value ,
916
+ "key" : "current_date" ,
917
+ "value" : "2021.10.31" ,
918
+ }
919
+ ],
920
+ }
921
+ },
922
+ }
923
+ }
924
+ feature_flags = init_feature_flags (mocker , mocked_app_config_schema , config )
925
+ toggle = feature_flags .evaluate (name = "my_feature" , context = {"tenant_id" : "345345435" , "username" : "a" , "current_date" : "2021.04.01" }, default = False )
926
+ assert toggle == expected_value
927
+
928
+ # Test less than or equal to
929
+ def test_flags_less_than_or_equal_no_match (mocker , config ):
930
+ expected_value = False
931
+ mocked_app_config_schema = {
932
+ "my_feature" : {
933
+ "default" : expected_value ,
934
+ "rules" : {
935
+ "Date less than or equal 2021.10.31" : {
936
+ "when_match" : True ,
937
+ "conditions" : [
938
+ {
939
+ "action" : RuleAction .KEY_LESS_THAN_OR_EQUAL_VALUE .value ,
940
+ "key" : "current_date" ,
941
+ "value" : "2021.10.31" ,
942
+ }
943
+ ],
944
+ }
945
+ },
946
+ }
947
+ }
948
+ feature_flags = init_feature_flags (mocker , mocked_app_config_schema , config )
949
+ toggle = feature_flags .evaluate (name = "my_feature" , context = {"tenant_id" : "345345435" , "username" : "a" , "current_date" : "2021.12.25" }, default = False )
950
+ assert toggle == expected_value
951
+
952
+ def test_flags_less_than_or_equal_match_1 (mocker , config ):
953
+ expected_value = True
954
+ mocked_app_config_schema = {
955
+ "my_feature" : {
956
+ "default" : expected_value ,
957
+ "rules" : {
958
+ "Date less than or equal 2021.10.31" : {
959
+ "when_match" : True ,
960
+ "conditions" : [
961
+ {
962
+ "action" : RuleAction .KEY_LESS_THAN_OR_EQUAL_VALUE .value ,
963
+ "key" : "current_date" ,
964
+ "value" : "2021.10.31" ,
965
+ }
966
+ ],
967
+ }
968
+ },
969
+ }
970
+ }
971
+ feature_flags = init_feature_flags (mocker , mocked_app_config_schema , config )
972
+ toggle = feature_flags .evaluate (name = "my_feature" , context = {"tenant_id" : "345345435" , "username" : "a" , "current_date" : "2021.04.01" }, default = False )
973
+ assert toggle == expected_value
974
+
975
+
976
+ def test_flags_less_than_or_equal_match_2 (mocker , config ):
977
+ expected_value = True
978
+ mocked_app_config_schema = {
979
+ "my_feature" : {
980
+ "default" : expected_value ,
981
+ "rules" : {
982
+ "Date less than or equal 2021.10.31" : {
983
+ "when_match" : True ,
984
+ "conditions" : [
985
+ {
986
+ "action" : RuleAction .KEY_LESS_THAN_OR_EQUAL_VALUE .value ,
987
+ "key" : "current_date" ,
988
+ "value" : "2021.10.31" ,
989
+ }
990
+ ],
991
+ }
992
+ },
993
+ }
994
+ }
995
+ feature_flags = init_feature_flags (mocker , mocked_app_config_schema , config )
996
+ toggle = feature_flags .evaluate (name = "my_feature" , context = {"tenant_id" : "345345435" , "username" : "a" , "current_date" : "2021.10.31" }, default = False )
997
+ assert toggle == expected_value
998
+
999
+ # Test greater than
1000
+ def test_flags_greater_than_no_match_1 (mocker , config ):
1001
+ expected_value = False
1002
+ mocked_app_config_schema = {
1003
+ "my_feature" : {
1004
+ "default" : expected_value ,
1005
+ "rules" : {
1006
+ "Date greater than 2021.10.31" : {
1007
+ "when_match" : True ,
1008
+ "conditions" : [
1009
+ {
1010
+ "action" : RuleAction .KEY_GREATER_THAN_VALUE .value ,
1011
+ "key" : "current_date" ,
1012
+ "value" : "2021.10.31" ,
1013
+ }
1014
+ ],
1015
+ }
1016
+ },
1017
+ }
1018
+ }
1019
+ feature_flags = init_feature_flags (mocker , mocked_app_config_schema , config )
1020
+ toggle = feature_flags .evaluate (name = "my_feature" , context = {"tenant_id" : "345345435" , "username" : "a" , "current_date" : "2021.04.01" }, default = False )
1021
+ assert toggle == expected_value
1022
+
1023
+ def test_flags_greater_than_no_match_2 (mocker , config ):
1024
+ expected_value = False
1025
+ mocked_app_config_schema = {
1026
+ "my_feature" : {
1027
+ "default" : expected_value ,
1028
+ "rules" : {
1029
+ "Date greater than 2021.10.31" : {
1030
+ "when_match" : True ,
1031
+ "conditions" : [
1032
+ {
1033
+ "action" : RuleAction .KEY_GREATER_THAN_VALUE .value ,
1034
+ "key" : "current_date" ,
1035
+ "value" : "2021.10.31" ,
1036
+ }
1037
+ ],
1038
+ }
1039
+ },
1040
+ }
1041
+ }
1042
+ feature_flags = init_feature_flags (mocker , mocked_app_config_schema , config )
1043
+ toggle = feature_flags .evaluate (name = "my_feature" , context = {"tenant_id" : "345345435" , "username" : "a" , "current_date" : "2021.10.31" }, default = False )
1044
+ assert toggle == expected_value
1045
+
1046
+ def test_flags_greater_than_match (mocker , config ):
1047
+ expected_value = True
1048
+ mocked_app_config_schema = {
1049
+ "my_feature" : {
1050
+ "default" : expected_value ,
1051
+ "rules" : {
1052
+ "Date greater than 2021.10.31" : {
1053
+ "when_match" : True ,
1054
+ "conditions" : [
1055
+ {
1056
+ "action" : RuleAction .KEY_GREATER_THAN_VALUE .value ,
1057
+ "key" : "current_date" ,
1058
+ "value" : "2021.10.31" ,
1059
+ }
1060
+ ],
1061
+ }
1062
+ },
1063
+ }
1064
+ }
1065
+ feature_flags = init_feature_flags (mocker , mocked_app_config_schema , config )
1066
+ toggle = feature_flags .evaluate (name = "my_feature" , context = {"tenant_id" : "345345435" , "username" : "a" , "current_date" : "2021.12.25" }, default = False )
1067
+ assert toggle == expected_value
1068
+
1069
+ # Test greater than or equal to
1070
+ def test_flags_greater_than_or_equal_no_match (mocker , config ):
1071
+ expected_value = False
1072
+ mocked_app_config_schema = {
1073
+ "my_feature" : {
1074
+ "default" : expected_value ,
1075
+ "rules" : {
1076
+ "Date greater than or equal 2021.10.31" : {
1077
+ "when_match" : True ,
1078
+ "conditions" : [
1079
+ {
1080
+ "action" : RuleAction .KEY_GREATER_THAN_OR_EQUAL_VALUE .value ,
1081
+ "key" : "current_date" ,
1082
+ "value" : "2021.10.31" ,
1083
+ }
1084
+ ],
1085
+ }
1086
+ },
1087
+ }
1088
+ }
1089
+ feature_flags = init_feature_flags (mocker , mocked_app_config_schema , config )
1090
+ toggle = feature_flags .evaluate (name = "my_feature" , context = {"tenant_id" : "345345435" , "username" : "a" , "current_date" : "2021.04.01" }, default = False )
1091
+ assert toggle == expected_value
1092
+
1093
+ def test_flags_greater_than_or_equal_match_1 (mocker , config ):
1094
+ expected_value = True
1095
+ mocked_app_config_schema = {
1096
+ "my_feature" : {
1097
+ "default" : expected_value ,
1098
+ "rules" : {
1099
+ "Date greater than or equal 2021.10.31" : {
1100
+ "when_match" : True ,
1101
+ "conditions" : [
1102
+ {
1103
+ "action" : RuleAction .KEY_GREATER_THAN_OR_EQUAL_VALUE .value ,
1104
+ "key" : "current_date" ,
1105
+ "value" : "2021.10.31" ,
1106
+ }
1107
+ ],
1108
+ }
1109
+ },
1110
+ }
1111
+ }
1112
+ feature_flags = init_feature_flags (mocker , mocked_app_config_schema , config )
1113
+ toggle = feature_flags .evaluate (name = "my_feature" , context = {"tenant_id" : "345345435" , "username" : "a" , "current_date" : "2021.12.25" }, default = False )
1114
+ assert toggle == expected_value
1115
+
1116
+
1117
+ def test_flags_greater_than_or_equal_match_2 (mocker , config ):
1118
+ expected_value = True
1119
+ mocked_app_config_schema = {
1120
+ "my_feature" : {
1121
+ "default" : expected_value ,
1122
+ "rules" : {
1123
+ "Date greater than or equal 2021.10.31" : {
1124
+ "when_match" : True ,
1125
+ "conditions" : [
1126
+ {
1127
+ "action" : RuleAction .KEY_GREATER_THAN_OR_EQUAL_VALUE .value ,
1128
+ "key" : "current_date" ,
1129
+ "value" : "2021.10.31" ,
1130
+ }
1131
+ ],
1132
+ }
1133
+ },
1134
+ }
1135
+ }
1136
+ feature_flags = init_feature_flags (mocker , mocked_app_config_schema , config )
1137
+ toggle = feature_flags .evaluate (name = "my_feature" , context = {"tenant_id" : "345345435" , "username" : "a" , "current_date" : "2021.10.31" }, default = False )
1138
+ assert toggle == expected_value
1139
+
0 commit comments