|
19 | 19 | import static org.mockito.Mockito.mock; |
20 | 20 | import static org.mockito.Mockito.times; |
21 | 21 | import static org.mockito.Mockito.verify; |
| 22 | +import static org.mockito.Mockito.when; |
22 | 23 |
|
23 | 24 | import dev.openfeature.contrib.providers.flagd.Config; |
24 | 25 | import dev.openfeature.contrib.providers.flagd.FlagdOptions; |
|
27 | 28 | import dev.openfeature.contrib.providers.flagd.resolver.process.storage.StorageStateChange; |
28 | 29 | import dev.openfeature.contrib.providers.flagd.resolver.process.storage.connector.file.FileQueueSource; |
29 | 30 | import dev.openfeature.contrib.providers.flagd.resolver.process.storage.connector.sync.SyncStreamQueueSource; |
| 31 | +import dev.openfeature.contrib.tools.flagd.api.Evaluator; |
| 32 | +import dev.openfeature.contrib.tools.flagd.core.FlagdCore; |
30 | 33 | import dev.openfeature.contrib.tools.flagd.core.model.FeatureFlag; |
31 | 34 | import dev.openfeature.sdk.ErrorCode; |
32 | 35 | import dev.openfeature.sdk.ImmutableContext; |
|
57 | 60 | import org.junit.jupiter.api.AfterEach; |
58 | 61 | import org.junit.jupiter.api.Assertions; |
59 | 62 | import org.junit.jupiter.api.Test; |
| 63 | +import org.mockito.Mockito; |
60 | 64 |
|
61 | 65 | class InProcessResolverTest { |
62 | 66 | private final List<InProcessResolver> resolversToShutdown = new ArrayList<>(); |
@@ -551,6 +555,27 @@ void testStateWatcherThreadIsCleanedUpDuringShutdown() throws Exception { |
551 | 555 | // background threads can affect the count, making such assertions flaky in CI. |
552 | 556 | } |
553 | 557 |
|
| 558 | + @Test |
| 559 | + void usesSuppliedEvaluator() { |
| 560 | + var evaluator = Mockito.mock(Evaluator.class); |
| 561 | + var key = "key"; |
| 562 | + var ctx = new ImmutableContext(key); |
| 563 | + when(evaluator.resolveBooleanValue(key, false, ctx)).thenReturn(Mockito.mock(ProviderEvaluation.class)); |
| 564 | + var resolver = new InProcessResolver( |
| 565 | + FlagdOptions.builder().evaluator(evaluator).build(), (event, details, metadata) -> {}); |
| 566 | + |
| 567 | + resolver.booleanEvaluation(key, false, ctx); |
| 568 | + Mockito.verify(evaluator).resolveBooleanValue(key, false, ctx); |
| 569 | + assertThat(resolver.getEvaluator()).isEqualTo(evaluator); |
| 570 | + } |
| 571 | + |
| 572 | + @Test |
| 573 | + void usesFlagdCoreEvaluatorWhenNotSupplied() { |
| 574 | + var resolver = new InProcessResolver(FlagdOptions.builder().build(), (event, details, metadata) -> {}); |
| 575 | + |
| 576 | + assertThat(resolver.getEvaluator()).isInstanceOf(FlagdCore.class); |
| 577 | + } |
| 578 | + |
554 | 579 | private long currentDaemonThreadCount() { |
555 | 580 | return Thread.getAllStackTraces().keySet().stream() |
556 | 581 | .filter(Thread::isDaemon) |
|
0 commit comments