|
218 | 218 | end |
219 | 219 |
|
220 | 220 | describe '#identify_user' do |
221 | | - it 'should send event' do |
| 221 | + it 'should send event when multiple identifiers provided' do |
| 222 | + allow(SecureRandom).to receive(:uuid).and_return(test_uuid) |
| 223 | + event_manager = Optimizely::OdpEventManager.new |
| 224 | + identifiers = {user_key => user_value, 'email' => 'test@example.com'} |
| 225 | + event = Optimizely::OdpEvent.new(type: 'fullstack', action: 'identified', identifiers: identifiers, data: {}) |
| 226 | + expect(spy_logger).not_to receive(:log).with(Logger::ERROR, anything) |
| 227 | + |
| 228 | + expect(event_manager.api_manager) |
| 229 | + .to receive(:send_odp_events) |
| 230 | + .once |
| 231 | + .with(api_key, api_host, [event]) |
| 232 | + .and_return(false) |
| 233 | + |
| 234 | + manager = Optimizely::OdpManager.new(disable: false, event_manager: event_manager, logger: spy_logger) |
| 235 | + manager.update_odp_config(api_key, api_host, segments_to_check) |
| 236 | + |
| 237 | + manager.identify_user(identifiers: identifiers) |
| 238 | + |
| 239 | + manager.stop! |
| 240 | + end |
| 241 | + |
| 242 | + it 'should not send event when only one identifier provided' do |
| 243 | + expect(spy_logger).to receive(:log).with(Logger::DEBUG, 'ODP identify event is not dispatched (only one identifier provided).') |
| 244 | + |
| 245 | + manager = Optimizely::OdpManager.new(disable: false, logger: spy_logger) |
| 246 | + manager.update_odp_config(api_key, api_host, segments_to_check) |
| 247 | + manager.identify_user(identifiers: {user_key => user_value}) |
| 248 | + |
| 249 | + manager.stop! |
| 250 | + end |
| 251 | + |
| 252 | + it 'should not count empty or nil identifier values' do |
| 253 | + expect(spy_logger).to receive(:log).with(Logger::DEBUG, 'ODP identify event is not dispatched (only one identifier provided).') |
| 254 | + |
| 255 | + manager = Optimizely::OdpManager.new(disable: false, logger: spy_logger) |
| 256 | + manager.update_odp_config(api_key, api_host, segments_to_check) |
| 257 | + manager.identify_user(identifiers: {user_key => user_value, 'email' => '', 'phone' => nil}) |
| 258 | + |
| 259 | + manager.stop! |
| 260 | + end |
| 261 | + |
| 262 | + it 'should send event with all valid identifiers when some are empty' do |
222 | 263 | allow(SecureRandom).to receive(:uuid).and_return(test_uuid) |
223 | 264 | event_manager = Optimizely::OdpEventManager.new |
224 | | - event = Optimizely::OdpEvent.new(type: 'fullstack', action: 'identified', identifiers: {user_key => user_value}, data: {}) |
| 265 | + valid_identifiers = {user_key => user_value, 'email' => 'test@example.com'} |
| 266 | + event = Optimizely::OdpEvent.new(type: 'fullstack', action: 'identified', identifiers: valid_identifiers, data: {}) |
225 | 267 | expect(spy_logger).not_to receive(:log).with(Logger::ERROR, anything) |
226 | 268 |
|
227 | 269 | expect(event_manager.api_manager) |
|
233 | 275 | manager = Optimizely::OdpManager.new(disable: false, event_manager: event_manager, logger: spy_logger) |
234 | 276 | manager.update_odp_config(api_key, api_host, segments_to_check) |
235 | 277 |
|
236 | | - manager.identify_user(user_id: user_value) |
| 278 | + manager.identify_user(identifiers: {user_key => user_value, 'email' => 'test@example.com', 'phone' => ''}) |
237 | 279 |
|
238 | 280 | manager.stop! |
239 | 281 | end |
|
243 | 285 | expect(spy_logger).to receive(:log).with(Logger::DEBUG, 'ODP identify event is not dispatched (ODP disabled).') |
244 | 286 |
|
245 | 287 | manager = Optimizely::OdpManager.new(disable: true, logger: spy_logger) |
246 | | - manager.identify_user(user_id: user_value) |
| 288 | + manager.identify_user(identifiers: {user_key => user_value, 'email' => 'test@example.com'}) |
247 | 289 |
|
248 | 290 | manager.stop! |
249 | 291 | end |
|
253 | 295 | expect(spy_logger).to receive(:log).with(Logger::DEBUG, 'ODP identify event is not dispatched (ODP not integrated).') |
254 | 296 | manager = Optimizely::OdpManager.new(disable: false, logger: spy_logger) |
255 | 297 | manager.update_odp_config(nil, nil, []) |
256 | | - manager.identify_user(user_id: user_value) |
| 298 | + manager.identify_user(identifiers: {user_key => user_value, 'email' => 'test@example.com'}) |
257 | 299 |
|
258 | 300 | manager.stop! |
259 | 301 | end |
|
263 | 305 | expect(spy_logger).to receive(:log).with(Logger::DEBUG, 'ODP identify event is not dispatched (datafile not ready).') |
264 | 306 |
|
265 | 307 | manager = Optimizely::OdpManager.new(disable: false, logger: spy_logger) |
266 | | - manager.identify_user(user_id: user_value) |
| 308 | + manager.identify_user(identifiers: {user_key => user_value, 'email' => 'test@example.com'}) |
267 | 309 |
|
268 | 310 | manager.stop! |
269 | 311 | end |
|
0 commit comments