22 * @vitest -environment jsdom
33 */
44
5- import { describe , expect , beforeEach , afterEach , it , vi } from "vitest" ;
5+ import { describe , expect , beforeEach , afterEach , it , vi , Mock } from "vitest" ;
66
77import * as datalayer from "./datalayer" ;
88import * as mixpanel from "./mixpanel" ;
@@ -13,6 +13,7 @@ import * as insights from "./index";
1313// Mock the dependencies
1414vi . mock ( "./datalayer" , ( ) => ( {
1515 track : vi . fn ( ) ,
16+ trackPageView : vi . fn ( ) ,
1617} ) ) ;
1718
1819vi . mock ( "./mixpanel" , ( ) => ( {
@@ -90,6 +91,7 @@ describe("Insights Command Queue", () => {
9091 expect ( posthog . identify ) . not . toHaveBeenCalled ( ) ;
9192 expect ( mixpanel . trackPageView ) . not . toHaveBeenCalled ( ) ;
9293 expect ( posthog . trackPageView ) . not . toHaveBeenCalled ( ) ;
94+ expect ( datalayer . trackPageView ) . not . toHaveBeenCalled ( ) ;
9395
9496 // Now initialize
9597 insights . initInsights ( testConfig ) ;
@@ -122,11 +124,12 @@ describe("Insights Command Queue", () => {
122124
123125 expect ( mixpanel . trackPageView ) . toHaveBeenCalled ( ) ;
124126 expect ( posthog . trackPageView ) . toHaveBeenCalled ( ) ;
127+ expect ( datalayer . trackPageView ) . not . toHaveBeenCalled ( ) ;
125128 } ) ;
126129
127130 it ( "should handle errors in queued methods gracefully" , async ( ) => {
128131 // Setup an error for one of the methods
129- mixpanel . track . mockImplementationOnce ( ( ) => {
132+ ( mixpanel . track as Mock ) . mockImplementationOnce ( ( ) => {
130133 throw new Error ( "Mixpanel error" ) ;
131134 } ) ;
132135
@@ -152,6 +155,14 @@ describe("Insights Command Queue", () => {
152155 } ) ;
153156 expect ( mixpanel . trackPageView ) . toHaveBeenCalled ( ) ;
154157 expect ( posthog . trackPageView ) . toHaveBeenCalled ( ) ;
158+ expect ( datalayer . trackPageView ) . not . toHaveBeenCalled ( ) ;
159+ } ) ;
160+
161+ it ( "should report page view to GTM as well when includeDataLayer is true" , ( ) => {
162+ insights . trackPageView ( { includeDataLayer : true } ) ;
163+ expect ( mixpanel . trackPageView ) . toHaveBeenCalled ( ) ;
164+ expect ( posthog . trackPageView ) . toHaveBeenCalled ( ) ;
165+ expect ( datalayer . trackPageView ) . toHaveBeenCalled ( ) ;
155166 } ) ;
156167 } ) ;
157168
@@ -188,6 +199,7 @@ describe("Insights Command Queue", () => {
188199 insights . trackPageView ( ) ;
189200 expect ( mixpanel . trackPageView ) . toHaveBeenCalled ( ) ;
190201 expect ( posthog . trackPageView ) . toHaveBeenCalled ( ) ;
202+ expect ( datalayer . trackPageView ) . not . toHaveBeenCalled ( ) ;
191203
192204 insights . startSessionRecording ( ) ;
193205 expect ( mixpanel . startSessionRecording ) . toHaveBeenCalled ( ) ;
@@ -205,6 +217,13 @@ describe("Insights Command Queue", () => {
205217 expect ( mixpanel . disableDebugMode ) . toHaveBeenCalled ( ) ;
206218 expect ( posthog . disableDebugMode ) . toHaveBeenCalled ( ) ;
207219 } ) ;
220+
221+ it ( "should report page view to GTM as well when includeDataLayer is true" , ( ) => {
222+ insights . trackPageView ( { includeDataLayer : true } ) ;
223+ expect ( mixpanel . trackPageView ) . toHaveBeenCalled ( ) ;
224+ expect ( posthog . trackPageView ) . toHaveBeenCalled ( ) ;
225+ expect ( datalayer . trackPageView ) . toHaveBeenCalled ( ) ;
226+ } ) ;
208227 } ) ;
209228
210229 describe ( "Observer Setup" , ( ) => {
@@ -281,7 +300,7 @@ describe("Insights Command Queue", () => {
281300 describe ( "Error Handling" , ( ) => {
282301 it ( "should handle initialization errors gracefully" , ( ) => {
283302 // Setup an error in initialization
284- mixpanel . initMixpanel . mockImplementationOnce ( ( ) => {
303+ ( mixpanel . initMixpanel as Mock ) . mockImplementationOnce ( ( ) => {
285304 throw new Error ( "Mixpanel init error" ) ;
286305 } ) ;
287306
@@ -303,11 +322,11 @@ describe("Insights Command Queue", () => {
303322 vi . clearAllMocks ( ) ;
304323
305324 // Setup errors in tracking
306- mixpanel . track . mockImplementationOnce ( ( ) => {
325+ ( mixpanel . track as Mock ) . mockImplementationOnce ( ( ) => {
307326 throw new Error ( "Mixpanel track error" ) ;
308327 } ) ;
309328
310- posthog . track . mockImplementationOnce ( ( ) => {
329+ ( posthog . track as Mock ) . mockImplementationOnce ( ( ) => {
311330 throw new Error ( "Posthog track error" ) ;
312331 } ) ;
313332
0 commit comments