import analyticsMixin from "@/mixins/analytics-mixin"; import { setupMocksForJsFiles } from "@/helpers/unit-test-helper.js"; import { storeActions } from "@/constants/store-actions"; describe("analyticsMixin.js", () => { test("logPageView: calls dispatch with type and payload", () => { const type = ""; const payload = {}; const mockData = { actionList: [{ actionName: storeActions.LOG_PAGE_VIEW }], } const mocks = setupMocksForJsFiles(mockData); analyticsMixin.methods.logPageView(type, payload); expect(mocks.baseMixin.methods.dispatchStoreAction).toBeCalled(); }); test("logCustomEvent: calls dispatch with type and payload", () => { const type = ""; const payload = {}; const mockData = { actionList: [{ actionName: storeActions.LOG_CUSTOM_EVENT }], } const mocks = setupMocksForJsFiles(mockData); analyticsMixin.methods.logCustomEvent(type, payload); expect(mocks.baseMixin.methods.dispatchStoreAction).toBeCalled(); }); test("pushEventToGA, should call logEvent too", () => { // Arrange const mockData = { actionList: [{ actionName: storeActions.LOG_CUSTOM_EVENT }], } const mocks = setupMocksForJsFiles(mockData); // Act analyticsMixin.methods.pushEventToGA('category', 'action', 'label', true); // Assert expect(mocks.baseMixin.methods.dispatchStoreAction).toBeCalled(); }); test("Experiments, should push to dataLayer with default Google Custom Dimension Index", () => { // Arrange window.dataLayer = []; const mockExperimentData = [ { settings: {}, variationName: 'test', universeName: 'testUniverse' } ] // Act analyticsMixin.methods.pushExperimentsToDataLayer(mockExperimentData); // Assert expect(window.dataLayer).toEqual([{ experimentId_99: undefined, variationId_99: undefined, experimentName_99: 'testUniverse', variationName_99: 'test', customDimension_99: 'undefined_undefined_testUniverse_test' }]); }); test("Experiments, should push to dataLayer with custom Google Custom Dimension Index", () => { // Arrange window.dataLayer = []; const mockExperimentData = [ { settings: { "Google Custom Dimension Index": "5" }, variationName: 'test', universeName: 'testUniverse' } ] // Act analyticsMixin.methods.pushExperimentsToDataLayer(mockExperimentData); // Assert expect(window.dataLayer).toEqual([{ experimentId_5: undefined, variationId_5: undefined, experimentName_5: 'testUniverse', variationName_5: 'test', customDimension_5: 'undefined_undefined_testUniverse_test' }]); }); });