|
12 | 12 | get_provider_metadata,
|
13 | 13 | set_evaluation_context,
|
14 | 14 | set_provider,
|
| 15 | + shutdown, |
15 | 16 | )
|
16 | 17 | from openfeature.evaluation_context import EvaluationContext
|
17 | 18 | from openfeature.exception import ErrorCode, GeneralError
|
18 | 19 | from openfeature.hook import Hook
|
19 | 20 | from openfeature.provider.metadata import Metadata
|
20 | 21 | from openfeature.provider.no_op_provider import NoOpProvider
|
| 22 | +from openfeature.provider.provider import AbstractProvider |
21 | 23 |
|
22 | 24 |
|
23 | 25 | def test_should_not_raise_exception_with_noop_client():
|
@@ -56,6 +58,32 @@ def test_should_try_set_provider_and_fail_if_none_provided():
|
56 | 58 | assert ge.value.error_code == ErrorCode.GENERAL
|
57 | 59 |
|
58 | 60 |
|
| 61 | +def test_should_invoke_provider_initialize_function_on_newly_registered_provider(): |
| 62 | + # Given |
| 63 | + evaluation_context = EvaluationContext("targeting_key", {"attr1": "val1"}) |
| 64 | + provider = MagicMock(spec=AbstractProvider) |
| 65 | + |
| 66 | + # When |
| 67 | + set_evaluation_context(evaluation_context) |
| 68 | + set_provider(provider) |
| 69 | + |
| 70 | + # Then |
| 71 | + provider.initialize.assert_called_with(evaluation_context) |
| 72 | + |
| 73 | + |
| 74 | +def test_should_invoke_provider_shutdown_function_once_provider_is_no_longer_in_use(): |
| 75 | + # Given |
| 76 | + provider_1 = MagicMock(spec=AbstractProvider) |
| 77 | + provider_2 = MagicMock(spec=AbstractProvider) |
| 78 | + |
| 79 | + # When |
| 80 | + set_provider(provider_1) |
| 81 | + set_provider(provider_2) |
| 82 | + |
| 83 | + # Then |
| 84 | + assert provider_1.shutdown.called |
| 85 | + |
| 86 | + |
59 | 87 | def test_should_return_a_provider_if_setup_correctly():
|
60 | 88 | # Given
|
61 | 89 | set_provider(NoOpProvider())
|
@@ -116,3 +144,15 @@ def test_should_add_hooks_to_api_hooks():
|
116 | 144 |
|
117 | 145 | # Then
|
118 | 146 | assert get_hooks() == [hook_1, hook_2]
|
| 147 | + |
| 148 | + |
| 149 | +def test_should_call_provider_shutdown_on_api_shutdown(): |
| 150 | + # Given |
| 151 | + provider = MagicMock(spec=AbstractProvider) |
| 152 | + set_provider(provider) |
| 153 | + |
| 154 | + # When |
| 155 | + shutdown() |
| 156 | + |
| 157 | + # Then |
| 158 | + assert provider.shutdown.called |
0 commit comments