@@ -9,12 +9,11 @@ describe('ConstructorioID', function () {
99 var expectedKeys = [
1010 'set_cookie' ,
1111 'get_cookie' ,
12- 'update_cookie' ,
1312 'delete_cookie' ,
1413 'generate_client_id' ,
1514 'get_local_object' ,
1615 'set_local_object' ,
17- 'get_session_id '
16+ 'generate_session_id '
1817 ] ;
1918 expect ( actualKeys ) . to . eql ( expectedKeys ) ;
2019 } ) ;
@@ -23,7 +22,12 @@ describe('ConstructorioID', function () {
2322 var session = new ConstructorioID ( ) ;
2423 expect ( session . user_agent ) . to . be . null ;
2524 expect ( session . persist ) . to . be . true ;
26- expect ( session . cookie_name ) . to . equal ( 'ConstructorioID_client_id' ) ;
25+ expect ( session . client_id_cookie_name ) . to . equal ( 'ConstructorioID_client_id' ) ;
26+ expect ( session . session_id_cookie_name ) . to . equal ( 'ConstructorioID_session_id' ) ;
27+ expect ( session . local_name_client_id ) . to . equal ( '_constructorio_search_client' ) ;
28+ expect ( session . local_name_session_id ) . to . equal ( '_constructorio_search_session' ) ;
29+ expect ( session . client_id_storage_location ) . to . equal ( 'cookie' ) ;
30+ expect ( session . session_id_storage_location ) . to . equal ( 'local' ) ;
2731 expect ( session . cookie_domain ) . to . be . null ;
2832 } ) ;
2933
@@ -34,18 +38,28 @@ describe('ConstructorioID', function () {
3438 user_agent : 'dummyagent' ,
3539 timeout : 1 ,
3640 persist : false ,
37- cookie_name : 'dummyname' ,
41+ client_id_cookie_name : 'dummyclientname' ,
42+ session_id_cookie_name : 'dummysessionname' ,
43+ local_name_client_id : 'dummyclientnamelocal' ,
44+ local_name_session_id : 'dummysessionnamelocal' ,
3845 cookie_prefix_for_experiment : 'dummyprefix' ,
39- cookie_domain : 'dummydomain'
46+ cookie_domain : 'dummydomain' ,
47+ client_id_storage_location : 'foo' ,
48+ session_id_storage_location : 'bar'
4049 } ) ;
4150 expect ( session . base_url ) . to . equal ( 'dummyurl' ) ;
4251 expect ( session . ip_address ) . to . equal ( 'dummyip' ) ;
4352 expect ( session . user_agent ) . to . equal ( 'dummyagent' ) ;
4453 expect ( session . timeout ) . to . equal ( 1 ) ;
4554 expect ( session . persist ) . to . be . false ;
46- expect ( session . cookie_name ) . to . equal ( 'dummyname' ) ;
55+ expect ( session . client_id_cookie_name ) . to . equal ( 'dummyclientname' ) ;
56+ expect ( session . session_id_cookie_name ) . to . equal ( 'dummysessionname' ) ;
57+ expect ( session . local_name_client_id ) . to . equal ( 'dummyclientnamelocal' ) ;
58+ expect ( session . local_name_session_id ) . to . equal ( 'dummysessionnamelocal' ) ;
4759 expect ( session . cookie_prefix_for_experiment ) . to . equal ( 'dummyprefix' ) ;
4860 expect ( session . cookie_domain ) . to . equal ( 'dummydomain' ) ;
61+ expect ( session . client_id_storage_location ) . to . equal ( 'foo' ) ;
62+ expect ( session . session_id_storage_location ) . to . equal ( 'bar' ) ;
4963 } ) ;
5064
5165 describe ( 'when used in browser' , function ( ) {
@@ -65,27 +79,40 @@ describe('ConstructorioID', function () {
6579
6680 it ( 'should read the client id from a named cookie' , function ( ) {
6781 document . cookie = 'dummyname=dummyid; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/' ;
68- var session = new ConstructorioID ( { cookie_name : 'dummyname' } ) ;
82+ var session = new ConstructorioID ( { client_id_cookie_name : 'dummyname' } ) ;
6983 expect ( session . client_id ) . to . equal ( 'dummyid' ) ;
7084 expect ( document . cookie ) . to . equal ( 'dummyname=dummyid' ) ;
7185 } ) ;
7286
73- it ( 'should read the client id from the old cookie' , function ( ) {
74- document . cookie = 'ConstructorioAB_client_id=tummyid; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/' ;
75- var session = new ConstructorioID ( ) ;
76- expect ( session . client_id ) . to . equal ( 'tummyid' ) ;
77- expect ( document . cookie ) . to . equal ( 'ConstructorioID_client_id=tummyid' ) ;
78- } ) ;
79-
80- it ( 'should read the client id from the new cookie' , function ( ) {
87+ it ( 'should set the client id if missing from the default storage location' , function ( ) {
8188 document . cookie = 'ConstructorioID_client_id=bummyid; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/' ;
8289 var session = new ConstructorioID ( ) ;
8390 expect ( session . client_id ) . to . equal ( 'bummyid' ) ;
8491 expect ( document . cookie ) . to . equal ( 'ConstructorioID_client_id=bummyid' ) ;
8592 } ) ;
8693
8794 it ( 'should set the client id if missing' , function ( ) {
88- var session = new ConstructorioID ( { cookie_name : 'missingname' } ) ;
95+ var session = new ConstructorioID ( { client_id_cookie_name : 'missingname' } ) ;
96+ expect ( session . client_id ) . to . be . a . string ;
97+ expect ( session . client_id ) . to . match ( / ( \w | d | - ) { 36 } / ) ;
98+ } ) ;
99+
100+ it ( 'should read the client id from local storage if storage location is set to local' , function ( ) {
101+ window . localStorage . setItem ( 'dummyname' , 'dummyid' ) ;
102+ var session = new ConstructorioID ( { local_name_client_id : 'dummyname' , client_id_storage_location : 'local' } ) ;
103+ expect ( session . client_id ) . to . equal ( 'dummyid' ) ;
104+ expect ( window . localStorage . getItem ( 'dummyname' ) ) . to . equal ( 'dummyid' ) ;
105+ } ) ;
106+
107+ it ( 'should read the client id from the default local storage name and storage location is set to local' , function ( ) {
108+ window . localStorage . setItem ( '_constructorio_search_client' , 'bummyid' ) ;
109+ var session = new ConstructorioID ( { client_id_storage_location : 'local' } ) ;
110+ expect ( session . client_id ) . to . equal ( 'bummyid' ) ;
111+ expect ( window . localStorage . getItem ( '_constructorio_search_client' ) ) . to . equal ( 'bummyid' ) ;
112+ } ) ;
113+
114+ it ( 'should set the client id if missing and storage location is set to local' , function ( ) {
115+ var session = new ConstructorioID ( { client_id_cookie_name : 'missingname' , client_id_storage_location : 'local' } ) ;
89116 expect ( session . client_id ) . to . be . a . string ;
90117 expect ( session . client_id ) . to . match ( / ( \w | d | - ) { 36 } / ) ;
91118 } ) ;
@@ -106,6 +133,19 @@ describe('ConstructorioID', function () {
106133 expect ( session . session_id ) . to . equal ( 1 ) ;
107134 } ) ;
108135
136+ it ( 'should read the session id from cookie if storage location is set to cookie' , function ( ) {
137+ document . cookie = `ConstructorioID_session_id={"sessionId":42,"lastTime":${ Date . now ( ) } }; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/` ;
138+ var session = new ConstructorioID ( { session_id_storage_location : 'cookie' } ) ;
139+ expect ( session . session_id ) . to . be . a ( 'number' ) ;
140+ expect ( session . session_id ) . to . equal ( 42 ) ;
141+ } ) ;
142+
143+ it ( 'should set the session id to 1 if there is no cookie and storage location is set to cookie' , function ( ) {
144+ var session = new ConstructorioID ( { session_id_storage_location : 'cookie' } ) ;
145+ expect ( session . session_id ) . to . be . a ( 'number' ) ;
146+ expect ( session . session_id ) . to . equal ( 1 ) ;
147+ } ) ;
148+
109149 it ( 'should set session_is_new to false if the session is not new' , function ( ) {
110150 window . localStorage . setItem ( '_constructorio_search_session' , JSON . stringify ( {
111151 sessionId : 42 ,
@@ -128,12 +168,34 @@ describe('ConstructorioID', function () {
128168 expect ( session . session_is_new ) . to . equal ( true ) ;
129169 } ) ;
130170
171+ it ( 'should set session_is_new to false if the session is not new and storage location is set to cookie' , function ( ) {
172+ document . cookie = `ConstructorioID_session_id={"sessionId":42,"lastTime":${ Date . now ( ) } }; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/` ;
173+ var session = new ConstructorioID ( { session_id_storage_location : 'cookie' } ) ;
174+ expect ( session . session_id ) . to . equal ( 42 ) ;
175+ expect ( session . session_is_new ) . to . be . a ( 'boolean' ) ;
176+ expect ( session . session_is_new ) . to . equal ( false ) ;
177+ } ) ;
178+
179+ it ( 'should set session_is_new to true if the session is new and storage location is set to cookie' , function ( ) {
180+ document . cookie = `ConstructorioID_session_id={"sessionId":42,"lastTime":${ Date . now ( ) - 1000 * 60 * 60 * 24 * 60 } }; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/` ;
181+ var session = new ConstructorioID ( { session_id_storage_location : 'cookie' } ) ;
182+ expect ( session . session_id ) . to . equal ( 43 ) ;
183+ expect ( session . session_is_new ) . to . be . a ( 'boolean' ) ;
184+ expect ( session . session_is_new ) . to . equal ( true ) ;
185+ } ) ;
186+
131187 it ( 'should set session_is_new to true if there is no local storage data' , function ( ) {
132188 var session = new ConstructorioID ( ) ;
133189 expect ( session . session_is_new ) . to . be . a ( 'boolean' ) ;
134190 expect ( session . session_is_new ) . to . equal ( true ) ;
135191 } ) ;
136192
193+ it ( 'should set session_is_new to true if there is no cookie data and storage location is set to cookie' , function ( ) {
194+ var session = new ConstructorioID ( { session_id_storage_location : 'cookie' } ) ;
195+ expect ( session . session_is_new ) . to . be . a ( 'boolean' ) ;
196+ expect ( session . session_is_new ) . to . equal ( true ) ;
197+ } ) ;
198+
137199 it ( 'should set the user agent' , function ( ) {
138200 var session = new ConstructorioID ( ) ;
139201 expect ( session . user_agent ) . to . match ( / j s d o m / ) ;
0 commit comments