@@ -39,4 +39,47 @@ describe("metadata", function () {
3939 done ( ) ;
4040 } , 10 ) ;
4141 } ) ;
42+
43+ it ( "reloads global metadata on each call" , function ( done ) {
44+ const dom = createDOM ( { settings : { autoCollect : false } } ) ;
45+ const { runInContext } = require ( "vm" ) ;
46+
47+ runInContext (
48+ "window.sa_metadata = { first: true };" ,
49+ dom . getInternalVMContext ( )
50+ ) ;
51+
52+ dom . window . sa_pageview ( "/first" ) ;
53+
54+ setTimeout ( ( ) => {
55+ let req = dom . sent . find (
56+ ( r ) => r . type === "image" && / p a t h = % 2 F f i r s t / . test ( r . url )
57+ ) ;
58+ expect ( req , "first pageview request" ) . to . exist ;
59+ let url = new URL ( req . url ) ;
60+ let meta = JSON . parse (
61+ decodeURIComponent ( url . searchParams . get ( "metadata" ) )
62+ ) ;
63+ expect ( meta ) . to . include ( { first : true } ) ;
64+
65+ runInContext (
66+ "window.sa_metadata = { second: true };" ,
67+ dom . getInternalVMContext ( )
68+ ) ;
69+
70+ dom . window . sa_pageview ( "/second" ) ;
71+
72+ setTimeout ( ( ) => {
73+ req = dom . sent . find (
74+ ( r ) => r . type === "image" && / p a t h = % 2 F s e c o n d / . test ( r . url )
75+ ) ;
76+ expect ( req , "second pageview request" ) . to . exist ;
77+ url = new URL ( req . url ) ;
78+ meta = JSON . parse ( decodeURIComponent ( url . searchParams . get ( "metadata" ) ) ) ;
79+ expect ( meta ) . to . include ( { second : true } ) ;
80+ expect ( meta ) . to . not . have . property ( "first" ) ;
81+ done ( ) ;
82+ } , 10 ) ;
83+ } , 10 ) ;
84+ } ) ;
4285} ) ;
0 commit comments