@@ -175,10 +175,11 @@ describe('Gtag wrapping functions', () => {
175175 'gtag'
176176 ) ;
177177 window [ 'dataLayer' ] = [ ] ;
178- ( window [ 'gtag' ] as Gtag ) ( GtagCommand . EVENT , 'purchase' , {
178+ const eventObject = {
179179 'transaction_id' : 'abcd123' ,
180180 'send_to' : 'some_group'
181- } ) ;
181+ } ;
182+ ( window [ 'gtag' ] as Gtag ) ( GtagCommand . EVENT , 'purchase' , eventObject ) ;
182183 expect ( ( window [ 'dataLayer' ] as DataLayer ) . length ) . to . equal ( 0 ) ;
183184
184185 initPromise1 . resolve ( fakeMeasurementId ) ; // Resolves first initialization promise.
@@ -187,8 +188,12 @@ describe('Gtag wrapping functions', () => {
187188 initPromise2 . resolve ( 'other-measurement-id' ) ; // Resolves second initialization promise.
188189 await Promise . all ( [ initPromise1 , initPromise2 ] ) ; // Wait for resolution of Promise.all()
189190 await promiseAllSettled ( fakeDynamicConfigPromises ) ;
190-
191- expect ( ( window [ 'dataLayer' ] as DataLayer ) . length ) . to . equal ( 1 ) ;
191+ const dataLayer = window [ 'dataLayer' ] as DataLayer ;
192+ expect ( dataLayer . length ) . to . equal ( 1 ) ;
193+ const data = dataLayer [ 0 ] ;
194+ expect ( data [ 0 ] ) . to . equal ( 'event' ) ;
195+ expect ( data [ 1 ] ) . to . equal ( 'purchase' ) ;
196+ expect ( data [ 2 ] ) . to . equal ( eventObject ) ;
192197 } ) ;
193198
194199 it (
@@ -208,10 +213,11 @@ describe('Gtag wrapping functions', () => {
208213 'gtag'
209214 ) ;
210215 window [ 'dataLayer' ] = [ ] ;
211- ( window [ 'gtag' ] as Gtag ) ( GtagCommand . EVENT , 'purchase' , {
216+ const eventObject = {
212217 'transaction_id' : 'abcd123' ,
213218 'send_to' : [ fakeMeasurementId , 'some_group' ]
214- } ) ;
219+ } ;
220+ ( window [ 'gtag' ] as Gtag ) ( GtagCommand . EVENT , 'purchase' , eventObject ) ;
215221 expect ( ( window [ 'dataLayer' ] as DataLayer ) . length ) . to . equal ( 0 ) ;
216222
217223 initPromise1 . resolve ( ) ; // Resolves first initialization promise.
@@ -221,7 +227,12 @@ describe('Gtag wrapping functions', () => {
221227 await Promise . all ( [ initPromise1 , initPromise2 ] ) ; // Wait for resolution of Promise.all()
222228 await promiseAllSettled ( fakeDynamicConfigPromises ) ;
223229
224- expect ( ( window [ 'dataLayer' ] as DataLayer ) . length ) . to . equal ( 1 ) ;
230+ const dataLayer = window [ 'dataLayer' ] as DataLayer ;
231+ expect ( dataLayer . length ) . to . equal ( 1 ) ;
232+ const data = dataLayer [ 0 ] ;
233+ expect ( data [ 0 ] ) . to . equal ( 'event' ) ;
234+ expect ( data [ 1 ] ) . to . equal ( 'purchase' ) ;
235+ expect ( data [ 2 ] ) . to . equal ( eventObject ) ;
225236 }
226237 ) ;
227238
@@ -242,9 +253,10 @@ describe('Gtag wrapping functions', () => {
242253 'gtag'
243254 ) ;
244255 window [ 'dataLayer' ] = [ ] ;
245- ( window [ 'gtag' ] as Gtag ) ( GtagCommand . EVENT , 'purchase' , {
256+ const eventObject = {
246257 'transaction_id' : 'abcd123'
247- } ) ;
258+ } ;
259+ ( window [ 'gtag' ] as Gtag ) ( GtagCommand . EVENT , 'purchase' , eventObject ) ;
248260 expect ( ( window [ 'dataLayer' ] as DataLayer ) . length ) . to . equal ( 0 ) ;
249261
250262 initPromise1 . resolve ( ) ; // Resolves first initialization promise.
@@ -253,7 +265,12 @@ describe('Gtag wrapping functions', () => {
253265 initPromise2 . resolve ( ) ; // Resolves second initialization promise.
254266 await Promise . all ( [ initPromise1 , initPromise2 ] ) ; // Wait for resolution of Promise.all()
255267
256- expect ( ( window [ 'dataLayer' ] as DataLayer ) . length ) . to . equal ( 1 ) ;
268+ const dataLayer = window [ 'dataLayer' ] as DataLayer ;
269+ expect ( dataLayer . length ) . to . equal ( 1 ) ;
270+ const data = dataLayer [ 0 ] ;
271+ expect ( data [ 0 ] ) . to . equal ( 'event' ) ;
272+ expect ( data [ 1 ] ) . to . equal ( 'purchase' ) ;
273+ expect ( data [ 2 ] ) . to . equal ( eventObject ) ;
257274 }
258275 ) ;
259276
@@ -274,17 +291,23 @@ describe('Gtag wrapping functions', () => {
274291 'gtag'
275292 ) ;
276293 window [ 'dataLayer' ] = [ ] ;
277- ( window [ 'gtag' ] as Gtag ) ( GtagCommand . EVENT , 'purchase' , {
294+ const eventObject = {
278295 'transaction_id' : 'abcd123' ,
279296 'send_to' : fakeMeasurementId
280- } ) ;
297+ } ;
298+ ( window [ 'gtag' ] as Gtag ) ( GtagCommand . EVENT , 'purchase' , eventObject ) ;
281299 expect ( ( window [ 'dataLayer' ] as DataLayer ) . length ) . to . equal ( 0 ) ;
282300
283301 initPromise1 . resolve ( ) ; // Resolves first initialization promise.
284302 await promiseAllSettled ( fakeDynamicConfigPromises ) ;
285303 await Promise . all ( [ initPromise1 ] ) ; // Wait for resolution of Promise.all()
286304
287- expect ( ( window [ 'dataLayer' ] as DataLayer ) . length ) . to . equal ( 1 ) ;
305+ const dataLayer = window [ 'dataLayer' ] as DataLayer ;
306+ expect ( dataLayer . length ) . to . equal ( 1 ) ;
307+ const data = dataLayer [ 0 ] ;
308+ expect ( data [ 0 ] ) . to . equal ( 'event' ) ;
309+ expect ( data [ 1 ] ) . to . equal ( 'purchase' ) ;
310+ expect ( data [ 2 ] ) . to . equal ( eventObject ) ;
288311 }
289312 ) ;
290313
@@ -307,8 +330,13 @@ describe('Gtag wrapping functions', () => {
307330 'gtag'
308331 ) ;
309332 window [ 'dataLayer' ] = [ ] ;
310- ( window [ 'gtag' ] as Gtag ) ( GtagCommand . SET , { 'language' : 'en' } ) ;
311- expect ( ( window [ 'dataLayer' ] as DataLayer ) . length ) . to . equal ( 1 ) ;
333+ const eventObject = { 'language' : 'en' } ;
334+ ( window [ 'gtag' ] as Gtag ) ( GtagCommand . SET , eventObject ) ;
335+ const dataLayer = window [ 'dataLayer' ] as DataLayer ;
336+ expect ( dataLayer . length ) . to . equal ( 1 ) ;
337+ const data = dataLayer [ 0 ] ;
338+ expect ( data [ 0 ] ) . to . equal ( 'set' ) ;
339+ expect ( data [ 1 ] ) . to . equal ( eventObject ) ;
312340 } ) ;
313341
314342 it ( 'new window.gtag function does not wait when sending "consent" calls' , async ( ) => {
@@ -329,7 +357,12 @@ describe('Gtag wrapping functions', () => {
329357 'update' ,
330358 consentParameters
331359 ) ;
332- expect ( ( window [ 'dataLayer' ] as DataLayer ) . length ) . to . equal ( 1 ) ;
360+ const dataLayer = window [ 'dataLayer' ] as DataLayer ;
361+ expect ( dataLayer . length ) . to . equal ( 1 ) ;
362+ const data = dataLayer [ 0 ] ;
363+ expect ( data [ 0 ] ) . to . equal ( 'consent' ) ;
364+ expect ( data [ 1 ] ) . to . equal ( 'update' ) ;
365+ expect ( data [ 2 ] ) . to . equal ( consentParameters ) ;
333366 } ) ;
334367
335368 it ( 'new window.gtag function does not wait when sending "get" calls' , async ( ) => {
@@ -347,7 +380,13 @@ describe('Gtag wrapping functions', () => {
347380 'client_id' ,
348381 clientId => console . log ( clientId )
349382 ) ;
350- expect ( ( window [ 'dataLayer' ] as DataLayer ) . length ) . to . equal ( 1 ) ;
383+ const dataLayer = window [ 'dataLayer' ] as DataLayer ;
384+ expect ( dataLayer . length ) . to . equal ( 1 ) ;
385+ const data = dataLayer [ 0 ] ;
386+ expect ( data [ 0 ] ) . to . equal ( 'get' ) ;
387+ expect ( data [ 1 ] ) . to . equal ( fakeMeasurementId ) ;
388+ expect ( data [ 2 ] ) . to . equal ( 'client_id' ) ;
389+ expect ( data [ 3 ] ) . to . not . be . undefined ;
351390 } ) ;
352391
353392 it ( 'new window.gtag function does not wait when sending an unknown command' , async ( ) => {
@@ -360,7 +399,11 @@ describe('Gtag wrapping functions', () => {
360399 ) ;
361400 window [ 'dataLayer' ] = [ ] ;
362401 ( window [ 'gtag' ] as Gtag ) ( 'new-command-from-gtag-team' , fakeMeasurementId ) ;
363- expect ( ( window [ 'dataLayer' ] as DataLayer ) . length ) . to . equal ( 1 ) ;
402+ const dataLayer = window [ 'dataLayer' ] as DataLayer ;
403+ expect ( dataLayer . length ) . to . equal ( 1 ) ;
404+ const data = dataLayer [ 0 ] ;
405+ expect ( data [ 0 ] ) . to . equal ( 'new-command-from-gtag-team' ) ;
406+ expect ( data [ 1 ] ) . to . equal ( fakeMeasurementId ) ;
364407 } ) ;
365408
366409 it ( 'new window.gtag function waits for initialization promise when sending "config" calls' , async ( ) => {
@@ -373,29 +416,48 @@ describe('Gtag wrapping functions', () => {
373416 'gtag'
374417 ) ;
375418 window [ 'dataLayer' ] = [ ] ;
376- ( window [ 'gtag' ] as Gtag ) ( GtagCommand . CONFIG , fakeMeasurementId , {
419+ const eventObject = {
377420 'language' : 'en'
378- } ) ;
421+ } ;
422+ ( window [ 'gtag' ] as Gtag ) (
423+ GtagCommand . CONFIG ,
424+ fakeMeasurementId ,
425+ eventObject
426+ ) ;
379427 expect ( ( window [ 'dataLayer' ] as DataLayer ) . length ) . to . equal ( 0 ) ;
380428
381429 initPromise1 . resolve ( fakeMeasurementId ) ;
382430 await promiseAllSettled ( fakeDynamicConfigPromises ) ; // Resolves dynamic config fetches.
383431 expect ( ( window [ 'dataLayer' ] as DataLayer ) . length ) . to . equal ( 0 ) ;
384432
385433 await Promise . all ( [ initPromise1 ] ) ; // Wait for resolution of Promise.all()
386-
387- expect ( ( window [ 'dataLayer' ] as DataLayer ) . length ) . to . equal ( 1 ) ;
434+ const dataLayer = window [ 'dataLayer' ] as DataLayer ;
435+ expect ( dataLayer . length ) . to . equal ( 1 ) ;
436+ const data = dataLayer [ 0 ] ;
437+ expect ( data [ 0 ] ) . to . equal ( 'config' ) ;
438+ expect ( data [ 1 ] ) . to . equal ( fakeMeasurementId ) ;
439+ expect ( data [ 2 ] ) . to . equal ( eventObject ) ;
388440 } ) ;
389441
390442 it ( 'new window.gtag function does not wait when sending "config" calls if there are no pending initialization promises' , async ( ) => {
391443 wrapOrCreateGtag ( { } , fakeDynamicConfigPromises , { } , 'dataLayer' , 'gtag' ) ;
392444 window [ 'dataLayer' ] = [ ] ;
393- ( window [ 'gtag' ] as Gtag ) ( GtagCommand . CONFIG , fakeMeasurementId , {
445+ const eventObject = {
394446 'transaction_id' : 'abcd123'
395- } ) ;
447+ } ;
448+ ( window [ 'gtag' ] as Gtag ) (
449+ GtagCommand . CONFIG ,
450+ fakeMeasurementId ,
451+ eventObject
452+ ) ;
396453 await promiseAllSettled ( fakeDynamicConfigPromises ) ;
397454 await Promise . resolve ( ) ; // Config call is always chained onto initialization promise list, even if empty.
398- expect ( ( window [ 'dataLayer' ] as DataLayer ) . length ) . to . equal ( 1 ) ;
455+ const dataLayer = window [ 'dataLayer' ] as DataLayer ;
456+ expect ( dataLayer . length ) . to . equal ( 1 ) ;
457+ const data = dataLayer [ 0 ] ;
458+ expect ( data [ 0 ] ) . to . equal ( 'config' ) ;
459+ expect ( data [ 1 ] ) . to . equal ( fakeMeasurementId ) ;
460+ expect ( data [ 2 ] ) . to . equal ( eventObject ) ;
399461 } ) ;
400462 } ) ;
401463
0 commit comments