Skip to content

Commit c0961df

Browse files
committed
fixup! test(operators): add follow-up error scenarios for operator null-return behaviour
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
1 parent 9bf5756 commit c0961df

6 files changed

Lines changed: 144 additions & 52 deletions

File tree

evaluator/flags/testkit-flags.json

Lines changed: 51 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -462,29 +462,38 @@
462462
},
463463
"semver-invalid-version-flag": {
464464
"state": "ENABLED",
465-
"variants": { "match": "match", "no-match": "no-match", "fallback": "fallback" },
465+
"variants": { "true": "true", "false": "false", "fallback": "fallback" },
466466
"defaultVariant": "fallback",
467467
"targeting": {
468-
"sem_ver": [{"var": "version"}, "=", "1.0.0"]
468+
"if": [
469+
{"sem_ver": [{"var": "version"}, "=", "1.0.0"]},
470+
"true", "false"
471+
]
469472
}
470473
},
471474
"semver-invalid-operator-flag": {
472475
"state": "ENABLED",
473-
"variants": { "match": "match", "no-match": "no-match", "fallback": "fallback" },
476+
"variants": { "true": "true", "false": "false", "fallback": "fallback" },
474477
"defaultVariant": "fallback",
475478
"targeting": {
476-
"sem_ver": [{"var": "version"}, "===", "1.0.0"]
479+
"if": [
480+
{"sem_ver": [{"var": "version"}, "===", "1.0.0"]},
481+
"true", "false"
482+
]
477483
}
478484
},
479485
"fractional-null-bucket-key-flag": {
480486
"state": "ENABLED",
481-
"variants": { "one": "one", "two": "two", "fallback": "fallback" },
487+
"variants": { "true": "true", "false": "false", "fallback": "fallback" },
482488
"defaultVariant": "fallback",
483489
"targeting": {
484-
"fractional": [
485-
{"var": "missing_key"},
486-
["one", 50],
487-
["two", 50]
490+
"if": [
491+
{"fractional": [
492+
{"var": "missing_key"},
493+
["one", 50],
494+
["two", 50]
495+
]},
496+
"true", "false"
488497
]
489498
}
490499
},
@@ -514,45 +523,60 @@
514523
},
515524
"starts-with-non-string-flag": {
516525
"state": "ENABLED",
517-
"variants": { "fallback": "fallback" },
526+
"variants": { "true": "true", "false": "false", "fallback": "fallback" },
518527
"defaultVariant": "fallback",
519528
"targeting": {
520-
"starts_with": [{"var": "num"}, "abc"]
529+
"if": [
530+
{"starts_with": [{"var": "num"}, "abc"]},
531+
"true", "false"
532+
]
521533
}
522534
},
523535
"ends-with-non-string-flag": {
524536
"state": "ENABLED",
525-
"variants": { "fallback": "fallback" },
537+
"variants": { "true": "true", "false": "false", "fallback": "fallback" },
526538
"defaultVariant": "fallback",
527539
"targeting": {
528-
"ends_with": [{"var": "num"}, "xyz"]
540+
"if": [
541+
{"ends_with": [{"var": "num"}, "xyz"]},
542+
"true", "false"
543+
]
529544
}
530545
},
531546
"starts-with-wrong-args-flag": {
532547
"state": "ENABLED",
533-
"variants": { "fallback": "fallback" },
548+
"variants": { "true": "true", "false": "false", "fallback": "fallback" },
534549
"defaultVariant": "fallback",
535550
"targeting": {
536-
"starts_with": ["abc"]
551+
"if": [
552+
{"starts_with": ["abc"]},
553+
"true", "false"
554+
]
537555
}
538556
},
539557
"ends-with-wrong-args-flag": {
540558
"state": "ENABLED",
541-
"variants": { "fallback": "fallback" },
559+
"variants": { "true": "true", "false": "false", "fallback": "fallback" },
542560
"defaultVariant": "fallback",
543561
"targeting": {
544-
"ends_with": ["xyz"]
562+
"if": [
563+
{"ends_with": ["xyz"]},
564+
"true", "false"
565+
]
545566
}
546567
},
547568
"fractional-zero-weights-flag": {
548569
"state": "ENABLED",
549-
"variants": { "one": "one", "two": "two", "fallback": "fallback" },
570+
"variants": { "true": "true", "false": "false", "fallback": "fallback" },
550571
"defaultVariant": "fallback",
551572
"targeting": {
552-
"fractional": [
553-
{"var": "targetingKey"},
554-
["one", 0],
555-
["two", 0]
573+
"if": [
574+
{"fractional": [
575+
{"var": "targetingKey"},
576+
["one", 0],
577+
["two", 0]
578+
]},
579+
"true", "false"
556580
]
557581
}
558582
},
@@ -570,10 +594,13 @@
570594
},
571595
"semver-wrong-args-flag": {
572596
"state": "ENABLED",
573-
"variants": { "fallback": "fallback" },
597+
"variants": { "true": "true", "false": "false", "fallback": "fallback" },
574598
"defaultVariant": "fallback",
575599
"targeting": {
576-
"sem_ver": [{"var": "version"}, "="]
600+
"if": [
601+
{"sem_ver": [{"var": "version"}, "="]},
602+
"true", "false"
603+
]
577604
}
578605
}
579606
},

evaluator/gherkin/fractional.feature

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,8 @@ Feature: Evaluator fractional operator
195195
And a String-flag with key "fractional-null-bucket-key-flag" and a fallback value "wrong"
196196
When the flag was evaluated with details
197197
Then the resolved details value should be "fallback"
198+
And the reason should be "DEFAULT"
199+
198200
# Follow-up error scenarios from https://github.com/open-feature/flagd/issues/1874
199201

200202
@operator-errors
@@ -204,6 +206,7 @@ Feature: Evaluator fractional operator
204206
And a context containing a targeting key with value "any-user"
205207
When the flag was evaluated with details
206208
Then the resolved details value should be "fallback"
209+
And the reason should be "DEFAULT"
207210

208211
@operator-errors
209212
Scenario: fractional negative bucket weight is clamped to zero

evaluator/gherkin/semver.feature

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ Feature: Evaluator semantic version operator
3939
And a context containing a key "version", with type "String" and with value "<context_value>"
4040
When the flag was evaluated with details
4141
Then the resolved details value should be "fallback"
42+
And the reason should be "DEFAULT"
4243
Examples:
4344
| key | context_value |
4445
| semver-invalid-version-flag | not-a-version |
@@ -96,3 +97,4 @@ Feature: Evaluator semantic version operator
9697
And a context containing a key "version", with type "String" and with value "1.0.0"
9798
When the flag was evaluated with details
9899
Then the resolved details value should be "fallback"
100+
And the reason should be "DEFAULT"

evaluator/gherkin/string.feature

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ Feature: Evaluator string comparison operator
2828
And a context containing a key "num", with type "Integer" and with value "123"
2929
When the flag was evaluated with details
3030
Then the resolved details value should be "fallback"
31+
And the reason should be "DEFAULT"
3132
Examples:
3233
| key |
3334
| starts-with-non-string-flag |
@@ -39,6 +40,7 @@ Feature: Evaluator string comparison operator
3940
And a String-flag with key "<key>" and a fallback value "wrong"
4041
When the flag was evaluated with details
4142
Then the resolved details value should be "fallback"
43+
And the reason should be "DEFAULT"
4244
Examples:
4345
| key |
4446
| starts-with-wrong-args-flag |

flags/edge-case-flags.json

Lines changed: 78 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -56,84 +56,128 @@
5656
"semver-invalid-version-flag": {
5757
"state": "ENABLED",
5858
"variants": {
59-
"match": "match",
60-
"no-match": "no-match",
59+
"true": "true",
60+
"false": "false",
6161
"fallback": "fallback"
6262
},
6363
"defaultVariant": "fallback",
6464
"targeting": {
65-
"sem_ver": [{"var": "version"}, "=", "1.0.0"]
65+
"if": [
66+
{"sem_ver": [{"var": "version"}, "=", "1.0.0"]},
67+
"true", "false"
68+
]
6669
}
6770
},
6871
"semver-invalid-operator-flag": {
6972
"state": "ENABLED",
7073
"variants": {
71-
"match": "match",
72-
"no-match": "no-match",
74+
"true": "true",
75+
"false": "false",
7376
"fallback": "fallback"
7477
},
7578
"defaultVariant": "fallback",
7679
"targeting": {
77-
"sem_ver": [{"var": "version"}, "===", "1.0.0"]
80+
"if": [
81+
{"sem_ver": [{"var": "version"}, "===", "1.0.0"]},
82+
"true", "false"
83+
]
7884
}
7985
},
8086
"fractional-null-bucket-key-flag": {
8187
"state": "ENABLED",
8288
"variants": {
83-
"one": "one",
84-
"two": "two",
89+
"true": "true",
90+
"false": "false",
8591
"fallback": "fallback"
8692
},
8793
"defaultVariant": "fallback",
8894
"targeting": {
89-
"fractional": [
90-
{"var": "missing_key"},
91-
["one", 50],
92-
["two", 50]
95+
"if": [
96+
{"fractional": [
97+
{"var": "missing_key"},
98+
["one", 50],
99+
["two", 50]
100+
]},
101+
"true", "false"
93102
]
94103
}
95104
},
96105
"starts-with-non-string-flag": {
97106
"state": "ENABLED",
98-
"variants": { "fallback": "fallback" },
107+
"variants": {
108+
"true": "true",
109+
"false": "false",
110+
"fallback": "fallback"
111+
},
99112
"defaultVariant": "fallback",
100113
"targeting": {
101-
"starts_with": [{"var": "num"}, "abc"]
114+
"if": [
115+
{"starts_with": [{"var": "num"}, "abc"]},
116+
"true", "false"
117+
]
102118
}
103119
},
104120
"ends-with-non-string-flag": {
105121
"state": "ENABLED",
106-
"variants": { "fallback": "fallback" },
122+
"variants": {
123+
"true": "true",
124+
"false": "false",
125+
"fallback": "fallback"
126+
},
107127
"defaultVariant": "fallback",
108128
"targeting": {
109-
"ends_with": [{"var": "num"}, "xyz"]
129+
"if": [
130+
{"ends_with": [{"var": "num"}, "xyz"]},
131+
"true", "false"
132+
]
110133
}
111134
},
112135
"starts-with-wrong-args-flag": {
113136
"state": "ENABLED",
114-
"variants": { "fallback": "fallback" },
137+
"variants": {
138+
"true": "true",
139+
"false": "false",
140+
"fallback": "fallback"
141+
},
115142
"defaultVariant": "fallback",
116143
"targeting": {
117-
"starts_with": ["abc"]
144+
"if": [
145+
{"starts_with": ["abc"]},
146+
"true", "false"
147+
]
118148
}
119149
},
120150
"ends-with-wrong-args-flag": {
121151
"state": "ENABLED",
122-
"variants": { "fallback": "fallback" },
152+
"variants": {
153+
"true": "true",
154+
"false": "false",
155+
"fallback": "fallback"
156+
},
123157
"defaultVariant": "fallback",
124158
"targeting": {
125-
"ends_with": ["xyz"]
159+
"if": [
160+
{"ends_with": ["xyz"]},
161+
"true", "false"
162+
]
126163
}
127164
},
128165
"fractional-zero-weights-flag": {
129166
"state": "ENABLED",
130-
"variants": { "one": "one", "two": "two", "fallback": "fallback" },
167+
"variants": {
168+
"true": "true",
169+
"false": "false",
170+
"fallback": "fallback"
171+
},
131172
"defaultVariant": "fallback",
132173
"targeting": {
133-
"fractional": [
134-
{"var": "targetingKey"},
135-
["one", 0],
136-
["two", 0]
174+
"if": [
175+
{"fractional": [
176+
{"var": "targetingKey"},
177+
["one", 0],
178+
["two", 0]
179+
]},
180+
"true", "false"
137181
]
138182
}
139183
},
@@ -151,10 +195,17 @@
151195
},
152196
"semver-wrong-args-flag": {
153197
"state": "ENABLED",
154-
"variants": { "fallback": "fallback" },
198+
"variants": {
199+
"true": "true",
200+
"false": "false",
201+
"fallback": "fallback"
202+
},
155203
"defaultVariant": "fallback",
156204
"targeting": {
157-
"sem_ver": [{"var": "version"}, "="]
205+
"if": [
206+
{"sem_ver": [{"var": "version"}, "="]},
207+
"true", "false"
208+
]
158209
}
159210
}
160211
}

0 commit comments

Comments
 (0)