@@ -357,6 +357,41 @@ def _get_storage_mock(name):
357357 assert client .destroyed is not None
358358 assert destroyed_mock .mock_calls == [mocker .call ()]
359359
360+ def test_track (self , mocker ):
361+ """Test that destroy/destroyed calls are forwarded to the factory."""
362+ split_storage = mocker .Mock (spec = SplitStorage )
363+ segment_storage = mocker .Mock (spec = SegmentStorage )
364+ impression_storage = mocker .Mock (spec = ImpressionStorage )
365+ event_storage = mocker .Mock (spec = EventStorage )
366+ event_storage .put .return_value = True
367+ telemetry_storage = mocker .Mock (spec = TelemetryStorage )
368+
369+ def _get_storage_mock (name ):
370+ return {
371+ 'splits' : split_storage ,
372+ 'segments' : segment_storage ,
373+ 'impressions' : impression_storage ,
374+ 'events' : event_storage ,
375+ 'telemetry' : telemetry_storage
376+ }[name ]
377+ factory = mocker .Mock (spec = SplitFactory )
378+ factory ._get_storage = _get_storage_mock
379+ destroyed_mock = mocker .PropertyMock ()
380+ destroyed_mock .return_value = False
381+ type(factory ).destroyed = destroyed_mock
382+ factory ._apikey = 'test'
383+ mocker .patch ('splitio.client.client.utctime_ms' , new = lambda : 1000 )
384+
385+ impmanager = mocker .Mock (spec = ImpressionManager )
386+ client = Client (factory , impmanager , True )
387+ assert client .track ('key' , 'user' , 'purchase' , 12 ) is True
388+ assert mocker .call ([
389+ EventWrapper (
390+ event = Event ('key' , 'user' , 'purchase' , 12 , 1000 , None ),
391+ size = 1024
392+ )
393+ ]) in event_storage .put .mock_calls
394+
360395 def test_evaluations_before_running_post_fork (self , mocker ):
361396 destroyed_property = mocker .PropertyMock ()
362397 destroyed_property .return_value = False
0 commit comments