1919import org .junit .jupiter .params .provider .EnumSource ;
2020
2121class HookSupportTest implements HookFixtures {
22+
23+ private static final HookSupport hookSupport = new HookSupport ();
24+
2225 @ Test
2326 @ DisplayName ("should merge EvaluationContexts on before hooks correctly" )
2427 void shouldMergeEvaluationContextsOnBeforeHooksCorrectly () {
@@ -31,15 +34,16 @@ void shouldMergeEvaluationContextsOnBeforeHooksCorrectly() {
3134 when (hook1 .before (any (), any ())).thenReturn (Optional .of (evaluationContextWithValue ("bla" , "blubber" )));
3235 when (hook2 .before (any (), any ())).thenReturn (Optional .of (evaluationContextWithValue ("foo" , "bar" )));
3336
34- HookSupport executor = new HookSupport (
37+ var hookSupportData = new HookSupportData ();
38+ hookSupportData .initialize (
3539 Arrays .asList (hook1 , hook2 ),
3640 getBaseHookContextForType (FlagValueType .STRING ),
3741 baseContext ,
3842 Collections .emptyMap ());
3943
40- executor .executeBeforeHooks ();
44+ hookSupport .executeBeforeHooks (hookSupportData );
4145
42- EvaluationContext result = executor .getEvaluationContext ();
46+ EvaluationContext result = hookSupportData .getEvaluationContext ();
4347
4448 assertThat (result .getValue ("bla" ).asString ()).isEqualTo ("blubber" );
4549 assertThat (result .getValue ("foo" ).asString ()).isEqualTo ("bar" );
@@ -52,13 +56,14 @@ void shouldMergeEvaluationContextsOnBeforeHooksCorrectly() {
5256 void shouldAlwaysCallGenericHook (FlagValueType flagValueType ) {
5357 Hook <?> genericHook = mockGenericHook ();
5458
55- HookSupport hookSupport = new HookSupport (
59+ var hookSupportData = new HookSupportData ();
60+ hookSupportData .initialize (
5661 List .of (genericHook ),
5762 getBaseHookContextForType (flagValueType ),
5863 ImmutableContext .EMPTY ,
5964 Collections .emptyMap ());
6065
61- callAllHooks (hookSupport );
66+ callAllHooks (hookSupportData );
6267
6368 verify (genericHook ).before (any (), any ());
6469 verify (genericHook ).after (any (), any (), any ());
@@ -71,22 +76,25 @@ void shouldAlwaysCallGenericHook(FlagValueType flagValueType) {
7176 @ DisplayName ("should allow hooks to store and retrieve data across stages" )
7277 void shouldPassDataAcrossStages (FlagValueType flagValueType ) {
7378 var testHook = new TestHookWithData ();
74- HookSupport hookSupport = new HookSupport (
79+ var hookSupportData = new HookSupportData ();
80+ hookSupportData .initialize (
7581 List .of (testHook ),
7682 getBaseHookContextForType (flagValueType ),
7783 ImmutableContext .EMPTY ,
7884 Collections .emptyMap ());
7985
80- hookSupport .executeBeforeHooks ();
86+ hookSupport .executeBeforeHooks (hookSupportData );
8187 assertHookData (testHook , "before" );
8288
83- hookSupport .executeAfterHooks (FlagEvaluationDetails .builder ().build ());
89+ hookSupport .executeAfterHooks (
90+ hookSupportData , FlagEvaluationDetails .builder ().build ());
8491 assertHookData (testHook , "before" , "after" );
8592
86- hookSupport .executeAfterAllHooks (FlagEvaluationDetails .builder ().build ());
93+ hookSupport .executeAfterAllHooks (
94+ hookSupportData , FlagEvaluationDetails .builder ().build ());
8795 assertHookData (testHook , "before" , "after" , "finallyAfter" );
8896
89- hookSupport .executeErrorHooks (mock (Exception .class ));
97+ hookSupport .executeErrorHooks (hookSupportData , mock (Exception .class ));
9098 assertHookData (testHook , "before" , "after" , "finallyAfter" , "error" );
9199 }
92100
@@ -97,23 +105,26 @@ void shouldIsolateDataBetweenHooks(FlagValueType flagValueType) {
97105 var testHook1 = new TestHookWithData (1 );
98106 var testHook2 = new TestHookWithData (2 );
99107
100- HookSupport hookSupport = new HookSupport (
108+ var hookSupportData = new HookSupportData ();
109+ hookSupportData .initialize (
101110 List .of (testHook1 , testHook2 ),
102111 getBaseHookContextForType (flagValueType ),
103112 ImmutableContext .EMPTY ,
104113 Collections .emptyMap ());
105114
106- callAllHooks (hookSupport );
115+ callAllHooks (hookSupportData );
107116
108117 assertHookData (testHook1 , 1 , "before" , "after" , "finallyAfter" , "error" );
109118 assertHookData (testHook2 , 2 , "before" , "after" , "finallyAfter" , "error" );
110119 }
111120
112- private static void callAllHooks (HookSupport hookSupport ) {
113- hookSupport .executeBeforeHooks ();
114- hookSupport .executeAfterHooks (FlagEvaluationDetails .builder ().build ());
115- hookSupport .executeAfterAllHooks (FlagEvaluationDetails .builder ().build ());
116- hookSupport .executeErrorHooks (mock (Exception .class ));
121+ private static void callAllHooks (HookSupportData hookSupportData ) {
122+ hookSupport .executeBeforeHooks (hookSupportData );
123+ hookSupport .executeAfterHooks (
124+ hookSupportData , FlagEvaluationDetails .builder ().build ());
125+ hookSupport .executeAfterAllHooks (
126+ hookSupportData , FlagEvaluationDetails .builder ().build ());
127+ hookSupport .executeErrorHooks (hookSupportData , mock (Exception .class ));
117128 }
118129
119130 private static void assertHookData (TestHookWithData testHook , String ... expectedKeys ) {
0 commit comments