@@ -15,18 +15,12 @@ func TestFractionalEvaluation(t *testing.T) {
1515 var sources = []string {source }
1616 ctx := context .Background ()
1717
18- commonFlags := Flags {
19- Flags : map [string ]model.Flag {
20- "headerColor" : {
21- State : "ENABLED" ,
22- DefaultVariant : "red" ,
23- Variants : map [string ]any {
24- "red" : "#FF0000" ,
25- "blue" : "#0000FF" ,
26- "green" : "#00FF00" ,
27- "yellow" : "#FFFF00" ,
28- },
29- Targeting : []byte (`{
18+ commonFlags := map [string ]model.Flag {
19+ "headerColor" : {
20+ State : "ENABLED" ,
21+ DefaultVariant : "red" ,
22+ Variants : colorVariants ,
23+ Targeting : []byte (`{
3024 "if": [
3125 {
3226 "in": ["@faas.com", {
@@ -56,17 +50,12 @@ func TestFractionalEvaluation(t *testing.T) {
5650 }, null
5751 ]
5852 }` ),
59- },
60- "customSeededHeaderColor" : {
61- State : "ENABLED" ,
62- DefaultVariant : "red" ,
63- Variants : map [string ]any {
64- "red" : "#FF0000" ,
65- "blue" : "#0000FF" ,
66- "green" : "#00FF00" ,
67- "yellow" : "#FFFF00" ,
68- },
69- Targeting : []byte (`{
53+ },
54+ "customSeededHeaderColor" : {
55+ State : "ENABLED" ,
56+ DefaultVariant : "red" ,
57+ Variants : colorVariants ,
58+ Targeting : []byte (`{
7059 "if": [
7160 {
7261 "in": ["@faas.com", {
@@ -84,12 +73,11 @@ func TestFractionalEvaluation(t *testing.T) {
8473 }, null
8574 ]
8675 }` ),
87- },
8876 },
8977 }
9078
9179 tests := map [string ]struct {
92- flags Flags
80+ flags map [ string ]model. Flag
9381 flagKey string
9482 context map [string ]any
9583 expectedValue string
@@ -178,18 +166,12 @@ func TestFractionalEvaluation(t *testing.T) {
178166 expectedReason : model .TargetingMatchReason ,
179167 },
180168 "[email protected] with different flag key" : {
181- flags : Flags {
182- Flags : map [string ]model.Flag {
183- "footerColor" : {
184- State : "ENABLED" ,
185- DefaultVariant : "red" ,
186- Variants : map [string ]any {
187- "red" : "#FF0000" ,
188- "blue" : "#0000FF" ,
189- "green" : "#00FF00" ,
190- "yellow" : "#FFFF00" ,
191- },
192- Targeting : []byte (`{
169+ flags : map [string ]model.Flag {
170+ "footerColor" : {
171+ State : "ENABLED" ,
172+ DefaultVariant : "red" ,
173+ Variants : colorVariants ,
174+ Targeting : []byte (`{
193175 "if": [
194176 {
195177 "in": ["@faas.com", {
@@ -219,7 +201,6 @@ func TestFractionalEvaluation(t *testing.T) {
219201 }, null
220202 ]
221203 }` ),
222- },
223204 },
224205 },
225206 flagKey : "footerColor" ,
@@ -231,18 +212,12 @@ func TestFractionalEvaluation(t *testing.T) {
231212 expectedReason : model .TargetingMatchReason ,
232213 },
233214 "non even split" : {
234- flags : Flags {
235- Flags : map [string ]model.Flag {
236- "headerColor" : {
237- State : "ENABLED" ,
238- DefaultVariant : "red" ,
239- Variants : map [string ]any {
240- "red" : "#FF0000" ,
241- "blue" : "#0000FF" ,
242- "green" : "#00FF00" ,
243- "yellow" : "#FFFF00" ,
244- },
245- Targeting : []byte (`{
215+ flags : map [string ]model.Flag {
216+ "headerColor" : {
217+ State : "ENABLED" ,
218+ DefaultVariant : "red" ,
219+ Variants : colorVariants ,
220+ Targeting : []byte (`{
246221 "if": [
247222 {
248223 "in": ["@faas.com", {
@@ -268,7 +243,6 @@ func TestFractionalEvaluation(t *testing.T) {
268243 }, null
269244 ]
270245 }` ),
271- },
272246 },
273247 },
274248 flagKey : "headerColor" ,
@@ -280,18 +254,12 @@ func TestFractionalEvaluation(t *testing.T) {
280254 expectedReason : model .TargetingMatchReason ,
281255 },
282256 "fallback to default variant if no email provided" : {
283- flags : Flags {
284- Flags : map [string ]model.Flag {
285- "headerColor" : {
286- State : "ENABLED" ,
287- DefaultVariant : "red" ,
288- Variants : map [string ]any {
289- "red" : "#FF0000" ,
290- "blue" : "#0000FF" ,
291- "green" : "#00FF00" ,
292- "yellow" : "#FFFF00" ,
293- },
294- Targeting : []byte (`{
257+ flags : map [string ]model.Flag {
258+ "headerColor" : {
259+ State : "ENABLED" ,
260+ DefaultVariant : "red" ,
261+ Variants : colorVariants ,
262+ Targeting : []byte (`{
295263 "fractional": [
296264 {"var": "email"},
297265 [
@@ -312,7 +280,6 @@ func TestFractionalEvaluation(t *testing.T) {
312280 ]
313281 ]
314282 }` ),
315- },
316283 },
317284 },
318285 flagKey : "headerColor" ,
@@ -322,18 +289,12 @@ func TestFractionalEvaluation(t *testing.T) {
322289 expectedReason : model .DefaultReason ,
323290 },
324291 "get variant for non-percentage weight values" : {
325- flags : Flags {
326- Flags : map [string ]model.Flag {
327- "headerColor" : {
328- State : "ENABLED" ,
329- DefaultVariant : "red" ,
330- Variants : map [string ]any {
331- "red" : "#FF0000" ,
332- "blue" : "#0000FF" ,
333- "green" : "#00FF00" ,
334- "yellow" : "#FFFF00" ,
335- },
336- Targeting : []byte (`{
292+ flags : map [string ]model.Flag {
293+ "headerColor" : {
294+ State : "ENABLED" ,
295+ DefaultVariant : "red" ,
296+ Variants : colorVariants ,
297+ Targeting : []byte (`{
337298 "fractional": [
338299 {"var": "email"},
339300 [
@@ -346,7 +307,6 @@ func TestFractionalEvaluation(t *testing.T) {
346307 ]
347308 ]
348309 }` ),
349- },
350310 },
351311 },
352312 flagKey : "headerColor" ,
@@ -358,18 +318,12 @@ func TestFractionalEvaluation(t *testing.T) {
358318 expectedReason : model .TargetingMatchReason ,
359319 },
360320 "get variant for non-specified weight values" : {
361- flags : Flags {
362- Flags : map [string ]model.Flag {
363- "headerColor" : {
364- State : "ENABLED" ,
365- DefaultVariant : "red" ,
366- Variants : map [string ]any {
367- "red" : "#FF0000" ,
368- "blue" : "#0000FF" ,
369- "green" : "#00FF00" ,
370- "yellow" : "#FFFF00" ,
371- },
372- Targeting : []byte (`{
321+ flags : map [string ]model.Flag {
322+ "headerColor" : {
323+ State : "ENABLED" ,
324+ DefaultVariant : "red" ,
325+ Variants : colorVariants ,
326+ Targeting : []byte (`{
373327 "fractional": [
374328 {"var": "email"},
375329 [
@@ -380,7 +334,6 @@ func TestFractionalEvaluation(t *testing.T) {
380334 ]
381335 ]
382336 }` ),
383- },
384337 },
385338 },
386339 flagKey : "headerColor" ,
@@ -392,18 +345,12 @@ func TestFractionalEvaluation(t *testing.T) {
392345 expectedReason : model .TargetingMatchReason ,
393346 },
394347 "default to targetingKey if no bucket key provided" : {
395- flags : Flags {
396- Flags : map [string ]model.Flag {
397- "headerColor" : {
398- State : "ENABLED" ,
399- DefaultVariant : "red" ,
400- Variants : map [string ]any {
401- "red" : "#FF0000" ,
402- "blue" : "#0000FF" ,
403- "green" : "#00FF00" ,
404- "yellow" : "#FFFF00" ,
405- },
406- Targeting : []byte (`{
348+ flags : map [string ]model.Flag {
349+ "headerColor" : {
350+ State : "ENABLED" ,
351+ DefaultVariant : "red" ,
352+ Variants : colorVariants ,
353+ Targeting : []byte (`{
407354 "fractional": [
408355 [
409356 "blue",
@@ -415,7 +362,6 @@ func TestFractionalEvaluation(t *testing.T) {
415362 ]
416363 ]
417364 }` ),
418- },
419365 },
420366 },
421367 flagKey : "headerColor" ,
@@ -427,24 +373,19 @@ func TestFractionalEvaluation(t *testing.T) {
427373 expectedReason : model .TargetingMatchReason ,
428374 },
429375 "missing email - parser should ignore nil/missing custom variables and continue" : {
430- flags : Flags {
431- Flags : map [string ]model.Flag {
432- "headerColor" : {
433- State : "ENABLED" ,
434- DefaultVariant : "red" ,
435- Variants : map [string ]any {
436- "red" : "#FF0000" ,
437- "blue" : "#0000FF" ,
438- },
439- Targeting : []byte (
440- `{
376+ flags : map [string ]model.Flag {
377+ "headerColor" : {
378+ State : "ENABLED" ,
379+ DefaultVariant : "red" ,
380+ Variants : colorVariants ,
381+ Targeting : []byte (
382+ `{
441383 "fractional": [
442384 {"var": "email"},
443385 ["red",50],
444386 ["blue",50]
445387 ]
446388 }` ),
447- },
448389 },
449390 },
450391 flagKey : "headerColor" ,
@@ -466,7 +407,7 @@ func TestFractionalEvaluation(t *testing.T) {
466407 }
467408
468409 je := NewJSON (log , s )
469- je .store .Update (source , tt .flags . Flags , model.Metadata {})
410+ je .store .Update (source , tt .flags , model.Metadata {})
470411
471412 value , variant , reason , _ , err := resolve [string ](ctx , reqID , tt .flagKey , tt .context , je .evaluateVariant )
472413
@@ -497,18 +438,12 @@ func BenchmarkFractionalEvaluation(b *testing.B) {
497438 var sources = []string {source }
498439 ctx := context .Background ()
499440
500- flags := Flags {
501- Flags : map [string ]model.Flag {
502- "headerColor" : {
503- State : "ENABLED" ,
504- DefaultVariant : "red" ,
505- Variants : map [string ]any {
506- "red" : "#FF0000" ,
507- "blue" : "#0000FF" ,
508- "green" : "#00FF00" ,
509- "yellow" : "#FFFF00" ,
510- },
511- Targeting : []byte (`{
441+ flags := map [string ]model.Flag {
442+ "headerColor" : {
443+ State : "ENABLED" ,
444+ DefaultVariant : "red" ,
445+ Variants : colorVariants ,
446+ Targeting : []byte (`{
512447 "if": [
513448 {
514449 "in": ["@faas.com", {
@@ -538,12 +473,11 @@ func BenchmarkFractionalEvaluation(b *testing.B) {
538473 }, null
539474 ]
540475 }` ),
541- },
542476 },
543477 }
544478
545479 tests := map [string ]struct {
546- flags Flags
480+ flags map [ string ]model. Flag
547481 flagKey string
548482 context map [string ]any
549483 expectedValue string
@@ -601,7 +535,7 @@ func BenchmarkFractionalEvaluation(b *testing.B) {
601535 b .Fatalf ("NewStore failed: %v" , err )
602536 }
603537 je := NewJSON (log , s )
604- je .store .Update (source , tt .flags . Flags , model.Metadata {})
538+ je .store .Update (source , tt .flags , model.Metadata {})
605539
606540 for i := 0 ; i < b .N ; i ++ {
607541 value , variant , reason , _ , err := resolve [string ](
0 commit comments