@@ -17,16 +17,20 @@ def test_should_return_in_memory_provider_metadata():
1717 assert metadata .name == "In-Memory Provider"
1818
1919
20- def test_should_handle_unknown_flags_correctly ():
20+ @pytest .mark .asyncio
21+ async def test_should_handle_unknown_flags_correctly ():
2122 # Given
2223 provider = InMemoryProvider ({})
2324 # When
2425 with pytest .raises (FlagNotFoundError ):
2526 provider .resolve_boolean_details (flag_key = "Key" , default_value = True )
27+ with pytest .raises (FlagNotFoundError ):
28+ await provider .resolve_integer_details_async (flag_key = "Key" , default_value = 1 )
2629 # Then
2730
2831
29- def test_calls_context_evaluator_if_present ():
32+ @pytest .mark .asyncio
33+ async def test_calls_context_evaluator_if_present ():
3034 # Given
3135 def context_evaluator (flag : InMemoryFlag , evaluation_context : dict ):
3236 return FlagResolutionDetails (
@@ -44,57 +48,81 @@ def context_evaluator(flag: InMemoryFlag, evaluation_context: dict):
4448 }
4549 )
4650 # When
47- flag = provider .resolve_boolean_details (flag_key = "Key" , default_value = False )
51+ flag_sync = provider .resolve_boolean_details (flag_key = "Key" , default_value = False )
52+ flag_async = await provider .resolve_boolean_details_async (
53+ flag_key = "Key" , default_value = False
54+ )
4855 # Then
49- assert flag is not None
50- assert flag .value is False
51- assert isinstance (flag .value , bool )
52- assert flag .reason == Reason .TARGETING_MATCH
56+ assert flag_sync == flag_async
57+ for flag in [flag_sync , flag_async ]:
58+ assert flag is not None
59+ assert flag .value is False
60+ assert isinstance (flag .value , bool )
61+ assert flag .reason == Reason .TARGETING_MATCH
5362
5463
55- def test_should_resolve_boolean_flag_from_in_memory ():
64+ @pytest .mark .asyncio
65+ async def test_should_resolve_boolean_flag_from_in_memory ():
5666 # Given
5767 provider = InMemoryProvider (
5868 {"Key" : InMemoryFlag ("true" , {"true" : True , "false" : False })}
5969 )
6070 # When
61- flag = provider .resolve_boolean_details (flag_key = "Key" , default_value = False )
71+ flag_sync = provider .resolve_boolean_details (flag_key = "Key" , default_value = False )
72+ flag_async = await provider .resolve_boolean_details_async (
73+ flag_key = "Key" , default_value = False
74+ )
6275 # Then
63- assert flag is not None
64- assert flag .value is True
65- assert isinstance (flag .value , bool )
66- assert flag .variant == "true"
76+ assert flag_sync == flag_async
77+ for flag in [flag_sync , flag_async ]:
78+ assert flag is not None
79+ assert flag .value is True
80+ assert isinstance (flag .value , bool )
81+ assert flag .variant == "true"
6782
6883
69- def test_should_resolve_integer_flag_from_in_memory ():
84+ @pytest .mark .asyncio
85+ async def test_should_resolve_integer_flag_from_in_memory ():
7086 # Given
7187 provider = InMemoryProvider (
7288 {"Key" : InMemoryFlag ("hundred" , {"zero" : 0 , "hundred" : 100 })}
7389 )
7490 # When
75- flag = provider .resolve_integer_details (flag_key = "Key" , default_value = 0 )
91+ flag_sync = provider .resolve_integer_details (flag_key = "Key" , default_value = 0 )
92+ flag_async = await provider .resolve_integer_details_async (
93+ flag_key = "Key" , default_value = 0
94+ )
7695 # Then
77- assert flag is not None
78- assert flag .value == 100
79- assert isinstance (flag .value , Number )
80- assert flag .variant == "hundred"
96+ assert flag_sync == flag_async
97+ for flag in [flag_sync , flag_async ]:
98+ assert flag is not None
99+ assert flag .value == 100
100+ assert isinstance (flag .value , Number )
101+ assert flag .variant == "hundred"
81102
82103
83- def test_should_resolve_float_flag_from_in_memory ():
104+ @pytest .mark .asyncio
105+ async def test_should_resolve_float_flag_from_in_memory ():
84106 # Given
85107 provider = InMemoryProvider (
86108 {"Key" : InMemoryFlag ("ten" , {"zero" : 0.0 , "ten" : 10.23 })}
87109 )
88110 # When
89- flag = provider .resolve_float_details (flag_key = "Key" , default_value = 0.0 )
111+ flag_sync = provider .resolve_float_details (flag_key = "Key" , default_value = 0.0 )
112+ flag_async = await provider .resolve_float_details_async (
113+ flag_key = "Key" , default_value = 0.0
114+ )
90115 # Then
91- assert flag is not None
92- assert flag .value == 10.23
93- assert isinstance (flag .value , Number )
94- assert flag .variant == "ten"
116+ assert flag_sync == flag_async
117+ for flag in [flag_sync , flag_async ]:
118+ assert flag is not None
119+ assert flag .value == 10.23
120+ assert isinstance (flag .value , Number )
121+ assert flag .variant == "ten"
95122
96123
97- def test_should_resolve_string_flag_from_in_memory ():
124+ @pytest .mark .asyncio
125+ async def test_should_resolve_string_flag_from_in_memory ():
98126 # Given
99127 provider = InMemoryProvider (
100128 {
@@ -105,29 +133,39 @@ def test_should_resolve_string_flag_from_in_memory():
105133 }
106134 )
107135 # When
108- flag = provider .resolve_string_details (flag_key = "Key" , default_value = "Default" )
136+ flag_sync = provider .resolve_string_details (flag_key = "Key" , default_value = "Default" )
137+ flag_async = await provider .resolve_string_details_async (
138+ flag_key = "Key" , default_value = "Default"
139+ )
109140 # Then
110- assert flag is not None
111- assert flag .value == "String"
112- assert isinstance (flag .value , str )
113- assert flag .variant == "stringVariant"
141+ assert flag_sync == flag_async
142+ for flag in [flag_sync , flag_async ]:
143+ assert flag is not None
144+ assert flag .value == "String"
145+ assert isinstance (flag .value , str )
146+ assert flag .variant == "stringVariant"
114147
115148
116- def test_should_resolve_list_flag_from_in_memory ():
149+ @pytest .mark .asyncio
150+ async def test_should_resolve_list_flag_from_in_memory ():
117151 # Given
118152 provider = InMemoryProvider (
119153 {"Key" : InMemoryFlag ("twoItems" , {"empty" : [], "twoItems" : ["item1" , "item2" ]})}
120154 )
121155 # When
122- flag = provider .resolve_object_details (flag_key = "Key" , default_value = [])
156+ flag_sync = provider .resolve_object_details (flag_key = "Key" , default_value = [])
157+ flag_async = provider .resolve_object_details (flag_key = "Key" , default_value = [])
123158 # Then
124- assert flag is not None
125- assert flag .value == ["item1" , "item2" ]
126- assert isinstance (flag .value , list )
127- assert flag .variant == "twoItems"
159+ assert flag_sync == flag_async
160+ for flag in [flag_sync , flag_async ]:
161+ assert flag is not None
162+ assert flag .value == ["item1" , "item2" ]
163+ assert isinstance (flag .value , list )
164+ assert flag .variant == "twoItems"
128165
129166
130- def test_should_resolve_object_flag_from_in_memory ():
167+ @pytest .mark .asyncio
168+ async def test_should_resolve_object_flag_from_in_memory ():
131169 # Given
132170 return_value = {
133171 "String" : "string" ,
@@ -138,9 +176,12 @@ def test_should_resolve_object_flag_from_in_memory():
138176 {"Key" : InMemoryFlag ("obj" , {"obj" : return_value , "empty" : {}})}
139177 )
140178 # When
141- flag = provider .resolve_object_details (flag_key = "Key" , default_value = {})
179+ flag_sync = provider .resolve_object_details (flag_key = "Key" , default_value = {})
180+ flag_async = provider .resolve_object_details (flag_key = "Key" , default_value = {})
142181 # Then
143- assert flag is not None
144- assert flag .value == return_value
145- assert isinstance (flag .value , dict )
146- assert flag .variant == "obj"
182+ assert flag_sync == flag_async
183+ for flag in [flag_sync , flag_async ]:
184+ assert flag is not None
185+ assert flag .value == return_value
186+ assert isinstance (flag .value , dict )
187+ assert flag .variant == "obj"
0 commit comments