@@ -181,55 +181,68 @@ def _get_storage_mock(storage):
181181 ]
182182
183183 client ._logger .reset_mock ()
184- assert client .get_treatment (Key ('mathcing_key ' , None ), 'some_feature' ) == CONTROL
184+ assert client .get_treatment (Key ('matching_key ' , None ), 'some_feature' ) == CONTROL
185185 assert client ._logger .error .mock_calls == [
186186 mocker .call ('%s: you passed a null %s, %s must be a non-empty string.' , 'get_treatment' , 'bucketing_key' , 'bucketing_key' )
187187 ]
188188
189189 client ._logger .reset_mock ()
190- assert client .get_treatment (Key ('mathcing_key ' , True ), 'some_feature' ) == CONTROL
190+ assert client .get_treatment (Key ('matching_key ' , True ), 'some_feature' ) == CONTROL
191191 assert client ._logger .error .mock_calls == [
192192 mocker .call ('%s: you passed an invalid %s, %s must be a non-empty string.' , 'get_treatment' , 'bucketing_key' , 'bucketing_key' )
193193 ]
194194
195195 client ._logger .reset_mock ()
196- assert client .get_treatment (Key ('mathcing_key ' , []), 'some_feature' ) == CONTROL
196+ assert client .get_treatment (Key ('matching_key ' , []), 'some_feature' ) == CONTROL
197197 assert client ._logger .error .mock_calls == [
198198 mocker .call ('%s: you passed an invalid %s, %s must be a non-empty string.' , 'get_treatment' , 'bucketing_key' , 'bucketing_key' )
199199 ]
200200
201201 client ._logger .reset_mock ()
202- assert client .get_treatment (Key ('mathcing_key ' , '' ), 'some_feature' ) == CONTROL
202+ assert client .get_treatment (Key ('matching_key ' , '' ), 'some_feature' ) == CONTROL
203203 assert client ._logger .error .mock_calls == [
204204 mocker .call ('%s: you passed an empty %s, %s must be a non-empty string.' , 'get_treatment' , 'bucketing_key' , 'bucketing_key' )
205205 ]
206206
207207 client ._logger .reset_mock ()
208- assert client .get_treatment (Key ('mathcing_key ' , 12345 ), 'some_feature' ) == 'default_treatment'
208+ assert client .get_treatment (Key ('matching_key ' , 12345 ), 'some_feature' ) == 'default_treatment'
209209 assert client ._logger .warning .mock_calls == [
210210 mocker .call ('%s: %s %s is not of type string, converting.' , 'get_treatment' , 'bucketing_key' , 12345 )
211211 ]
212212
213213 client ._logger .reset_mock ()
214- assert client .get_treatment ('mathcing_key ' , 'some_feature' , True ) == CONTROL
214+ assert client .get_treatment ('matching_key ' , 'some_feature' , True ) == CONTROL
215215 assert client ._logger .error .mock_calls == [
216216 mocker .call ('%s: attributes must be of type dictionary.' , 'get_treatment' )
217217 ]
218218
219219 client ._logger .reset_mock ()
220- assert client .get_treatment ('mathcing_key ' , 'some_feature' , {'test' : 'test' }) == 'default_treatment'
220+ assert client .get_treatment ('matching_key ' , 'some_feature' , {'test' : 'test' }) == 'default_treatment'
221221 assert client ._logger .error .mock_calls == []
222222
223223 client ._logger .reset_mock ()
224- assert client .get_treatment ('mathcing_key ' , 'some_feature' , None ) == 'default_treatment'
224+ assert client .get_treatment ('matching_key ' , 'some_feature' , None ) == 'default_treatment'
225225 assert client ._logger .error .mock_calls == []
226226
227227 client ._logger .reset_mock ()
228- assert client .get_treatment ('mathcing_key ' , ' some_feature ' , None ) == 'default_treatment'
228+ assert client .get_treatment ('matching_key ' , ' some_feature ' , None ) == 'default_treatment'
229229 assert client ._logger .warning .mock_calls == [
230230 mocker .call ('%s: feature_name \' %s\' has extra whitespace, trimming.' , 'get_treatment' , ' some_feature ' )
231231 ]
232232
233+ client ._logger .reset_mock ()
234+ storage_mock .get .return_value = None
235+ assert client .get_treatment ('matching_key' , 'some_feature' , None ) == CONTROL
236+ assert client ._logger .error .mock_calls == [
237+ mocker .call (
238+ "%s: you passed \" %s\" that does not exist in this environment, "
239+ "please double check what Splits exist in the web console." ,
240+ 'get_treatment' ,
241+ 'some_feature'
242+ )
243+ ]
244+
245+
233246 def test_get_treatment_with_config (self , mocker ):
234247 """Test get_treatment validation."""
235248 split_mock = mocker .Mock (spec = Split )
@@ -396,55 +409,67 @@ def _get_storage_mock(storage):
396409 ]
397410
398411 client ._logger .reset_mock ()
399- assert client .get_treatment_with_config (Key ('mathcing_key ' , None ), 'some_feature' ) == (CONTROL , None )
412+ assert client .get_treatment_with_config (Key ('matching_key ' , None ), 'some_feature' ) == (CONTROL , None )
400413 assert client ._logger .error .mock_calls == [
401414 mocker .call ('%s: you passed a null %s, %s must be a non-empty string.' , 'get_treatment_with_config' , 'bucketing_key' , 'bucketing_key' )
402415 ]
403416
404417 client ._logger .reset_mock ()
405- assert client .get_treatment_with_config (Key ('mathcing_key ' , True ), 'some_feature' ) == (CONTROL , None )
418+ assert client .get_treatment_with_config (Key ('matching_key ' , True ), 'some_feature' ) == (CONTROL , None )
406419 assert client ._logger .error .mock_calls == [
407420 mocker .call ('%s: you passed an invalid %s, %s must be a non-empty string.' , 'get_treatment_with_config' , 'bucketing_key' , 'bucketing_key' )
408421 ]
409422
410423 client ._logger .reset_mock ()
411- assert client .get_treatment_with_config (Key ('mathcing_key ' , []), 'some_feature' ) == (CONTROL , None )
424+ assert client .get_treatment_with_config (Key ('matching_key ' , []), 'some_feature' ) == (CONTROL , None )
412425 assert client ._logger .error .mock_calls == [
413426 mocker .call ('%s: you passed an invalid %s, %s must be a non-empty string.' , 'get_treatment_with_config' , 'bucketing_key' , 'bucketing_key' )
414427 ]
415428
416429 client ._logger .reset_mock ()
417- assert client .get_treatment_with_config (Key ('mathcing_key ' , '' ), 'some_feature' ) == (CONTROL , None )
430+ assert client .get_treatment_with_config (Key ('matching_key ' , '' ), 'some_feature' ) == (CONTROL , None )
418431 assert client ._logger .error .mock_calls == [
419432 mocker .call ('%s: you passed an empty %s, %s must be a non-empty string.' , 'get_treatment_with_config' , 'bucketing_key' , 'bucketing_key' )
420433 ]
421434
422435 client ._logger .reset_mock ()
423- assert client .get_treatment_with_config (Key ('mathcing_key ' , 12345 ), 'some_feature' ) == ('default_treatment' , '{"some": "property"}' )
436+ assert client .get_treatment_with_config (Key ('matching_key ' , 12345 ), 'some_feature' ) == ('default_treatment' , '{"some": "property"}' )
424437 assert client ._logger .warning .mock_calls == [
425438 mocker .call ('%s: %s %s is not of type string, converting.' , 'get_treatment_with_config' , 'bucketing_key' , 12345 )
426439 ]
427440
428441 client ._logger .reset_mock ()
429- assert client .get_treatment_with_config ('mathcing_key ' , 'some_feature' , True ) == (CONTROL , None )
442+ assert client .get_treatment_with_config ('matching_key ' , 'some_feature' , True ) == (CONTROL , None )
430443 assert client ._logger .error .mock_calls == [
431444 mocker .call ('%s: attributes must be of type dictionary.' , 'get_treatment_with_config' )
432445 ]
433446
434447 client ._logger .reset_mock ()
435- assert client .get_treatment_with_config ('mathcing_key ' , 'some_feature' , {'test' : 'test' }) == ('default_treatment' , '{"some": "property"}' )
448+ assert client .get_treatment_with_config ('matching_key ' , 'some_feature' , {'test' : 'test' }) == ('default_treatment' , '{"some": "property"}' )
436449 assert client ._logger .error .mock_calls == []
437450
438451 client ._logger .reset_mock ()
439- assert client .get_treatment_with_config ('mathcing_key ' , 'some_feature' , None ) == ('default_treatment' , '{"some": "property"}' )
452+ assert client .get_treatment_with_config ('matching_key ' , 'some_feature' , None ) == ('default_treatment' , '{"some": "property"}' )
440453 assert client ._logger .error .mock_calls == []
441454
442455 client ._logger .reset_mock ()
443- assert client .get_treatment_with_config ('mathcing_key ' , ' some_feature ' , None ) == ('default_treatment' , '{"some": "property"}' )
456+ assert client .get_treatment_with_config ('matching_key ' , ' some_feature ' , None ) == ('default_treatment' , '{"some": "property"}' )
444457 assert client ._logger .warning .mock_calls == [
445458 mocker .call ('%s: feature_name \' %s\' has extra whitespace, trimming.' , 'get_treatment_with_config' , ' some_feature ' )
446459 ]
447460
461+ client ._logger .reset_mock ()
462+ storage_mock .get .return_value = None
463+ assert client .get_treatment_with_config ('matching_key' , 'some_feature' , None ) == (CONTROL , None )
464+ assert client ._logger .error .mock_calls == [
465+ mocker .call (
466+ "%s: you passed \" %s\" that does not exist in this environment, "
467+ "please double check what Splits exist in the web console." ,
468+ 'get_treatment_with_config' ,
469+ 'some_feature'
470+ )
471+ ]
472+
448473 def test_track (self , mocker ):
449474 """Test track method()."""
450475 events_storage_mock = mocker .Mock (spec = EventStorage )
@@ -660,8 +685,16 @@ def test_get_treatments(self, mocker):
660685 storage_mock = mocker .Mock (spec = SplitStorage )
661686 storage_mock .get .return_value = split_mock
662687
688+ def _get_storage_mock (storage ):
689+ return {
690+ 'splits' : storage_mock ,
691+ 'segments' : mocker .Mock (spec = SegmentStorage ),
692+ 'impressions' : mocker .Mock (spec = ImpressionStorage ),
693+ 'events' : mocker .Mock (spec = EventStorage ),
694+ 'telemetry' : mocker .Mock (spec = TelemetryStorage )
695+ }[storage ]
663696 factory_mock = mocker .Mock (spec = SplitFactory )
664- factory_mock ._get_storage .return_value = storage_mock
697+ factory_mock ._get_storage .side_effect = _get_storage_mock
665698 factory_destroyed = mocker .PropertyMock ()
666699 factory_destroyed .return_value = False
667700 type(factory_mock ).destroyed = factory_destroyed
@@ -750,6 +783,21 @@ def test_get_treatments(self, mocker):
750783 mocker .call ('%s: feature_name \' %s\' has extra whitespace, trimming.' , 'get_treatments' , 'some ' )
751784 ]
752785
786+ client ._logger .reset_mock ()
787+ storage_mock .get .return_value = None
788+ ready_mock = mocker .PropertyMock ()
789+ ready_mock .return_value = True
790+ type(factory_mock ).ready = ready_mock
791+ assert client .get_treatments ('matching_key' , ['some_feature' ], None ) == {'some_feature' : CONTROL }
792+ assert client ._logger .error .mock_calls == [
793+ mocker .call (
794+ "%s: you passed \" %s\" that does not exist in this environment, "
795+ "please double check what Splits exist in the web console." ,
796+ 'get_treatments' ,
797+ 'some_feature'
798+ )
799+ ]
800+
753801 def test_get_treatments_with_config (self , mocker ):
754802 """Test getTreatments() method."""
755803 split_mock = mocker .Mock (spec = Split )
@@ -856,6 +904,22 @@ def _configs(treatment):
856904 mocker .call ('%s: feature_name \' %s\' has extra whitespace, trimming.' , 'get_treatments_with_config' , 'some_feature ' )
857905 ]
858906
907+ client ._logger .reset_mock ()
908+ storage_mock .get .return_value = None
909+ ready_mock = mocker .PropertyMock ()
910+ ready_mock .return_value = True
911+ type(factory_mock ).ready = ready_mock
912+ assert client .get_treatments ('matching_key' , ['some_feature' ], None ) == {'some_feature' : CONTROL }
913+ assert client ._logger .error .mock_calls == [
914+ mocker .call (
915+ "%s: you passed \" %s\" that does not exist in this environment, "
916+ "please double check what Splits exist in the web console." ,
917+ 'get_treatments' ,
918+ 'some_feature'
919+ )
920+ ]
921+
922+
859923
860924class ManagerInputValidationTests (object ): #pylint: disable=too-few-public-methods
861925 """Manager input validation test cases."""
0 commit comments