@@ -1349,79 +1349,93 @@ describe('Amplitude', function() {
13491349 assert . equal ( events [ 0 ] . user_properties . referring_domain , undefined ) ;
13501350 } ) ;
13511351
1352- it ( 'should send referrer data when the includeReferrer flag is true' , function ( ) {
1352+ it ( 'should only send referrer via identify call when the includeReferrer flag is true' , function ( ) {
13531353 reset ( ) ;
1354- amplitude . init ( apiKey , undefined , { includeReferrer : true } ) ;
1355-
1354+ amplitude . init ( apiKey , undefined , { includeReferrer : true , batchEvents : true , eventUploadThreshold : 2 } ) ;
13561355 amplitude . logEvent ( 'Referrer Test Event' , { } ) ;
13571356 assert . lengthOf ( server . requests , 1 ) ;
13581357 var events = JSON . parse ( querystring . parse ( server . requests [ 0 ] . requestBody ) . e ) ;
1359- assert . deepEqual ( events [ 0 ] . user_properties , {
1360- initial_referrer : 'https://amplitude.com/contact' ,
1361- initial_referring_domain : 'amplitude.com' ,
1362- referrer : 'https://amplitude.com/contact' ,
1363- referring_domain : 'amplitude.com'
1364- } ) ;
1365- } ) ;
1366-
1367- it ( 'should add referrer data to the user properties on events only' , function ( ) {
1368- reset ( ) ;
1369- amplitude . init ( apiKey , undefined , { includeReferrer : true } ) ;
1358+ assert . lengthOf ( events , 2 ) ;
13701359
1371- amplitude . setUserProperties ( { user_prop : true } ) ;
1372- assert . lengthOf ( server . requests , 1 ) ;
1373- var events = JSON . parse ( querystring . parse ( server . requests [ 0 ] . requestBody ) . e ) ;
1360+ // first event should be identify with initial_referrer and referrer
1361+ assert . equal ( events [ 0 ] . event_type , '$identify' ) ;
13741362 assert . deepEqual ( events [ 0 ] . user_properties , {
1375- $set : {
1376- 'user_prop' : true
1363+ '$set' : {
1364+ 'referrer' : 'https://amplitude.com/contact' ,
1365+ 'referring_domain' : 'amplitude.com'
1366+ } ,
1367+ '$setOnce' : {
1368+ 'initial_referrer' : 'https://amplitude.com/contact' ,
1369+ 'initial_referring_domain' : 'amplitude.com'
13771370 }
13781371 } ) ;
1379- server . respondWith ( 'success' ) ;
1380- server . respond ( ) ;
13811372
1382- amplitude . logEvent ( 'Referrer test event' ) ;
1383- assert . lengthOf ( server . requests , 2 ) ;
1384- var events = JSON . parse ( querystring . parse ( server . requests [ 1 ] . requestBody ) . e ) ;
1385- assert . deepEqual ( events [ 0 ] . user_properties , {
1386- initial_referrer : 'https://amplitude.com/contact' ,
1387- initial_referring_domain : 'amplitude.com' ,
1388- referrer : 'https://amplitude.com/contact' ,
1389- referring_domain : 'amplitude.com'
1390- } ) ;
1373+ // second event should be the test event with no referrer information
1374+ assert . equal ( events [ 1 ] . event_type , 'Referrer Test Event' ) ;
1375+ assert . deepEqual ( events [ 1 ] . user_properties , { } ) ;
1376+
1377+ // referrer should be propagated to session storage
1378+ assert . equal ( sessionStorage . getItem ( 'amplitude_referrer' ) , 'https://amplitude.com/contact' ) ;
13911379 } ) ;
13921380
1393- it ( 'should grab initial referrer data from session storage' , function ( ) {
1381+ it ( 'should not set referrer if referrer data already in session storage' , function ( ) {
13941382 reset ( ) ;
1395- sessionStorage . setItem ( 'amplitude_initialReferrer' , 'https://www.google.com/search?' ) ;
1396- amplitude . init ( apiKey , undefined , { includeReferrer : true } ) ;
1397-
1383+ sessionStorage . setItem ( 'amplitude_referrer' , 'https://www.google.com/search?' ) ;
1384+ amplitude . init ( apiKey , undefined , { includeReferrer : true , batchEvents : true , eventUploadThreshold : 2 } ) ;
13981385 amplitude . logEvent ( 'Referrer Test Event' , { } ) ;
13991386 assert . lengthOf ( server . requests , 1 ) ;
14001387 var events = JSON . parse ( querystring . parse ( server . requests [ 0 ] . requestBody ) . e ) ;
1388+ assert . lengthOf ( events , 2 ) ;
1389+
1390+ // first event should be identify with initial_referrer and NO referrer
1391+ assert . equal ( events [ 0 ] . event_type , '$identify' ) ;
14011392 assert . deepEqual ( events [ 0 ] . user_properties , {
1402- initial_referrer : 'https://www.google.com/search?' ,
1403- initial_referring_domain : 'www.google. com' ,
1404- referrer : 'https:// amplitude.com/contact' ,
1405- referring_domain : 'amplitude.com'
1393+ '$setOnce' : {
1394+ 'initial_referrer' : 'https://amplitude. com/contact ' ,
1395+ 'initial_referring_domain' : ' amplitude.com'
1396+ }
14061397 } ) ;
1398+
1399+ // second event should be the test event with no referrer information
1400+ assert . equal ( events [ 1 ] . event_type , 'Referrer Test Event' ) ;
1401+ assert . deepEqual ( events [ 1 ] . user_properties , { } ) ;
14071402 } ) ;
14081403
14091404 it ( 'should not override any existing initial referrer values in session storage' , function ( ) {
14101405 reset ( ) ;
1411- sessionStorage . setItem ( 'amplitude_initialReferrer' , 'https://www.google.com/search?' ) ;
1412- amplitude . init ( apiKey , undefined , { includeReferrer : true } ) ;
1413- amplitude . _saveInitialReferrer ( 'https://amplitude.com/contact' ) ;
1414-
1406+ sessionStorage . setItem ( 'amplitude_referrer' , 'https://www.google.com/search?' ) ;
1407+ amplitude . init ( apiKey , undefined , { includeReferrer : true , batchEvents : true , eventUploadThreshold : 3 } ) ;
1408+ amplitude . _saveReferrer ( 'https://facebook.com/contact' ) ;
14151409 amplitude . logEvent ( 'Referrer Test Event' , { } ) ;
14161410 assert . lengthOf ( server . requests , 1 ) ;
14171411 var events = JSON . parse ( querystring . parse ( server . requests [ 0 ] . requestBody ) . e ) ;
1412+ assert . lengthOf ( events , 3 ) ;
1413+
1414+ // first event should be identify with initial_referrer and NO referrer
1415+ assert . equal ( events [ 0 ] . event_type , '$identify' ) ;
14181416 assert . deepEqual ( events [ 0 ] . user_properties , {
1419- initial_referrer : 'https://www.google.com/search?' ,
1420- initial_referring_domain : 'www.google. com' ,
1421- referrer : 'https:// amplitude.com/contact' ,
1422- referring_domain : 'amplitude.com'
1417+ '$setOnce' : {
1418+ 'initial_referrer' : 'https://amplitude. com/contact ' ,
1419+ 'initial_referring_domain' : ' amplitude.com'
1420+ }
14231421 } ) ;
1424- } )
1422+
1423+ // second event should be another identify but with the new referrer
1424+ assert . equal ( events [ 1 ] . event_type , '$identify' ) ;
1425+ assert . deepEqual ( events [ 1 ] . user_properties , {
1426+ '$setOnce' : {
1427+ 'initial_referrer' : 'https://facebook.com/contact' ,
1428+ 'initial_referring_domain' : 'facebook.com'
1429+ }
1430+ } ) ;
1431+
1432+ // third event should be the test event with no referrer information
1433+ assert . equal ( events [ 2 ] . event_type , 'Referrer Test Event' ) ;
1434+ assert . deepEqual ( events [ 2 ] . user_properties , { } ) ;
1435+
1436+ // existing value persists
1437+ assert . equal ( sessionStorage . getItem ( 'amplitude_referrer' ) , 'https://www.google.com/search?' ) ;
1438+ } ) ;
14251439 } ) ;
14261440
14271441 describe ( 'logRevenue' , function ( ) {
0 commit comments