@@ -405,6 +405,143 @@ describe('lib/core/event_builder', function() {
405405
406406 assert . deepEqual ( actualParams , expectedParams ) ;
407407 } ) ;
408+
409+ it ( 'should create proper params for getImpressionEvent with typed attributes' , function ( ) {
410+ var expectedParams = {
411+ url : 'https://logx.optimizely.com/v1/events' ,
412+ httpVerb : 'POST' ,
413+ params : {
414+ 'account_id' : '12001' ,
415+ 'project_id' : '111001' ,
416+ 'visitors' : [ {
417+ 'attributes' : [ {
418+ 'entity_id' : '111094' ,
419+ 'key' : 'browser_type' ,
420+ 'type' : 'custom' ,
421+ 'value' : 'Chrome'
422+ } , {
423+ 'entity_id' : '323434545' ,
424+ 'key' : 'boolean_key' ,
425+ 'type' : 'custom' ,
426+ 'value' : true
427+ } , {
428+ 'entity_id' : '616727838' ,
429+ 'key' : 'integer_key' ,
430+ 'type' : 'custom' ,
431+ 'value' : 10
432+ } , {
433+ 'entity_id' : '808797686' ,
434+ 'key' : 'double_key' ,
435+ 'type' : 'custom' ,
436+ 'value' : 3.14
437+ } ] ,
438+ 'visitor_id' : 'testUser' ,
439+ 'snapshots' : [ {
440+ 'decisions' : [ {
441+ 'variation_id' : '111128' ,
442+ 'experiment_id' : '111127' ,
443+ 'campaign_id' : '4'
444+ } ] ,
445+ 'events' : [ {
446+ 'timestamp' : Math . round ( new Date ( ) . getTime ( ) ) ,
447+ 'entity_id' : '4' ,
448+ 'uuid' : 'a68cf1ad-0393-4e18-af87-efe8f01a7c9c' ,
449+ 'key' : 'campaign_activated'
450+ } ]
451+ } ]
452+ } ] ,
453+ 'revision' : '42' ,
454+ 'client_name' : 'node-sdk' ,
455+ 'client_version' : packageJSON . version ,
456+ 'anonymize_ip' : false ,
457+ }
458+ } ;
459+
460+ var eventOptions = {
461+ attributes : {
462+ 'browser_type' : 'Chrome' ,
463+ 'boolean_key' : true ,
464+ 'integer_key' : 10 ,
465+ 'double_key' : 3.14 ,
466+ } ,
467+ clientEngine : 'node-sdk' ,
468+ clientVersion : packageJSON . version ,
469+ configObj : configObj ,
470+ experimentId : '111127' ,
471+ variationId : '111128' ,
472+ userId : 'testUser' ,
473+ } ;
474+
475+ var actualParams = eventBuilder . getImpressionEvent ( eventOptions ) ;
476+
477+ assert . deepEqual ( actualParams , expectedParams ) ;
478+ } ) ;
479+
480+ it ( 'should remove invalid params from impression event payload' , function ( ) {
481+ var expectedParams = {
482+ url : 'https://logx.optimizely.com/v1/events' ,
483+ httpVerb : 'POST' ,
484+ params : {
485+ 'account_id' : '12001' ,
486+ 'project_id' : '111001' ,
487+ 'visitors' : [ {
488+ 'attributes' : [ {
489+ 'entity_id' : '111094' ,
490+ 'key' : 'browser_type' ,
491+ 'type' : 'custom' ,
492+ 'value' : 'Chrome'
493+ } , {
494+ 'entity_id' : '616727838' ,
495+ 'key' : 'integer_key' ,
496+ 'type' : 'custom' ,
497+ 'value' : 10
498+ } , {
499+ 'entity_id' : '323434545' ,
500+ 'key' : 'boolean_key' ,
501+ 'type' : 'custom' ,
502+ 'value' : false
503+ } ] ,
504+ 'visitor_id' : 'testUser' ,
505+ 'snapshots' : [ {
506+ 'decisions' : [ {
507+ 'variation_id' : '111128' ,
508+ 'experiment_id' : '111127' ,
509+ 'campaign_id' : '4'
510+ } ] ,
511+ 'events' : [ {
512+ 'timestamp' : Math . round ( new Date ( ) . getTime ( ) ) ,
513+ 'entity_id' : '4' ,
514+ 'uuid' : 'a68cf1ad-0393-4e18-af87-efe8f01a7c9c' ,
515+ 'key' : 'campaign_activated'
516+ } ]
517+ } ]
518+ } ] ,
519+ 'revision' : '42' ,
520+ 'client_name' : 'node-sdk' ,
521+ 'client_version' : packageJSON . version ,
522+ 'anonymize_ip' : false ,
523+ }
524+ } ;
525+
526+ var eventOptions = {
527+ attributes : {
528+ 'browser_type' : 'Chrome' ,
529+ 'integer_key' : 10 ,
530+ 'boolean_key' : false ,
531+ 'double_key' : [ 1 , 2 , 3 ] ,
532+ } ,
533+ clientEngine : 'node-sdk' ,
534+ clientVersion : packageJSON . version ,
535+ configObj : configObj ,
536+ experimentId : '111127' ,
537+ variationId : '111128' ,
538+ userId : 'testUser' ,
539+ } ;
540+
541+ var actualParams = eventBuilder . getImpressionEvent ( eventOptions ) ;
542+
543+ assert . deepEqual ( actualParams , expectedParams ) ;
544+ } ) ;
408545 } ) ;
409546
410547 describe ( 'getConversionEvent' , function ( ) {
0 commit comments