2828 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2929 */
3030
31+ import { TrackerConfiguration } from '../../dist/index.module' ;
3132import { addTracker , SharedState } from '../../src' ;
3233import { createTestIdCookie , createTestSessionIdCookie } from '../helpers' ;
3334
@@ -54,45 +55,45 @@ describe('Tracker API: ', () => {
5455 } ) ;
5556
5657 it ( 'Sets initial domain session index on first session' , ( ) => {
57- const tracker = addTracker ( 'sp1' , 'sp1' , '' , '' , new SharedState ( ) ) ;
58+ const tracker = createTracker ( ) ;
5859
5960 expect ( tracker ?. getDomainSessionIndex ( ) ) . toEqual ( 1 ) ;
6061 } ) ;
6162
6263 it ( 'Sets correct domain session index on new session' , ( ) => {
6364 const initialSessionIndex = 1 ;
6465 document . cookie = createTestIdCookie ( { visitCount : initialSessionIndex } ) ;
65- const tracker = addTracker ( 'sp2' , 'sp2' , '' , '' , new SharedState ( ) ) ;
66+ const tracker = createTracker ( ) ;
6667
6768 expect ( tracker ?. getDomainSessionIndex ( ) ) . toEqual ( initialSessionIndex + 1 ) ;
6869 } ) ;
6970
7071 it ( 'Sets correct domain session index on existing session' , ( ) => {
7172 const initialSessionIndex = 2 ;
7273 document . cookie = createTestIdCookie ( { visitCount : initialSessionIndex } ) + ' ' + createTestSessionIdCookie ( ) ;
73- const tracker = addTracker ( 'sp3' , 'sp3' , '' , '' , new SharedState ( ) ) ;
74+ const tracker = createTracker ( ) ;
7475
7576 expect ( tracker ?. getDomainSessionIndex ( ) ) . toEqual ( initialSessionIndex ) ;
7677 } ) ;
7778
7879 it ( 'Sets correct domain session index (1) after clearUserData() on existing session' , ( ) => {
7980 const initialSessionIndex = 2 ;
8081 document . cookie = createTestIdCookie ( { visitCount : initialSessionIndex } ) + ' ' + createTestSessionIdCookie ( ) ;
81- const tracker = addTracker ( 'sp4' , 'sp4' , '' , '' , new SharedState ( ) ) ;
82+ const tracker = createTracker ( ) ;
8283 expect ( tracker ?. getDomainSessionIndex ( ) ) . toEqual ( initialSessionIndex ) ;
8384
8485 tracker ?. clearUserData ( ) ;
8586 expect ( tracker ?. getDomainSessionIndex ( ) ) . toEqual ( 1 ) ;
8687 } ) ;
8788
8889 it ( 'Sets correct domain session index anonymous track' , ( ) => {
89- const tracker = addTracker ( 'sp5' , 'sp5' , '' , '' , new SharedState ( ) , { anonymousTracking : true } ) ;
90+ const tracker = createTracker ( { anonymousTracking : true } ) ;
9091 expect ( tracker ?. getDomainSessionIndex ( ) ) . toEqual ( 1 ) ;
9192 } ) ;
9293
9394 it ( 'Retains correct domain session index on opt-out cookie present' , ( ) => {
9495 const optOutCookieName = 'optOut' ;
95- const tracker = addTracker ( 'sp6' , 'sp6' , '' , '' , new SharedState ( ) ) ;
96+ const tracker = createTracker ( ) ;
9697 tracker ?. setOptOutCookie ( optOutCookieName ) ;
9798 document . cookie = `${ optOutCookieName } =1;` ;
9899
@@ -102,10 +103,73 @@ describe('Tracker API: ', () => {
102103
103104 it ( 'Sets correct domain session index after session expiration' , ( ) => {
104105 // Session timeout is in seconds
105- const tracker = addTracker ( 'sp7' , 'sp7' , '' , '' , new SharedState ( ) , { sessionCookieTimeout : 1 } ) ;
106+ const tracker = createTracker ( { sessionCookieTimeout : 1 } ) ;
106107 // Advance timer by more than one second
107108 jest . advanceTimersByTime ( 1001 ) ;
108109 tracker ?. trackPageView ( { title : 'my page' } ) ;
109110 expect ( tracker ?. getDomainSessionIndex ( ) ) . toEqual ( 2 ) ;
110111 } ) ;
112+
113+ it ( 'Adds the client session context entity when enabled' , ( done ) => {
114+ const tracker = createTracker ( {
115+ contexts : { session : true } ,
116+ encodeBase64 : false ,
117+ plugins : [
118+ {
119+ afterTrack : ( payload ) => {
120+ let context = payload . co as string ;
121+ expect ( context ) . toContain ( 'client_session' ) ;
122+ done ( ) ;
123+ } ,
124+ } ,
125+ ] ,
126+ } ) ;
127+
128+ tracker ?. trackPageView ( ) ;
129+ } ) ;
130+
131+ it ( 'Adds the client session context entity when anonymous session tracking' , ( done ) => {
132+ const tracker = createTracker ( {
133+ contexts : { session : true } ,
134+ encodeBase64 : false ,
135+ anonymousTracking : { withSessionTracking : true } ,
136+ plugins : [
137+ {
138+ afterTrack : ( payload ) => {
139+ let context = payload . co as string ;
140+ expect ( context ) . toContain ( 'client_session' ) ;
141+ expect ( context ) . toContain ( '"userId":"00000000-0000-0000-0000-000000000000"' ) ;
142+ expect ( context ) . toContain ( '"previousSessionId":null' ) ;
143+ done ( ) ;
144+ } ,
145+ } ,
146+ ] ,
147+ } ) ;
148+
149+ tracker ?. trackPageView ( ) ;
150+ } ) ;
151+
152+ it ( "Doesn't add the client session context entity when anonymous tracking without session tracking" , ( done ) => {
153+ const tracker = createTracker ( {
154+ contexts : { session : true } ,
155+ encodeBase64 : false ,
156+ anonymousTracking : true ,
157+ plugins : [
158+ {
159+ afterTrack : ( payload ) => {
160+ let context = payload . co as string ;
161+ expect ( context ) . not . toContain ( 'client_session' ) ;
162+ done ( ) ;
163+ } ,
164+ } ,
165+ ] ,
166+ } ) ;
167+
168+ tracker ?. trackPageView ( ) ;
169+ } ) ;
111170} ) ;
171+
172+ function createTracker ( configuration ?: TrackerConfiguration ) {
173+ let id = 'sp-' + Math . random ( ) ;
174+ return addTracker ( id , id , '' , '' , new SharedState ( ) , configuration ) ;
175+ }
0 commit comments