@@ -383,75 +383,14 @@ func TestExternalAuthYAMLConfig(t *testing.T) {
383
383
require .Equal (t , inputYAML , output , "re-marshaled is the same as input" )
384
384
}
385
385
386
- type featureVariants struct {
387
- original codersdk.Feature
388
-
389
- variants []codersdk.Feature
390
- }
391
-
392
- func variants (f codersdk.Feature ) * featureVariants {
393
- return & featureVariants {original : f }
394
- }
395
-
396
- func (f * featureVariants ) Limits () * featureVariants {
397
- f .variant (func (v * codersdk.Feature ) {
398
- if v .Limit == nil {
399
- v .Limit = ptr.Ref [int64 ](100 )
400
- return
401
- }
402
- v .Limit = nil
403
- })
404
- return f
405
- }
406
-
407
- func (f * featureVariants ) Actual () * featureVariants {
408
- f .variant (func (v * codersdk.Feature ) {
409
- if v .Actual == nil {
410
- v .Actual = ptr.Ref [int64 ](100 )
411
- return
412
- }
413
- v .Actual = nil
414
- })
415
- return f
416
- }
417
-
418
- func (f * featureVariants ) Enabled () * featureVariants {
419
- f .variant (func (v * codersdk.Feature ) {
420
- v .Enabled = ! v .Enabled
421
- })
422
- return f
423
- }
424
-
425
- func (f * featureVariants ) variant (new func (f * codersdk.Feature )) {
426
- newVariants := make ([]codersdk.Feature , 0 , len (f .variants )* 2 )
427
- for _ , v := range f .variants {
428
- cpy := v
429
- new (& cpy )
430
- newVariants = append (newVariants , v , cpy )
431
- }
432
- f .variants = newVariants
433
- }
434
-
435
- func (f * featureVariants ) Features () []codersdk.Feature {
436
- return append ([]codersdk.Feature {f .original }, f .variants ... )
437
- }
438
-
439
386
func TestFeatureComparison (t * testing.T ) {
440
387
t .Parallel ()
441
388
442
- strictEntitlement := func (v codersdk.Feature ) []codersdk.Feature {
443
- // Entitlement checks should ignore limits, actuals, and enables
444
- return variants (v ).Limits ().Actual ().Enabled ().Features ()
445
- }
446
-
447
389
testCases := []struct {
448
390
Name string
449
391
A codersdk.Feature
450
392
B codersdk.Feature
451
393
Expected int
452
- // To assert variants do not affect the end result, a function can be
453
- // used to generate additional variants of each feature to check.
454
- Variants func (v codersdk.Feature ) []codersdk.Feature
455
394
}{
456
395
{
457
396
Name : "Empty" ,
@@ -464,44 +403,38 @@ func TestFeatureComparison(t *testing.T) {
464
403
A : codersdk.Feature {Entitlement : codersdk .EntitlementEntitled },
465
404
B : codersdk.Feature {Entitlement : codersdk .EntitlementGracePeriod },
466
405
Expected : 1 ,
467
- Variants : strictEntitlement ,
468
406
},
469
407
{
470
408
Name : "EntitledVsNotEntitled" ,
471
409
A : codersdk.Feature {Entitlement : codersdk .EntitlementEntitled },
472
410
B : codersdk.Feature {Entitlement : codersdk .EntitlementNotEntitled },
473
411
Expected : 3 ,
474
- Variants : strictEntitlement ,
475
412
},
476
413
{
477
414
Name : "EntitledVsUnknown" ,
478
415
A : codersdk.Feature {Entitlement : codersdk .EntitlementEntitled },
479
416
B : codersdk.Feature {Entitlement : "" },
480
417
Expected : 4 ,
481
- Variants : strictEntitlement ,
482
418
},
483
419
// GracePeriod
484
420
{
485
421
Name : "GracefulVsNotEntitled" ,
486
422
A : codersdk.Feature {Entitlement : codersdk .EntitlementGracePeriod },
487
423
B : codersdk.Feature {Entitlement : codersdk .EntitlementNotEntitled },
488
424
Expected : 2 ,
489
- Variants : strictEntitlement ,
490
425
},
491
426
{
492
427
Name : "GracefulVsUnknown" ,
493
428
A : codersdk.Feature {Entitlement : codersdk .EntitlementGracePeriod },
494
429
B : codersdk.Feature {Entitlement : "" },
495
430
Expected : 3 ,
496
- Variants : strictEntitlement ,
497
431
},
498
432
// NotEntitled
499
433
{
500
434
Name : "NotEntitledVsUnknown" ,
501
435
A : codersdk.Feature {Entitlement : codersdk .EntitlementNotEntitled },
502
436
B : codersdk.Feature {Entitlement : "" },
503
437
Expected : 1 ,
504
- Variants : strictEntitlement ,
505
438
},
506
439
// --
507
440
{
@@ -579,29 +512,16 @@ func TestFeatureComparison(t *testing.T) {
579
512
t .Run (tc .Name , func (t * testing.T ) {
580
513
t .Parallel ()
581
514
582
- if tc .Variants == nil {
583
- tc .Variants = func (v codersdk.Feature ) []codersdk.Feature {
584
- return []codersdk.Feature {v }
585
- }
586
- }
515
+ r := codersdk .CompareFeatures (tc .A , tc .B )
516
+ logIt := ! assert .Equal (t , tc .Expected , r )
587
517
588
- VariantLoop:
589
- for i , a := range tc .Variants (tc .A ) {
590
- for j , b := range tc .Variants (tc .B ) {
591
- r := codersdk .CompareFeatures (a , b )
592
- logIt := ! assert .Equalf (t , tc .Expected , r , "variant %d vs %d" , i , j )
593
-
594
- // Comparisons should be like addition. A - B = -1 * (B - A)
595
- r = codersdk .CompareFeatures (tc .B , tc .A )
596
- logIt = logIt || ! assert .Equalf (t , tc .Expected * - 1 , r , "the inverse comparison should also be true, variant %d vs %d" , j , i )
597
- if logIt {
598
- ad , _ := json .Marshal (a )
599
- bd , _ := json .Marshal (b )
600
- t .Logf ("variant %d vs %d\n i = %s\n j = %s" , i , j , ad , bd )
601
- // Do not iterate into more variants if the test fails.
602
- break VariantLoop
603
- }
604
- }
518
+ // Comparisons should be like addition. A - B = -1 * (B - A)
519
+ r = codersdk .CompareFeatures (tc .B , tc .A )
520
+ logIt = logIt || ! assert .Equalf (t , tc .Expected * - 1 , r , "the inverse comparison should also be true" )
521
+ if logIt {
522
+ ad , _ := json .Marshal (tc .A )
523
+ bd , _ := json .Marshal (tc .B )
524
+ t .Logf ("a = %s\n b = %s" , ad , bd )
605
525
}
606
526
})
607
527
}
0 commit comments