@@ -10,13 +10,48 @@ const setupDenoEnv = async (local: boolean, interval: string = '') => {
1010  await  import ( '../../src/app.ts' ) ; 
1111} ; 
1212
13+ const  tearDown  =  ( )  =>  { 
14+   Client . terminateSnapshotAutoUpdate ( ) ; 
15+ } ; 
16+ 
1317const  testBody  =  ( fn : ( t : Deno . TestContext )  =>  void   |  Promise < void > )  =>  { 
1418  return  async  ( t : Deno . TestContext )  =>  { 
1519    await  setupDenoEnv ( true ) ; 
1620    await  fn ( t ) ; 
21+     tearDown ( ) ; 
1722  } ; 
1823} ; 
1924
25+ const  testParameters  =  [ { 
26+   when : StrategiesType . VALUE , 
27+   field : 'value' , 
28+   value : 'value' , 
29+ } ,  { 
30+   when : StrategiesType . NUMERIC , 
31+   field : 'number' , 
32+   value : '123' , 
33+ } ,  { 
34+   when : StrategiesType . DATE , 
35+   field : 'date' , 
36+   value : '2023-10-01' , 
37+ } ,  { 
38+   when : StrategiesType . TIME , 
39+   field : 'time' , 
40+   value : '12:00' , 
41+ } ,  { 
42+   when : StrategiesType . PAYLOAD , 
43+   field : 'payload' , 
44+   value : '{"key":"value"}' , 
45+ } ,  { 
46+   when : StrategiesType . REGEX , 
47+   field : 'regex' , 
48+   value : '^test$' , 
49+ } ,  { 
50+   when : StrategiesType . NETWORK , 
51+   field : 'network' , 
52+   value : '198.168.0.1' , 
53+ } ] ; 
54+ 
2055Deno . test ( { 
2156  name : 'Feature service - it should return feature disabled' , 
2257  fn : testBody ( async  ( )  =>  { 
@@ -25,28 +60,29 @@ Deno.test({
2560    const  featureName  =  'FEATURE_NAME' ; 
2661
2762    //test 
28-     featureService . initialize ( false ) ; 
2963    const  response  =  await  featureService . isFeatureEnabled ( {  feature : featureName  } ) ; 
3064
3165    //assert 
3266    assertFalse ( response ) ; 
33-     Client . terminateSnapshotAutoUpdate ( ) ; 
3467  } ) , 
3568} ) ; 
3669
3770Deno . test ( { 
38-   name : 'Feature service - it should return feature enabled - with parameters ' , 
71+   name : 'Feature service - it should return feature enabled (parameterized) ' , 
3972  fn : testBody ( async  ( )  =>  { 
40-     //given 
41-     Client . assume ( 'FEATURE_NAME' ) . true ( ) . when ( StrategiesType . VALUE ,  'value' ) ; 
42-     const  featureName  =  'FEATURE_NAME' ; 
73+     for  ( const  param  of  testParameters )  { 
74+       //given 
75+       Client . assume ( 'FEATURE_NAME' ) . true ( ) . when ( param . when ,  param . value ) ; 
76+       const  featureName  =  'FEATURE_NAME' ; 
4377
44-     //test 
45-     featureService . initialize ( false ) ; 
46-     const  response  =  await  featureService . isFeatureEnabled ( {  feature : featureName ,  parameters : {  value : 'value'  }  } ) ; 
78+       //test 
79+       const  response  =  await  featureService . isFeatureEnabled ( { 
80+         feature : featureName , 
81+         parameters : {  [ param . field ] : param . value  } , 
82+       } ) ; 
4783
48-     //assert 
49-     assert ( response ) ; 
50-     Client . terminateSnapshotAutoUpdate ( ) ; 
84+        //assert 
85+        assert ( response ,   `Feature should be enabled for  ${ param . when }  with value  ${ param . value } ` ) ; 
86+     } 
5187  } ) , 
5288} ) ; 
0 commit comments