forked from open-feature/java-sdk
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHookContextTest.java
More file actions
80 lines (66 loc) · 2.9 KB
/
Copy pathHookContextTest.java
File metadata and controls
80 lines (66 loc) · 2.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package dev.openfeature.sdk;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.mock;
import org.junit.jupiter.api.Test;
class HookContextTest {
@Specification(
number = "4.2.2.2",
text = "Condition: The client metadata field in the hook context MUST be immutable.")
@Specification(
number = "4.2.2.3",
text = "Condition: The provider metadata field in the hook context MUST be immutable.")
@Test
void metadata_field_is_type_metadata() {
ClientMetadata clientMetadata = mock(ClientMetadata.class);
Metadata meta = mock(Metadata.class);
HookContext<Object> hc =
HookContext.from("key", FlagValueType.BOOLEAN, clientMetadata, meta, new ImmutableContext(), false);
assertTrue(ClientMetadata.class.isAssignableFrom(hc.getClientMetadata().getClass()));
assertTrue(Metadata.class.isAssignableFrom(hc.getProviderMetadata().getClass()));
}
@Specification(
number = "4.3.3.1",
text =
"The before stage MUST run before flag resolution occurs. It accepts a hook context (required) and hook hints (optional) as parameters. It has no return value.")
@Test
void not_applicable_for_dynamic_context() {}
@Test
void shouldCreateHookContextWithHookData() {
HookData hookData = HookData.create();
hookData.set("test", "value");
HookContext<String> context = HookContext.<String>builder()
.flagKey("test-flag")
.type(FlagValueType.STRING)
.defaultValue("default")
.ctx(new ImmutableContext())
.hookData(hookData)
.build();
assertNotNull(context.getHookData());
assertEquals("value", context.getHookData().get("test"));
}
@Test
void shouldCreateHookContextWithoutHookData() {
HookContext<String> context = HookContext.<String>builder()
.flagKey("test-flag")
.type(FlagValueType.STRING)
.defaultValue("default")
.ctx(new ImmutableContext())
.build();
assertNull(context.getHookData());
}
@Test
void shouldCreateHookContextWithHookDataUsingWith() {
HookContext<String> originalContext = HookContext.<String>builder()
.flagKey("test-flag")
.type(FlagValueType.STRING)
.defaultValue("default")
.ctx(new ImmutableContext())
.build();
HookData hookData = HookData.create();
hookData.set("timing", System.currentTimeMillis());
HookContext<String> contextWithHookData = originalContext.withHookData(hookData);
assertNull(originalContext.getHookData());
assertNotNull(contextWithHookData.getHookData());
assertNotNull(contextWithHookData.getHookData().get("timing"));
}
}