18
18
import org .junit .jupiter .params .ParameterizedTest ;
19
19
import org .junit .jupiter .params .provider .EnumSource ;
20
20
21
- class HookExecutorTest implements HookFixtures {
21
+ class HookSupportTest implements HookFixtures {
22
22
@ Test
23
23
@ DisplayName ("should merge EvaluationContexts on before hooks correctly" )
24
24
void shouldMergeEvaluationContextsOnBeforeHooksCorrectly () {
@@ -31,8 +31,11 @@ void shouldMergeEvaluationContextsOnBeforeHooksCorrectly() {
31
31
when (hook1 .before (any (), any ())).thenReturn (Optional .of (evaluationContextWithValue ("bla" , "blubber" )));
32
32
when (hook2 .before (any (), any ())).thenReturn (Optional .of (evaluationContextWithValue ("foo" , "bar" )));
33
33
34
- HookExecutor executor = HookExecutor .create (
35
- Arrays .asList (hook1 , hook2 ), getBaseHookContextForType (FlagValueType .STRING ), baseContext , Collections .emptyMap ());
34
+ HookSupport executor = new HookSupport (
35
+ Arrays .asList (hook1 , hook2 ),
36
+ getBaseHookContextForType (FlagValueType .STRING ),
37
+ baseContext ,
38
+ Collections .emptyMap ());
36
39
37
40
executor .executeBeforeHooks ();
38
41
@@ -49,9 +52,13 @@ void shouldMergeEvaluationContextsOnBeforeHooksCorrectly() {
49
52
void shouldAlwaysCallGenericHook (FlagValueType flagValueType ) {
50
53
Hook <?> genericHook = mockGenericHook ();
51
54
52
- HookExecutor hookExecutor = HookExecutor .create (List .of (genericHook ), getBaseHookContextForType (flagValueType ), ImmutableContext .EMPTY , Collections .emptyMap ());
55
+ HookSupport hookSupport = new HookSupport (
56
+ List .of (genericHook ),
57
+ getBaseHookContextForType (flagValueType ),
58
+ ImmutableContext .EMPTY ,
59
+ Collections .emptyMap ());
53
60
54
- callAllHooks (hookExecutor );
61
+ callAllHooks (hookSupport );
55
62
56
63
verify (genericHook ).before (any (), any ());
57
64
verify (genericHook ).after (any (), any (), any ());
@@ -64,18 +71,22 @@ void shouldAlwaysCallGenericHook(FlagValueType flagValueType) {
64
71
@ DisplayName ("should allow hooks to store and retrieve data across stages" )
65
72
void shouldPassDataAcrossStages (FlagValueType flagValueType ) {
66
73
var testHook = new TestHookWithData ();
67
- HookExecutor hookExecutor = HookExecutor .create (List .of (testHook ), getBaseHookContextForType (flagValueType ), ImmutableContext .EMPTY , Collections .emptyMap ());
74
+ HookSupport hookSupport = new HookSupport (
75
+ List .of (testHook ),
76
+ getBaseHookContextForType (flagValueType ),
77
+ ImmutableContext .EMPTY ,
78
+ Collections .emptyMap ());
68
79
69
- hookExecutor .executeBeforeHooks ();
80
+ hookSupport .executeBeforeHooks ();
70
81
assertHookData (testHook , "before" );
71
82
72
- hookExecutor .executeAfterHooks (FlagEvaluationDetails .builder ().build ());
83
+ hookSupport .executeAfterHooks (FlagEvaluationDetails .builder ().build ());
73
84
assertHookData (testHook , "before" , "after" );
74
85
75
- hookExecutor .executeAfterAllHooks (FlagEvaluationDetails .builder ().build ());
86
+ hookSupport .executeAfterAllHooks (FlagEvaluationDetails .builder ().build ());
76
87
assertHookData (testHook , "before" , "after" , "finallyAfter" );
77
88
78
- hookExecutor .executeErrorHooks (mock (Exception .class ));
89
+ hookSupport .executeErrorHooks (mock (Exception .class ));
79
90
assertHookData (testHook , "before" , "after" , "finallyAfter" , "error" );
80
91
}
81
92
@@ -86,48 +97,49 @@ void shouldIsolateDataBetweenHooks(FlagValueType flagValueType) {
86
97
var testHook1 = new TestHookWithData (1 );
87
98
var testHook2 = new TestHookWithData (2 );
88
99
89
- HookExecutor hookExecutor = HookExecutor .create (List .of (testHook1 , testHook2 ), getBaseHookContextForType (flagValueType ), ImmutableContext .EMPTY , Collections .emptyMap ());
100
+ HookSupport hookSupport = new HookSupport (
101
+ List .of (testHook1 , testHook2 ),
102
+ getBaseHookContextForType (flagValueType ),
103
+ ImmutableContext .EMPTY ,
104
+ Collections .emptyMap ());
90
105
91
- callAllHooks (hookExecutor );
106
+ callAllHooks (hookSupport );
92
107
93
108
assertHookData (testHook1 , 1 , "before" , "after" , "finallyAfter" , "error" );
94
109
assertHookData (testHook2 , 2 , "before" , "after" , "finallyAfter" , "error" );
95
110
}
96
111
97
- private static void callAllHooks (HookExecutor hookExecutor ) {
98
- hookExecutor .executeBeforeHooks ();
99
- hookExecutor .executeAfterHooks (FlagEvaluationDetails .builder ().build ());
100
- hookExecutor .executeAfterAllHooks (FlagEvaluationDetails .builder ().build ());
101
- hookExecutor .executeErrorHooks (mock (Exception .class ));
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 ));
102
117
}
103
118
104
- private static void assertHookData (TestHookWithData testHook , String ... expectedKeys ) {
119
+ private static void assertHookData (TestHookWithData testHook , String ... expectedKeys ) {
105
120
for (String expectedKey : expectedKeys ) {
106
121
assertThat (testHook .hookData .get (expectedKey ))
107
122
.withFailMessage ("Expected key %s not present in hook data" , expectedKey )
108
123
.isNotNull ();
109
124
}
110
125
}
111
126
112
- private static void assertHookData (TestHookWithData testHook , Object expectedValue , String ... expectedKeys ) {
127
+ private static void assertHookData (TestHookWithData testHook , Object expectedValue , String ... expectedKeys ) {
113
128
for (String expectedKey : expectedKeys ) {
114
129
assertThat (testHook .hookData .get (expectedKey ))
115
130
.withFailMessage ("Expected key '%s' not present in hook data" , expectedKey )
116
131
.isNotNull ();
117
132
assertThat (testHook .hookData .get (expectedKey ))
118
- .withFailMessage ("Expected key '%s' not containing expected value. Expected '%s' but found '%s'" ,
133
+ .withFailMessage (
134
+ "Expected key '%s' not containing expected value. Expected '%s' but found '%s'" ,
119
135
expectedKey , expectedValue , testHook .hookData .get (expectedKey ))
120
136
.isEqualTo (expectedValue );
121
137
}
122
138
}
123
139
124
140
private SharedHookContext getBaseHookContextForType (FlagValueType flagValueType ) {
125
141
return new SharedHookContext <>(
126
- "flagKey" ,
127
- flagValueType ,
128
- () -> "client" ,
129
- () -> "provider" ,
130
- createDefaultValue (flagValueType ));
142
+ "flagKey" , flagValueType , () -> "client" , () -> "provider" , createDefaultValue (flagValueType ));
131
143
}
132
144
133
145
private Object createDefaultValue (FlagValueType flagValueType ) {
0 commit comments