@@ -48,7 +48,7 @@ def test_configurations_disable_odp(self):
4848 mock_logger .reset_mock ()
4949
5050 # these call should be dropped gracefully with None
51- manager .identify_user (' user1' )
51+ manager .identify_user ({ 'fs_user_id' : ' user1', 'email' : 'test@example.com' } )
5252
5353 manager .send_event ('t1' , 'a1' , {}, {})
5454 mock_logger .error .assert_called_once_with ('ODP is not enabled.' )
@@ -120,32 +120,44 @@ def test_fetch_qualified_segments__seg_cache_and_seg_mgr_are_none(self):
120120 mock_logger .error .assert_not_called ()
121121 mock_fetch_qualif_segments .assert_called_once_with ('fs_user_id' , 'user1' , [])
122122
123- def test_identify_user_datafile_not_ready (self ):
123+ def test_identify_user_single_identifier_skipped (self ):
124124 mock_logger = mock .MagicMock ()
125125 event_manager = OdpEventManager (OdpConfig (), mock_logger )
126126
127127 manager = OdpManager (False , OptimizelySegmentsCache , event_manager = event_manager , logger = mock_logger )
128128
129129 with mock .patch .object (event_manager , 'identify_user' ) as mock_identify_user :
130- manager .identify_user (' user1' )
130+ manager .identify_user ({ 'fs_user_id' : ' user1'} )
131131
132- mock_identify_user .assert_called_once_with ('user1' )
133- mock_logger .error .assert_not_called ()
132+ mock_identify_user .assert_not_called ()
133+ mock_logger .debug .assert_called_with ('ODP identify event is not dispatched (only one identifier provided).' )
134+
135+ def test_identify_user_empty_values_not_counted (self ):
136+ mock_logger = mock .MagicMock ()
137+ event_manager = OdpEventManager (OdpConfig (), mock_logger )
138+
139+ manager = OdpManager (False , OptimizelySegmentsCache , event_manager = event_manager , logger = mock_logger )
140+
141+ with mock .patch .object (event_manager , 'identify_user' ) as mock_identify_user :
142+ manager .identify_user ({'fs_user_id' : 'user1' , 'email' : '' , 'phone' : '' })
143+
144+ mock_identify_user .assert_not_called ()
145+ mock_logger .debug .assert_called_with ('ODP identify event is not dispatched (only one identifier provided).' )
134146
135- def test_identify_user_odp_integrated (self ):
147+ def test_identify_user_multiple_identifiers_sent (self ):
136148 mock_logger = mock .MagicMock ()
137149 event_manager = OdpEventManager (mock_logger , OdpEventApiManager ())
138150
139151 manager = OdpManager (False , LRUCache (10 , 20 ), event_manager = event_manager , logger = mock_logger )
140152 manager .update_odp_config ('key1' , 'host1' , [])
141153
142154 with mock .patch .object (event_manager , 'dispatch' ) as mock_dispatch_event :
143- manager .identify_user (' user1' )
155+ manager .identify_user ({ 'fs_user_id' : ' user1', 'email' : 'test@example.com' } )
144156
145157 mock_dispatch_event .assert_called_once_with ({
146158 'type' : 'fullstack' ,
147159 'action' : 'identified' ,
148- 'identifiers' : {'fs_user_id' : 'user1' },
160+ 'identifiers' : {'fs_user_id' : 'user1' , 'email' : 'test@example.com' },
149161 'data' : {
150162 'idempotence_id' : mock .ANY ,
151163 'data_source_type' : 'sdk' ,
@@ -162,7 +174,7 @@ def test_identify_user_odp_not_integrated(self):
162174 manager .update_odp_config (None , None , [])
163175
164176 with mock .patch .object (event_manager , 'dispatch' ) as mock_dispatch_event :
165- manager .identify_user (' user1' )
177+ manager .identify_user ({ 'fs_user_id' : ' user1', 'email' : 'test@example.com' } )
166178
167179 mock_dispatch_event .assert_not_called ()
168180 mock_logger .error .assert_not_called ()
@@ -176,7 +188,7 @@ def test_identify_user_odp_disabled(self):
176188 manager .enabled = False
177189
178190 with mock .patch .object (event_manager , 'identify_user' ) as mock_identify_user :
179- manager .identify_user (' user1' )
191+ manager .identify_user ({ 'fs_user_id' : ' user1', 'email' : 'test@example.com' } )
180192
181193 mock_identify_user .assert_not_called ()
182194 mock_logger .error .assert_not_called ()
0 commit comments